As permissões de execução no Android 6 e versões mais recentes dão aos usuários controle sobre quando permitir que o áudio do microfone ou o vídeo da câmera de um dispositivo sejam gravados. Antes que um app possa gravar, um usuário precisa conceder ou negar permissão por meio de uma caixa de diálogo apresentada pelo sistema.
O Android 12 oferece transparência aos usuários mostrando indicadores quando um app usa uma fonte de dados particular com as permissões app-op de câmera e microfone. As operações do app registram acessos a APIs protegidas por permissão 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 câmera ou microfone, 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 o Android 12 ou mais recente:
- 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 localizados de forma consistente 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).
- Clicar em um ou ambos os indicadores precisa renderizar uma notificação de
affordance de atribuição de 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 distingue 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 5 segundos.
- Os ícones da barra de status aparecem sempre que um app tem acesso contínuo ao microfone ou à câmera do usuário.
- Os usuários podem clicar nesses ícones e conferir quais apps estão acessando o microfone, a câmera ou ambos.
Figura 1. Indicadores de microfone e câmera em uso mostrando o acesso ativo (canto superior direito)
O acesso é considerado ativo enquanto os indicadores aparecem. Um ícone aparece primeiro e depois muda 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 5 segundos por um app em execução.
Os indicadores de acesso recente mostram que os dados foram acessados por um app durante os 15 segundos anteriores, mas que o app não está ativo. Todos os apps ativos aparecem na caixa de diálogo, mas apenas um aparece como a origem do acesso recente, mesmo quando mais de um app acessa 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
está na IU do sistema.
- A interface do sistema reage a uma mudança de configuração do dispositivo:
privacy/mic_camera_indicators_enabled
. - A troca é necessária porque há dois veículos de entrega separados, nesta
ordem:
- Entregar.
- Ative.
- A IU do sistema não pode falhar se o método em
PermissionManager
não puder fornecer os dados necessários.
Fluxo de processo
A funcionalidade do Indicador de permissão tem três partes principais:
- Os apps
- Os indicadores (gerenciados pelo 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. O SystemUI detecta apps que usam dados particulares. O SystemUI mostra um
ícone na barra de navegação superior que corresponde às permissões usadas. O
PermissionController
mostra dados sobre os usos quando um usuário clica em um ícone.
Figura 3. Componentes do sistema e fluxo de transições (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 vai notificar o provedor de dados e registrar o uso em operações de app.
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 (ou)noteOp
. 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 é recebido (por uma chamada parastartOp
ounoteOp
), a interface do sistema verifica se o uso é de um app do sistema. - Se a interface do sistema verificar o uso do app do sistema e se o uso for do microfone, ela vai verificar se o microfone está silenciado.
- Se a IU do sistema verificar o uso de apps que não são do sistema (e, para o uso do microfone, que ele está desativado; 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
, que não tem duração, ela vai mostrar o ícone 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 clicar em um ícone
iniciará 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á em execução ou estava em execução no período
definido pela IU do sistema. Se uma correspondência for encontrada, o nome do app
que usou a permissão e quais permissões foram usadas serão exibidos.
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 ligações telefônicas) ao trabalhar com o app de pesquisa do Google para Android (AGSA, na sigla em inglês) e os Serviços Móveis do Google (GMS).