在運行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
文件privapp-permissions.xml
其列入白名單,該文件指定必須授予android.permission.SYSTEM_CAMERA
權限的應用。
驗證方式
要驗證公共應用程序無法在設備上發現系統相機,請運行android.permission.cts.Camera2PermissionTest.testSystemCameraDiscovery
CTS測試。
所有攝像機CTS測試都在系統攝像機設備上運行。