Разрешения среды выполнения в Android 6 и более поздних версиях позволяют пользователям контролировать, когда они разрешают запись звука с микрофона устройства или видео с камеры устройства. Прежде чем приложение сможет записывать, пользователь должен предоставить или запретить ему разрешение в диалоговом окне, которое представляет система.
Android 12 обеспечивает пользователям прозрачность, отображая индикаторы, когда приложение использует частный источник данных через разрешения приложения для камеры и микрофона. App-ops записывают доступ к API, защищенным во время выполнения.
App-op отслеживает как статус активности, так и количество отдельных вызовов API, а также взаимодействует с индикаторами микрофона и камеры в Android 12, чтобы показать пользователям, когда приложения получили доступ к данным аудио и камеры на их устройствах. Когда пользователи нажимают на индикаторы микрофона или камеры, они видят, какие приложения получили доступ к их данным. Эта функция является обязательной для всех OEM-производителей.
Требования к видимости индикатора
Вот требования к индикаторам микрофона и камеры на устройствах под управлением Android 12 или выше:
- Индикаторы должны отображаться в строке состояния и сохранять наивысший визуальный приоритет (например, располагаться в крайнем правом положении в правом верхнем углу).
- Индикаторы должны постоянно находиться в одном и том же месте и не должны блокироваться приложением при его запуске.
- Оба индикатора должны быть зеленого (или его разновидности) цвета.
- Щелчок по одному или обоим индикаторам должен отображать уведомление о доступности атрибуции приложения, которое выполняет следующие действия:
- Отображает название приложения, использующего микрофон и (или) камеру
- Отображает название приложения, которое использовало микрофон и (или) камеру в течение последних 15 секунд.
- Направляет пользователей на страницу разрешений приложения в настройках .
Использование и особенности
В Android 12 пользовательский интерфейс различает текущее использование и недавнее использование. Использование считается «активным», если оно либо помечено системой как «работающее», либо прошло менее 5 секунд.
- Значки строки состояния отображаются каждый раз, когда приложение имеет постоянный доступ к чувствительному к пользователю микрофону или камере.
- Пользователи могут щелкнуть эти значки и увидеть, какие приложения обращаются к микрофону, камере или к обоим.
Рис. 1. Индикаторы использования микрофона и камеры, показывающие активный доступ (правый верхний угол)
Доступ считается активным, пока горят индикаторы. Сначала отображается значок, затем он превращается в точку, которая сохраняется до тех пор, пока приложение не будет закрыто или закрыто.
Когда пользователь нажимает на индикаторы, открывается диалоговое окно, показывающее, что приложение в данный момент использует камеру, микрофон или и то, и другое.
Рисунок 2. Индикаторы активного и недавнего доступа
На изображении на рис. 2 показаны индикаторы активного доступа, когда за последние 5 секунд к данным обращался работающее приложение.
Индикаторы недавнего доступа показывают, что приложение обращалось к данным в течение предыдущих 15 секунд, но приложение неактивно. Все активные приложения отображаются в диалоговом окне, но только одно приложение отображается как источник недавнего доступа, даже если более 1 приложения обращались к данным в течение предшествующего 15-секундного периода времени. Представление доступа остается замороженным до тех пор, пока пользователь не закроет диалоговое окно уведомления.
Доставить и активировать
Класс PermissionManager
предоставляет метод для заполнения диалогового окна, которое находится в пользовательском интерфейсе системы.
- Пользовательский интерфейс системы реагирует на изменение конфигурации устройства:
privacy/mic_camera_indicators_enabled
. - Переключатель необходим, потому что есть два отдельных средства доставки, в следующем порядке:
- Доставлять.
- Включить.
- Системный пользовательский интерфейс не должен аварийно завершать работу, если метод в
PermissionManager
не может предоставить необходимые данные.
Технологический поток
Функциональность индикатора разрешений состоит из трех основных частей:
- Приложения
- Индикаторы (обрабатываются SystemUI)
- Способ определить, какие приложения используют данные
PermissionController
предоставляет механизм для определения того, какие приложения используют данные. SystemUI прослушивает приложения, использующие личные данные. SystemUI показывает значок в верхней панели навигации, соответствующий используемым разрешениям. PermissionController
отображает данные об использовании, когда пользователь щелкает значок.
Рисунок 3. Компоненты системы и поток переходов (UI)
Пронумерованные переходы на рисунке 3 описаны ниже:
1- Приложение запрашивает личные данные из системы.
2- Система проверяет разрешения. Если разрешения разрешены, система уведомляет поставщика данных и отмечает использование в приложениях.
3- Поставщик данных предоставляет данные приложению.
4-5 Пользователь щелкает значки. Системный пользовательский интерфейс запрашивает данные из PermissionManager
и представляет диалоговое окно пользователю.
Детали процесса
- Приложения используют микрофон и камеру, вызывая
AppOpsManager.startOp
,stopOp
и (или)noteOp
. Это создает записи приложения-операции на системном сервере. - Системный пользовательский интерфейс прослушивает новые операции приложения с помощью
AppOpsManager.OnOpActiveChangedInternalListener
иOnOpNotedListener
. Когда появляется новое использование (через вызовstartOp
илиnoteOp
), системный пользовательский интерфейс проверяет, что использование осуществляется системным приложением. - Если Системный пользовательский интерфейс проверяет использование системного приложения и если используется микрофон, Системный пользовательский интерфейс проверяет, отключен ли микрофон.
- Если системный пользовательский интерфейс проверяет использование несистемных приложений (и для использования микрофона, что звук микрофона включен; для использования камеры, что камера включена), он показывает значок, отражающий такое использование.
Если системный пользовательский интерфейс получает noteOp
, у которого нет длительности, значок отображается не менее 5 секунд. В противном случае значок отображается либо до получения stopOp
, либо в течение 5 секунд, в зависимости от того, что дольше. Пользователь, щелкающий значок, инициирует намерение, которое переходит к PermissionController
для запуска диалогового окна.
PermissionController
загружает все последние данные об использовании микрофона и камеры. Он проверяет, запущены ли какие-либо из них в настоящее время или выполнялись в течение периода времени, установленного системным пользовательским интерфейсом. Если он находит совпадение, он отображает имя приложения, которое использовало разрешение, и какие разрешения использовало приложение.
Из-за этого изменения в Android 12 и более поздних версиях некоторые приложения должны либо изменить свое поведение, либо реализовать специальное поведение.
Телефония должна реализовать использование разрешений (для учета отдельного стека микрофонов, используемого в телефонных звонках) при работе с приложением Android Google Search (AGSA) и Google Mobile Services (GMS).