System Cameras

On devices running Android 11 or higher, the Android framework supports system cameras, which are camera devices that are visible only to processes with the android.permission.SYSTEM_CAMERA permission and regular camera permissions. The android.permission.SYSTEM_CAMERA permission, introduced in Android 11, has a protection level of system|signature. This means that only apps installed on the system partition with or signed with the same certificate as the system can be granted this permission. Third-party public apps can't access system cameras.

System cameras are useful for device manufacturers that want to implement features that require access to a camera but are also restricted to privileged or system apps.

Because systems apps that are granted the android.permission.SYSTEM_CAMERA permission must also have the android.permission.CAMERA permission, users can choose to revoke normal CAMERA permissions to prevent such an app from accessing the cameras on the device.


To make a particular camera device a system camera, the camera HAL must advertise ANDROID_REQUEST_AVAILABLE_CAPABILITIES_SYSTEM_CAMERA in its capabilities list.

To create an app that has access to a system camera, the app must be whitelisted in the device-specific privapp-permissions.xml file, which specifies the apps that the android.permission.SYSTEM_CAMERA permission must be granted to.


To verify that no system cameras on the device can be discovered by a public app, run the android.permission.cts.Camera2PermissionTest.testSystemCameraDiscovery CTS test.

All camera CTS tests run on system camera devices.