Android 11 以降を搭載したデバイスでは、Android フレームワークはシステムカメラをサポートしています。システムカメラは、android.permission.SYSTEM_CAMERA
権限と通常のカメラ権限を持つプロセスにのみ表示されるカメラデバイスです。Android 11 で導入された android.permission.SYSTEM_CAMERA
権限の保護レベルは system|signature
です。つまり、システム パーティションにインストールされているアプリ、またはシステムと同じ証明書で署名されたアプリのみにこの権限を付与できます。サードパーティの一般公開アプリはシステムカメラにアクセスできません。
システムカメラは、カメラへのアクセスは必要なものの、特権アプリまたはシステムアプリだけに制限される機能を実装するデバイス メーカーにとって有用です。
android.permission.SYSTEM_CAMERA
権限が付与されるシステムアプリには android.permission.CAMERA
権限も必要なため、ユーザーは通常の CAMERA
権限を取り消して、そのようなアプリがデバイスのカメラにアクセスできないようにすることもできます。
実装
特定のカメラデバイスをシステムカメラにするために、カメラ HAL は機能リスト内で ANDROID_REQUEST_AVAILABLE_CAPABILITIES_SYSTEM_CAMERA
をアドバタイズする必要があります。
システムカメラにアクセスできるアプリを作成するには、そのアプリをデバイス固有の privapp-permissions.xml
ファイルのホワイトリストに登録する必要があります。このファイルには、android.permission.SYSTEM_CAMERA
権限を付与する必要のあるアプリが指定されています。
検証
一般公開アプリでデバイスのシステムカメラを検出できないことを検証するには、android.permission.cts.Camera2PermissionTest.testSystemCameraDiscovery
CTS テストを実行します。
すべてのカメラ CTS テストは、システム カメラデバイスで実行されます。