在运行 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 测试。
所有 camera CTS tests 均在系统相机设备上运行。