何気なく使っているFrameworks 第8回Camera機能ON/OFF

確認OSバージョン

android-4.0.3_r1 ICS

Camera機能OFF

端末のCamera機能をOFFにする設定です。
セキュリティなど徹底している社内で「Camera機能をOFF」にしてしまうなどいろいろ実用性はあるはず。
Frameworksの中身はすごい単純でSystemPropertyにセットしているだけ。
ただし、設定アプリを作成するにはDevice管理アプリの知識が必要。

Camera機能ON/OFFの流れ

  1. DevicePolicyManager#setCameraDisabledをコール
  2. IDevicePolicyManager = DevicePolicyManagerService#setCameraDisabledをコール
    1. getActiveAdminForCallerLocked()
      1. setCameraDisabledの第一引数 = DeviceAdminReceiverとUidチェック
      2. ActiveAdminの取得
    2. saveSettingsLocked()をコールして設定値をxmlファイルとして保存
    3. syncDeviceCapabilitiesLocked()
      1. SystemPropertiesからSYSTEM_PROP_DISABLE_CAMERAの情報取得
      2. 設定値が異なっていたら、SystemPropertiesへ設定

設定値xmlファイルの保存位置は以下のソースから確認できます。

    private static JournaledFile makeJournaledFile() {
        final String base = "/data/system/device_policies.xml";
        return new JournaledFile(new File(base), new File(base + ".tmp"));
    }

確認しておいた方がいいソース

\frameworks\base\core\java\android\app\admin
- DevicePolicyManager.java

\frameworks\base\services\java\com\android\server
- \DevicePolicyManagerService.java

設定アプリを作るには

Device Administrationの知識が必要となります。
以下のDeveloperページ参照
http://developer.android.com/intl/ja/guide/topics/admin/device-admin.html

簡易クラス図