Câmeras do sistema

Em dispositivos com o Android 11 ou versões mais recentes, o framework do Android oferece suporte a câmeras do sistema, que são dispositivos de câmera visíveis apenas para processos com a permissão android.permission.SYSTEM_CAMERA e permissões normais de câmera. A permissão android.permission.SYSTEM_CAMERA, introduzida no Android 11, tem um nível de proteção de system|signature. Isso significa que apenas os apps instalados na partição do sistema com ou assinados com o mesmo certificado do sistema podem receber essa permissão. Apps públicos de terceiros não podem acessar câmeras do sistema.

As câmeras do sistema são úteis para fabricantes de dispositivos que querem implementar recursos que exijam acesso a uma câmera, mas que também sejam restritos a apps privilegiados ou do sistema.

Como os apps do sistema que recebem a permissão android.permission.SYSTEM_CAMERA também precisam ter a permissão android.permission.CAMERA, os usuários podem revogar as permissões normais de CAMERA para impedir que esse app acesse as câmeras no dispositivo.

Implementação

Para tornar um dispositivo de câmera específico uma câmera do sistema, a HAL da câmera precisa anunciar ANDROID_REQUEST_AVAILABLE_CAPABILITIES_SYSTEM_CAMERA na lista de recursos.

Para criar um app que tenha acesso a uma câmera do sistema, ele precisa estar na lista de permissões no arquivo privapp-permissions.xml específico do dispositivo, que especifica os apps que a permissão android.permission.SYSTEM_CAMERA precisa ser concedida.

Validação

Para verificar se nenhuma câmera do sistema no dispositivo pode ser descoberta por um app público, execute o teste android.permission.cts.Camera2PermissionTest.testSystemCameraDiscovery CTS.

Todos os testes CTS da câmera são executados em dispositivos de câmera do sistema.