Cámaras del sistema

En los dispositivos que ejecutan Android 11 o versiones posteriores, el framework de Android admite cámaras del sistema, que son dispositivos de cámara visibles solo para los procesos con el permiso android.permission.SYSTEM_CAMERA y los permisos de cámara normales. El permiso android.permission.SYSTEM_CAMERA, que se introdujo en Android 11, tiene un nivel de protección de system|signature. Esto significa que solo las apps instaladas en la partición del sistema o firmadas con el mismo certificado que el sistema pueden obtener este permiso. Las apps públicas de terceros no pueden acceder a las cámaras del sistema.

Las cámaras del sistema son útiles para los fabricantes de dispositivos que desean implementar funciones que requieren acceso a una cámara, pero que también están restringidas a apps con privilegios o del sistema.

Dado que las apps del sistema a las que se otorga el permiso android.permission.SYSTEM_CAMERA también deben tener el permiso android.permission.CAMERA, los usuarios pueden optar por revocar los permisos normales de CAMERA para evitar que una app de este tipo acceda a las cámaras del dispositivo.

Implementación

Para que un dispositivo de cámara en particular sea una cámara del sistema, la HAL de la cámara debe anunciar ANDROID_REQUEST_AVAILABLE_CAPABILITIES_SYSTEM_CAMERA en su lista de capacidades.

Para crear una app que tenga acceso a una cámara del sistema, se debe incluir en la lista de entidades permitidas en el archivo privapp-permissions.xml específico del dispositivo, que especifica las apps a las que se debe otorgar el permiso android.permission.SYSTEM_CAMERA.

Validación

Para verificar que una app pública no pueda detectar ninguna cámara del sistema en el dispositivo, ejecuta la prueba android.permission.cts.Camera2PermissionTest.testSystemCameraDiscovery del CTS.

Todas las pruebas de CTS de la cámara se ejecutan en dispositivos de cámara del sistema.