Em dispositivos com Android 11 ou versões mais recentes, o framework
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 de câmera regulares.
A permissão android.permission.SYSTEM_CAMERA
, introduzida no
Android 11, tem
um nível de proteção de system|signature
. Isso significa que somente 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 exigem acesso a uma câmera, mas também são restritos a apps privilegiados ou de 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 um app desse tipo acesse as câmeras do 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
do arquivo privapp-permissions.xml
específico do dispositivo, que especifica os apps
a 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
do CTS.
Todos os testes CTS de câmera são executados em dispositivos de câmera do sistema.