Проверьте доступность функции

Когда в платформу "Здоровье и спорт" добавляются новые функции, пользователи не всегда обновляют ее версию. Feature Availability API позволяет проверить, доступна ли функция платформы "Здоровье и спорт" на устройстве пользователя, и решить, что делать дальше.

Начать

API доступности функций имеет ту же зависимость, что и SDK Здоровья и спорта. Для начала убедитесь, что в файле build.gradle указана версия не ниже 1.1.0-alpha08:

dependencies {
  implementation("androidx.health.connect:connect-client:1.2.0-alpha06")
}

Флаги функций

Флаги функций, доступные для платформы "Здоровье и спорт", перечислены в таблице ниже. Функция, для которой установлен флаг, не будет доступна, если устройство пользователя ее не поддерживает.

Таблица. Флаги доступности функций платформы "Здоровье и спорт"
Флаг функции Тип данных Похожие руководства
FEATURE_ACTIVITY_INTENSITY Интенсивность занятий Тренировки
FEATURE_EXTENDED_DEVICE_TYPES Расширенные типы устройств Требования к метаданным
FEATURE_MATCHMAKING Подбор соперников
FEATURE_PERSONAL_HEALTH_RECORD медицинские данные; Формат данных медицинских карт
Запись медицинских данных
Чтение медицинских данных
FEATURE_MINDFULNESS_SESSION Осознанность Отслеживайте осознанность
FEATURE_PLANNED_EXERCISE Запланированные тренировки Тренировки
Планы тренировок
FEATURE_READ_HEALTH_DATA_IN_BACKGROUND Чтение данных в фоновом режиме Пример фонового чтения
FEATURE_READ_HEALTH_DATA_HISTORY Чтение статистики Как прочитать данные, полученные более 30 дней назад
FEATURE_SKIN_TEMPERATURE температура кожи; Показатели здоровья
Измерение температуры кожи

Выполните проверку

Основная функция для проверки доступности функций – getFeatureStatus(). Возвращает целочисленные константы FEATURE_STATUS_AVAILABLE или FEATURE_STATUS_UNAVAILABLE:

Чтобы определить, поддерживает ли устройство пользователя чтение данных о здоровье в фоновом режиме на платформе "Здоровье и спорт", проверьте доступность FEATURE_READ_HEALTH_DATA_IN_BACKGROUND на клиенте:

if (healthConnectClient
     .features
     .getFeatureStatus(
       HealthConnectFeatures.FEATURE_READ_HEALTH_DATA_IN_BACKGROUND
     ) == HealthConnectFeatures.FEATURE_STATUS_AVAILABLE) {

  // Feature is available
} else {
  // Feature isn't available
}

Список всех доступных флагов функций можно найти на справочной странице HealthConnectFeatures.

Как обрабатывать отсутствие функций

Если функция недоступна на устройстве пользователя, возможно, она появится после обновления. Если на устройстве пользователя установлена неподдерживаемая версия платформы "Здоровье и спорт", вы можете предложить ему обновить ее. Однако пользователи APK-файла (на устройствах с Android 13 и более ранними версиями) не смогут использовать функции системного модуля, доступные только на устройствах с Android 14 и более поздними версиями.

Если на устройстве пользователя недоступен параметр FEATURE_EXTENDED_DEVICE_TYPES, то для расширенных типов устройств эти значения обрабатываются как Device.TYPE_UNKNOWN. Предусмотрите разумный резервный вариант в логике записи и интерфейса.