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.
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
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
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
permission must be granted to.
To verify that no system cameras on the device can be discovered by a public
app, run the
All camera CTS tests run on system camera devices.