Indicadores de privacidade

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.

Indicadores de microfone e câmera em uso mostrando que o acesso está ativo

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.

Indicadores de acesso ativo e recente, além de saber se o acesso foi feito pela câmera ou pelo microfone

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:
    1. Entregar.
    2. 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.

Fluxo de processo para funções do indicador de permissão

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

  1. 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.
  2. A interface do sistema detecta novas operações de app usando os listeners AppOpsManager.OnOpActiveChangedInternalListener e OnOpNotedListener. Quando um novo uso é recebido (por uma chamada para startOp ou noteOp), a interface do sistema verifica se o uso é de um app do sistema.
  3. 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.
  4. 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).