Los permisos de tiempo de ejecución en Android 6 y versiones posteriores brindan 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 permiso a través de un cuadro de diálogo que presenta el sistema.
Android 12 brinda transparencia a los usuarios al mostrar indicadores cuando una aplicación usa una fuente de datos privada a través de los permisos operativos de la aplicación de cámaras y micrófonos. App-ops registra los accesos a las API protegidas por 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 de la 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 máxima prioridad visual (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 ser bloqueados por una aplicación cuando se inicia.
- Ambos indicadores deben ser de color verde (o una variación del verde).
- Al hacer clic en uno o ambos indicadores se debe generar una notificación de asignación de atribución de la aplicación que hace lo siguiente:
- Muestra el nombre de la aplicación que utiliza el micrófono y (o) la cámara
- Muestra el nombre de la aplicación que utilizó 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 al micrófono o la cámara 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.
Figura 1. Indicadores de uso del micrófono y la cámara que muestran el acceso activo (esquina superior derecha)
El acceso se considera activo mientras los indicadores lo muestren. Primero se muestra un ícono, luego pasa a ser un punto que persiste hasta que la aplicación se descarta o se cierra.
Cuando un usuario toca los indicadores, se abre un cuadro de diálogo que muestra que una aplicación está usando actualmente la cámara, el micrófono o ambos.
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 recientes 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 dentro de 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 reparto separados, en este orden:
- Entregar.
- Permitir.
- 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 utilizando los datos
PermissionController
proporciona el mecanismo para determinar qué aplicaciones están utilizando datos. SystemUI escucha aplicaciones que utilizan 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.
Figura 3. Componentes del sistema y flujo de transiciones (UI)
Las transiciones numeradas en la Figura 3 se describen a continuación:
1- Una aplicación solicita datos privados al sistema.
2- El sistema verifica los permisos. Si los permisos están permitidos, el sistema notifica al proveedor de datos y anota el uso en las operaciones de la aplicación.
3- El proveedor de datos proporciona datos a la aplicación.
4-5 El usuario hace clic en los iconos. La interfaz de usuario del sistema solicita datos del PermissionManager
y presenta el cuadro de diálogo al usuario.
Detalles del proceso
- Las aplicaciones usan el micrófono y la cámara y llaman a
AppOpsManager.startOp
,stopOp
y (o)noteOp
. Esto crea registros de operación de aplicaciones en el servidor del sistema. - La interfaz de usuario del sistema escucha nuevas operaciones de aplicaciones mediante los oyentes
AppOpsManager.OnOpActiveChangedInternalListener
yOnOpNotedListener
. Cuando llega un nuevo uso (a través de una llamada astartOp
onoteOp
), la interfaz de usuario del sistema verifica que el uso se realiza mediante una aplicación del sistema. - Si la UI del sistema verifica el uso de la aplicación del sistema y si el uso es para el micrófono, la UI del sistema verifica si el micrófono está silenciado.
- Si la interfaz de usuario del sistema verifica el uso de aplicaciones fuera 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 una noteOp
, que no tiene duración, muestra el icono 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 icono inicia una intención que va al PermissionController
para iniciar el diálogo.
PermissionController
carga todo el uso reciente del micrófono y la cámara. Comprueba si alguno de ellos se está ejecutando actualmente o si se estaba ejecutando dentro del período 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 separados que se utilizan en las llamadas telefónicas), mientras trabaja con la aplicación de búsqueda de Google de Android (AGSA) y los servicios móviles de Google (GMS).