Индикаторы конфиденциальности

Разрешения среды выполнения в Android 6 и более поздних версиях позволяют пользователям контролировать, когда они разрешают запись звука с микрофона устройства или видео с камеры устройства. Прежде чем приложение сможет записывать, пользователь должен предоставить или запретить ему разрешение в диалоговом окне, которое представляет система.

Android 12 обеспечивает пользователям прозрачность, отображая индикаторы, когда приложение использует частный источник данных через разрешения приложения для камеры и микрофона. App-ops записывают доступ к API, защищенным во время выполнения.

App-op отслеживает как статус активности, так и количество отдельных вызовов API, а также взаимодействует с индикаторами микрофона и камеры в Android 12, чтобы показать пользователям, когда приложения получили доступ к данным аудио и камеры на их устройствах. Когда пользователи нажимают на индикаторы микрофона или камеры, они видят, какие приложения получили доступ к их данным. Эта функция является обязательной для всех OEM-производителей.

Требования к видимости индикатора

Вот требования к индикаторам микрофона и камеры на устройствах под управлением Android 12 или выше:

  • Индикаторы должны отображаться в строке состояния и сохранять наивысший визуальный приоритет (например, располагаться в крайнем правом положении в правом верхнем углу).
  • Индикаторы должны постоянно находиться в одном и том же месте и не должны блокироваться приложением при его запуске.
  • Оба индикатора должны быть зеленого (или его разновидности) цвета.
  • Щелчок по одному или обоим индикаторам должен отображать уведомление о доступности атрибуции приложения, которое выполняет следующие действия:
    • Отображает название приложения, использующего микрофон и (или) камеру
    • Отображает название приложения, которое использовало микрофон и (или) камеру в течение последних 15 секунд.
    • Направляет пользователей на страницу разрешений приложения в настройках .

Использование и особенности

В Android 12 пользовательский интерфейс различает текущее использование и недавнее использование. Использование считается «активным», если оно либо помечено системой как «работающее», либо прошло менее 5 секунд.

  • Значки строки состояния отображаются каждый раз, когда приложение имеет постоянный доступ к чувствительному к пользователю микрофону или камере.
  • Пользователи могут щелкнуть эти значки и увидеть, какие приложения обращаются к микрофону, камере или к обоим.

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

Рис. 1. Индикаторы использования микрофона и камеры, показывающие активный доступ (правый верхний угол)

Доступ считается активным, пока горят индикаторы. Сначала отображается значок, затем он превращается в точку, которая сохраняется до тех пор, пока приложение не будет закрыто или закрыто.

Когда пользователь нажимает на индикаторы, открывается диалоговое окно, показывающее, что приложение в данный момент использует камеру, микрофон или и то, и другое.

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

Рисунок 2. Индикаторы активного и недавнего доступа

На изображении на рис. 2 показаны индикаторы активного доступа, когда за последние 5 секунд к данным обращался работающее приложение.

Индикаторы недавнего доступа показывают, что приложение обращалось к данным в течение предыдущих 15 секунд, но приложение неактивно. Все активные приложения отображаются в диалоговом окне, но только одно приложение отображается как источник недавнего доступа, даже если более 1 приложения обращались к данным в течение предшествующего 15-секундного периода времени. Представление доступа остается замороженным до тех пор, пока пользователь не закроет диалоговое окно уведомления.

Доставить и активировать

Класс PermissionManager предоставляет метод для заполнения диалогового окна, которое находится в пользовательском интерфейсе системы.

  • Пользовательский интерфейс системы реагирует на изменение конфигурации устройства: privacy/mic_camera_indicators_enabled .
  • Переключатель необходим, потому что есть два отдельных средства доставки, в следующем порядке:
    1. Доставлять.
    2. Давать возможность.
  • Системный пользовательский интерфейс не должен аварийно завершать работу, если метод в PermissionManager не может предоставить необходимые данные.

Технологический поток

Функциональность индикатора разрешений состоит из трех основных частей:

  • Приложения
  • Индикаторы (обрабатываются SystemUI)
  • Способ определить, какие приложения используют данные

PermissionController предоставляет механизм для определения того, какие приложения используют данные. SystemUI прослушивает приложения, использующие личные данные. SystemUI показывает значок в верхней панели навигации, соответствующий используемым разрешениям. PermissionController отображает данные об использовании, когда пользователь щелкает значок.

Process flow for Permission Indicator functions

Рисунок 3. Компоненты системы и поток переходов (UI)

Пронумерованные переходы на рисунке 3 описаны ниже:

1- Приложение запрашивает личные данные из системы.

2- Система проверяет разрешения. Если разрешения разрешены, система уведомляет поставщика данных и отмечает использование в приложениях.

3- Поставщик данных предоставляет данные приложению.

4-5 Пользователь щелкает значки. Системный пользовательский интерфейс запрашивает данные из PermissionManager и представляет диалоговое окно пользователю.

Детали процесса

  1. Приложения используют микрофон и камеру, вызывая AppOpsManager.startOp , stopOp и (или) noteOp . Это создает записи приложения-операции на системном сервере.
  2. Системный пользовательский интерфейс прослушивает новые операции приложения с помощью AppOpsManager.OnOpActiveChangedInternalListener и OnOpNotedListener . Когда появляется новое использование (через вызов startOp или noteOp ), системный пользовательский интерфейс проверяет, что использование осуществляется системным приложением.
  3. Если Системный пользовательский интерфейс проверяет использование системного приложения и если используется микрофон, Системный пользовательский интерфейс проверяет, отключен ли микрофон.
  4. Если системный пользовательский интерфейс проверяет использование несистемных приложений (и для использования микрофона, что звук микрофона включен; для использования камеры, что камера включена), он показывает значок, отражающий такое использование.

Если системный пользовательский интерфейс получает noteOp , у которого нет длительности, значок отображается не менее 5 секунд. В противном случае значок отображается либо до получения stopOp , либо в течение 5 секунд, в зависимости от того, что дольше. Пользователь, щелкающий значок, инициирует намерение, которое переходит к PermissionController для запуска диалогового окна.

PermissionController загружает все последние данные об использовании микрофона и камеры. Он проверяет, запущены ли какие-либо из них в настоящее время или выполнялись в течение периода времени, установленного системным пользовательским интерфейсом. Если он находит совпадение, он отображает имя приложения, которое использовало разрешение, и какие разрешения использовало приложение.

Из-за этого изменения в Android 12 и более поздних версиях некоторые приложения должны либо изменить свое поведение, либо реализовать специальное поведение.

Телефония должна реализовать использование разрешений (для учета отдельного стека микрофонов, используемого в телефонных звонках) при работе с приложением Android Google Search (AGSA) и Google Mobile Services (GMS).