Indicadores de privacidad

Los permisos de tiempo de ejecución en Android 6 y versiones posteriores dan a los usuarios control sobre cuándo permiten que se grabe el audio del micrófono de un dispositivo o el video de la cámara de un dispositivo. Antes de que una aplicación pueda grabar, un usuario debe otorgarle o denegarle el permiso a través de un cuadro de diálogo que presenta el sistema.

Android 12 brinda a los usuarios transparencia al mostrar indicadores cuando una aplicación usa una fuente de datos privada a través de las cámaras y los permisos de operación de la aplicación del micrófono. App-ops registra los accesos a las API protegidas con permisos en tiempo de ejecución.

App-op rastrea tanto el estado de la actividad como la cantidad de llamadas API individuales, e interactúa con los indicadores del micrófono y la cámara en Android 12 para mostrar a los usuarios cuándo las aplicaciones han accedido a los datos de audio y cámara en sus dispositivos. Cuando los usuarios hacen clic en los indicadores del micrófono o de la cámara, ven qué aplicaciones han accedido a sus datos. Esta característica es obligatoria para todos los OEM.

Requisitos de visibilidad del indicador

Estos son los requisitos para los indicadores de micrófono y cámara en dispositivos con Android 12 o superior:

  • Los indicadores deben aparecer en la barra de estado y conservar la prioridad visual más alta (por ejemplo, ubicados en la posición más a la derecha en la esquina superior derecha).
  • Los indicadores deben estar ubicados constantemente en la misma posición y no deben estar bloqueados por una aplicación cuando se inicia.
  • Ambos indicadores deben ser de color verde (o una variación de verde).
  • Al hacer clic en uno o ambos indicadores, se debe generar una notificación de disponibilidad de atribución de la aplicación que haga lo siguiente:
    • Muestra el nombre de la aplicación que está usando el micrófono y (o) la cámara
    • Muestra el nombre de la aplicación que usó el micrófono y (o) la cámara en los últimos 15 segundos
    • Lleva a los usuarios a la página de permisos de la aplicación en Configuración

Uso y características

En Android 12, la interfaz de usuario distingue entre usos en ejecución y usos recientes. Los usos se consideran "activos" si el sistema los marca como "en ejecución" o tienen menos de 5 segundos de antigüedad.

  • Los íconos de la barra de estado se muestran cada vez que una aplicación tiene acceso continuo a la cámara o al micrófono sensible al usuario.
  • Los usuarios pueden hacer clic en estos íconos y ver qué aplicaciones acceden al micrófono, a la cámara o a ambos.

Microphone and camera in-use indicators showing that access is active

Figura 1. Indicadores de micrófono y cámara en uso que muestran acceso activo (esquina superior derecha)

El acceso se considera activo durante el tiempo que muestran los indicadores. Primero se muestra un ícono, luego cambia a un punto que persiste hasta que la aplicación se descarta o se cierra.

Cuando un usuario toca los indicadores, se despliega un cuadro de diálogo que muestra que una aplicación está usando la cámara, el micrófono o ambos.

Indicators for both active and recent access, and whether the access was from camera or microphone

Figura 2. Indicadores de acceso activo y reciente

La imagen de la Figura 2 muestra indicadores de acceso activo cuando una aplicación en ejecución ha accedido a los datos en los últimos 5 segundos.

Los indicadores de acceso reciente muestran que una aplicación accedió a los datos durante los 15 segundos anteriores, pero que la aplicación no está activa. Todas las aplicaciones activas se muestran en el diálogo, pero solo una aplicación se muestra como fuente de acceso reciente, incluso cuando más de una aplicación accedió a los datos en un período de tiempo anterior de 15 segundos. La vista de acceso permanece congelada hasta que el usuario cierra el cuadro de diálogo de notificación.

Entregar y habilitar

La clase PermissionManager proporciona un método para completar el cuadro de diálogo, que reside en la interfaz de usuario del sistema.

  • La interfaz de usuario del sistema reacciona a un cambio de configuración del dispositivo: privacy/mic_camera_indicators_enabled .
  • El cambio es necesario porque hay dos vehículos de entrega separados, en este orden:
    1. Entregar.
    2. Habilitar.
  • La interfaz de usuario del sistema no debe fallar si el método en PermissionManager no puede proporcionar los datos necesarios.

Flujo del proceso

La funcionalidad del indicador de permiso tiene tres partes principales:

  • las aplicaciones
  • Los indicadores (manejados por SystemUI)
  • Una forma de determinar qué aplicaciones están usando los datos

PermissionController proporciona el mecanismo para determinar qué aplicaciones usan datos. SystemUI escucha aplicaciones que usan datos privados. SystemUI muestra un icono en la barra de navegación superior que corresponde a los permisos utilizados. PermissionController muestra datos sobre los usos cuando un usuario hace clic en un icono.

Process flow for Permission Indicator functions

Figura 3. Flujo de transiciones (IU) y componentes del sistema

Las transiciones numeradas en la Figura 3 se describen a continuación:

1- Una aplicación solicita datos privados del sistema.

2- El sistema verifica los permisos. Si los permisos están permitidos, el sistema notifica al proveedor de datos y toma nota del uso en las operaciones de aplicaciones.

3- El proveedor de datos da datos a la aplicación.

4-5 El usuario hace clic en los iconos. La interfaz de usuario del sistema solicita datos de PermissionManager y presenta el cuadro de diálogo al usuario.

Detalles del proceso

  1. Las aplicaciones usan el micrófono y la cámara, llamando a AppOpsManager.startOp , stopOp y (o) noteOp . Esto crea registros de operaciones de aplicaciones en el servidor del sistema.
  2. La interfaz de usuario del sistema detecta nuevas operaciones de aplicaciones mediante los oyentes AppOpsManager.OnOpActiveChangedInternalListener y OnOpNotedListener . Cuando llega un nuevo uso (a través de una llamada a startOp o noteOp ), la interfaz de usuario del sistema verifica que el uso es por una aplicación del sistema.
  3. Si la IU del sistema verifica el uso de la aplicación del sistema y si el uso es para el micrófono, la IU del sistema verifica si el micrófono está silenciado.
  4. Si la interfaz de usuario del sistema verifica el uso de aplicaciones que no son del sistema (y, para el uso del micrófono, que el micrófono no está silenciado; para el uso de la cámara, que la cámara está activada), muestra un icono que refleja dicho uso.

Si la interfaz de usuario del sistema recibe un noteOp , que no tiene duración, muestra el ícono durante al menos 5 segundos. De lo contrario, el ícono se muestra hasta que recibe un stopOp o durante 5 segundos, lo que sea más largo. El usuario que hace clic en un ícono inicia una intención que va a PermissionController para iniciar el diálogo.

El PermissionController carga todo el uso reciente del micrófono y la cámara. Comprueba si alguno de ellos se está ejecutando actualmente o se ejecutó dentro del marco de tiempo establecido por la interfaz de usuario del sistema. Si encuentra una coincidencia, muestra el nombre de la aplicación que usó el permiso y qué permisos usó la aplicación.

Debido a este cambio en Android 12 y versiones posteriores, algunas aplicaciones deben cambiar su comportamiento o implementar un comportamiento especial.

La telefonía debe implementar el uso de permisos (para tener en cuenta la pila de micrófonos separada que se usa en las llamadas telefónicas), mientras se trabaja con la aplicación de búsqueda de Google para Android (AGSA) y los servicios móviles de Google (GMS).