在運行 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 測試都在系統相機設備上運行。