Запросить фоновый доступ к данным датчиков тела

В Android 13 и Wear OS 4 приложения могут получать доступ к датчикам тела, например, к частоте сердечных сокращений, в фоновом режиме. Эта новая модель доступа аналогична той, которая представила фоновый доступ к местоположению в Android 10 (уровень API 29) .

Если вашему приложению требуется доступ к информации датчиков тела в фоновом режиме, например, при мониторинге данных Health Services в фоновом режиме , вам необходимо запросить разрешение BODY_SENSORS_BACKGROUND .

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

Процесс предоставления разрешения зависит от целевой версии SDK вашего приложения.

Приложение предназначено для Android 13 или более поздней версии

В дополнение к существующему разрешению BODY_SENSORS объявите разрешение BODY_SENSORS_BACKGROUND в файле манифеста:

<uses-permission android:name="android.permission.BODY_SENSORS">
<uses-permission android:name="android.permission.BODY_SENSORS_BACKGROUND">

Затем ваше приложение должно запросить разрешения в отдельных операциях:

  1. Проверьте, предоставлен ли BODY_SENSORS . Если нет, запросите разрешение.
  2. Проверьте, предоставлен ли BODY_SENSORS_BACKGROUND . Если нет, запросите разрешение.
Опция «Все время» — это первый элемент списка на экране настроек.
Рисунок 1. Настройка «Датчики» включает опцию « Все время» , которая предоставляет доступ к данным фоновых датчиков.

Внимание: если ваше приложение запрашивает оба разрешения датчика тела одновременно, система игнорирует запрос и не предоставляет вашему приложению ни одного разрешения.

В Android 13 (уровень API 33) и более поздних версиях диалоговое окно разрешений среды выполнения не включает параметр «Разрешить все время». Вместо этого пользователи должны включить постоянный доступ к фоновому датчику в настройках системы, как показано на рисунке 1. Когда вы запрашиваете разрешение BODY_SENSORS_BACKGROUND после предоставления разрешения BODY_SENSORS , вы можете помочь пользователям перейти на эту страницу настроек. Если пользователи откажутся от постоянного доступа, они смогут продолжать использовать ваше приложение.

Приложение ориентировано на более раннюю версию

Текст ссылки: «перейти в настройки».
Рис. 2. Диалоговое окно разрешений содержит ссылку для перехода пользователей к разрешениям датчиков приложения в настройках системы.

Если ваше приложение предназначено для версии Android более ранней, чем Android 13, фоновый доступ не предоставляется автоматически при запросе разрешения BODY_SENSORS . Вместо этого пользователи видят системное диалоговое окно, которое предлагает им перейти к настройкам разрешений датчика вашего приложения, как показано на рисунке 2. Затем пользователи должны включить использование фонового датчика на этой странице настроек.

Пользователи могут отказаться от фонового доступа. Это имеет тот же эффект, что и отзыв разрешения BODY_SENSORS , когда ваше приложение работает в фоновом режиме. Когда приложение использует PassiveMonitoringClient без разрешения на фоновый доступ и переходит в фоновый режим, приложение теряет разрешение BODY_SENSORS и вызывается обратный вызов onPermissionLost() . По этим причинам особенно важно следовать рекомендациям по запросу разрешений во время выполнения.