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

При добавлении новых функций в Health Connect пользователи не всегда могут обновлять свою версию Health Connect. API проверки доступности функций позволяет проверить, доступна ли та или иная функция в Health Connect на устройстве пользователя, и определить, какие действия следует предпринять.

Начать

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

dependencies {
  implementation("androidx.health.connect:connect-client:1.1.0-alpha08")
}

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

Доступные для Health Connect флаги функций перечислены в следующей таблице. Функциональность, скрытая за флагом функции, будет недоступна, если устройство пользователя не поддерживает эту функцию.

Таблица: Флаги доступности функций Health Connect
Флаг функции Тип данных Связанные руководства
FEATURE_ACTIVITY_INTENSITY Интенсивность активности Тренировки
FEATURE_EXTENDED_DEVICE_TYPES Расширенные типы устройств Требования к метаданным
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 :

Чтобы определить, поддерживает ли устройство пользователя чтение медицинских данных в фоновом режиме в Health Connect, проверьте наличие функции 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 .

Как справиться с нехваткой доступных функций

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

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