As permissões de execução no Android 6 e versões mais recentes dão aos usuários o controle sobre quando eles permitem que o áudio do microfone ou o vídeo da câmera de um dispositivo sejam gravados. Antes que um app possa gravar alguma coisa, o usuário precisa conceder ou negar a permissão em uma caixa de diálogo apresentada pelo sistema.
O Android 12 oferece transparência aos usuários ao mostrar indicadores quando um app usa uma fonte de dados particular com as permissões de operação de app de microfone e câmera. O app-ops registra acessos a APIs protegidas por permissões de tempo de execução.
As permissões app-op monitoram o status da atividade e o número de chamadas de API individuais e interagem com os indicadores do microfone e da câmera no Android 12 para mostrar aos usuários quando os apps acessaram dados de áudio e da câmera nos dispositivos. Quando os usuários clicam nos indicadores de microfone ou câmera, eles veem quais apps acessaram os dados. Esse recurso é obrigatório para todos os OEMs.
Requisitos de visibilidade do indicador
Estes são os requisitos para indicadores de microfone e câmera em dispositivos com Android 12 ou versões mais recentes:
- Os indicadores precisam aparecer na barra de status e manter a maior prioridade visual (por exemplo, localizados na posição mais à direita no canto superior direito).
- Os indicadores precisam estar sempre na mesma posição e não podem ser bloqueados por um app quando ele é iniciado.
- Os dois indicadores precisam ser verdes (ou uma variação de verde).
- Ao clicar em um ou nos dois indicadores, é necessário renderizar uma notificação de affordance de atribuição do app que faça o seguinte:
- Mostra o nome do app que está usando o microfone e/ou a câmera
- Mostra o nome do app que usou o microfone e/ou a câmera nos últimos 15 segundos.
- Leva os usuários à página de permissões do app em Configurações.
Uso e recursos
No Android 12, a interface diferencia entre usos em execução e usos recentes. Os usos são considerados ativos se forem marcados pelo sistema como em execução ou tiverem menos de cinco segundos.
- Os ícones da barra de status aparecem sempre que um app tem acesso contínuo ao microfone ou à câmera, que são sensíveis ao usuário.
- Os usuários podem clicar nesses ícones e ver quais apps estão acessando o microfone, a câmera ou ambos.
Figura 1. Indicadores de microfone e câmera em uso mostrando acesso ativo (canto superior direito)
O acesso é considerado ativo enquanto os indicadores aparecem. Um ícone aparece primeiro e depois faz a transição para um ponto que persiste até que o app seja dispensado ou fechado.
Quando um usuário abre as Configurações rápidas e toca nos indicadores, uma caixa de diálogo aparece mostrando se o app está usando a câmera, o microfone ou ambos.
Figura 2. Indicadores de acesso ativo e recente
A imagem na Figura 2 mostra indicadores de acesso ativo quando os dados foram acessados nos últimos cinco segundos por um app em execução.
Os indicadores de acesso recente mostram que os dados foram acessados por um app nos últimos 15 segundos, mas que o app não está ativo. Todos os apps ativos aparecem na caixa de diálogo, mas apenas um é mostrado como a fonte de acesso recente, mesmo quando mais de um app acessou dados em um período de 15 segundos. A visualização de acesso permanece congelada até que o usuário dispense a caixa de diálogo de notificação.
Entregar e ativar
A classe PermissionManager
oferece um método para preencher a caixa de diálogo, que
fica na interface do sistema.
- A interface do sistema reage a uma troca de configuração do dispositivo:
privacy/mic_camera_indicators_enabled
. - A mudança é necessária porque há dois veículos de entrega separados, nesta ordem:
- Entregar.
- Ative.
- A interface do sistema não pode falhar se o método em
PermissionManager
não conseguir fornecer os dados necessários.
Fluxo de processo
A funcionalidade do indicador de permissão tem três partes principais:
- Os apps
- Os indicadores (processados pela SystemUI)
- Uma maneira de determinar quais apps estão usando os dados
O PermissionController
fornece o mecanismo para determinar quais apps estão
usando dados. A SystemUI detecta apps que usam dados particulares. A SystemUI mostra um ícone na barra de navegação superior que corresponde às permissões usadas. O
PermissionController
mostra dados sobre usos quando um usuário clica em um ícone.
Figura 3. Componentes do sistema e fluxo de transições (de interface)
As transições numeradas na Figura 3 são descritas abaixo:
1: um app solicita dados particulares do sistema.
2: o sistema verifica as permissões. Se as permissões forem permitidas, o sistema notificará o provedor de dados e registrará o uso em app-ops.
3: o provedor de dados fornece dados ao app.
4-5 O usuário clica nos ícones. A interface do sistema solicita dados do
PermissionManager
e apresenta a caixa de diálogo ao usuário.
Detalhes do processo
- Os apps usam o microfone e a câmera, chamando
AppOpsManager.startOp
,stopOp
e/ounoteOp
. Isso cria registros de operações de app no servidor do sistema. - A interface do sistema detecta novas operações de app usando os listeners
AppOpsManager.OnOpActiveChangedInternalListener
eOnOpNotedListener
. Quando um novo uso chega (por uma chamada parastartOp
ounoteOp
), a interface do sistema verifica se o uso é feito por um app do sistema. - Se a interface do sistema verificar o uso de apps do sistema e se o uso for do microfone, a interface do sistema vai verificar se ele está desativado.
- Se a interface do sistema verificar o uso de apps que não são do sistema (e, para o uso do microfone, que ele está sem som; para o uso da câmera, que ela está ativada), um ícone vai aparecer refletindo esse uso.
Se a interface do sistema receber um noteOp
sem duração, o ícone vai aparecer por pelo menos 5 segundos. Caso contrário, o ícone vai aparecer até receber um
stopOp
ou por 5 segundos, o que for mais longo. O usuário clica em um ícone
e inicia uma intent que vai para o PermissionController
para iniciar a caixa de diálogo.
O PermissionController
carrega todo o uso recente do microfone e da câmera. Ele
verifica se algum deles está ou estava em execução dentro do período
definido pela interface do sistema. Se uma correspondência for encontrada, o nome do app que usou a permissão e quais permissões foram usadas vão aparecer.
Devido a essa mudança no Android 12 e versões mais recentes, alguns apps precisam mudar o comportamento ou implementar um comportamento especial.
A telefonia precisa implementar o uso de permissões (para considerar a pilha de microfone separada usada em chamadas telefônicas) ao trabalhar com o app Android Google Pesquisa (AGSA) e o Google Mobile Services (GMS).