Starting March 27, 2025, we recommend using android-latest-release
instead of aosp-main
to build and contribute to AOSP. For more information, see Changes to AOSP.
System cameras
Stay organized with collections
Save and categorize content based on your preferences.
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.
Implementation
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 allowlisted
in the device-specific privapp-permissions.xml
file, which specifies the apps
that the
android.permission.SYSTEM_CAMERA
permission must be granted to.
Validation
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.
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2025-06-18 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-06-18 UTC."],[],[],null,["# System cameras\n\nOn devices running Android 11 or higher, the Android\nframework supports system\ncameras, which are camera devices that are visible only to processes with the\n`android.permission.SYSTEM_CAMERA` permission and regular camera permissions.\nThe `android.permission.SYSTEM_CAMERA` permission, introduced in\nAndroid 11, has\na protection level of `system|signature`. This means that only apps installed on\nthe system partition with or signed with the same certificate as the system can\nbe granted this permission. Third-party public apps can't access system cameras.\n\nSystem cameras are useful for device manufacturers that want to implement\nfeatures that require access to a camera but are also restricted to privileged\nor system apps.\n\nBecause systems apps that are granted the\n`android.permission.SYSTEM_CAMERA` permission must also have the\n[`android.permission.CAMERA`](https://developer.android.com/reference/android/Manifest.permission#CAMERA)\npermission, users can choose to revoke normal `CAMERA` permissions to prevent\nsuch an app from accessing the cameras on the device.\n\nImplementation\n--------------\n\nTo make a particular camera device a system camera, the camera HAL must\nadvertise\n[`ANDROID_REQUEST_AVAILABLE_CAPABILITIES_SYSTEM_CAMERA`](https://android.googlesource.com/platform/hardware/interfaces/+/refs/heads/android16-release/camera/metadata/3.5/types.hal#120)\nin its capabilities list.\n\nTo create an app that has access to a system camera, the app must be allowlisted\nin the device-specific `privapp-permissions.xml` file, which specifies the apps\nthat the\n[`android.permission.SYSTEM_CAMERA`](https://android.googlesource.com/platform/frameworks/base/+/refs/heads/android16-release/core/res/AndroidManifest.xml#1312)\npermission must be granted to.\n\nValidation\n----------\n\nTo verify that no system cameras on the device can be discovered by a public\napp, run the\n`android.permission.cts.Camera2PermissionTest.testSystemCameraDiscovery` CTS\ntest.\n\nAll\n[camera CTS tests](/docs/compatibility/cts/camera-hal#cts_tests)\nrun on system camera devices."]]