Em dispositivos que executam o Android 11 ou superior, a estrutura 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 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 apenas os aplicativos instalados na partição do sistema ou assinados com o mesmo certificado do sistema podem receber essa permissão. Aplicativos 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 desejam implementar recursos que exigem acesso a uma câmera, mas também são restritos a aplicativos privilegiados ou do sistema.
Como os aplicativos de sistema que recebem a permissão android.permission.SYSTEM_CAMERA
também devem ter a permissão android.permission.CAMERA
, os usuários podem optar por revogar as permissões normais de CAMERA
para impedir que esse aplicativo acesse as câmeras no dispositivo.
Implementação
Para tornar um determinado dispositivo de câmera uma câmera do sistema, a câmera HAL deve anunciar ANDROID_REQUEST_AVAILABLE_CAPABILITIES_SYSTEM_CAMERA
em sua lista de recursos.
Para criar um aplicativo que tenha acesso a uma câmera do sistema, o aplicativo deve ser incluído na lista de permissões no arquivo privapp-permissions.xml
específico do dispositivo, que especifica os aplicativos aos quais a permissão android.permission.SYSTEM_CAMERA
deve ser concedida.
Validação
Para verificar se nenhuma câmera do sistema no dispositivo pode ser descoberta por um aplicativo público, execute o teste CTS android.permission.cts.Camera2PermissionTest.testSystemCameraDiscovery
.
Todos os testes de câmera CTS são executados em dispositivos de câmera do sistema.