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.