Wear Health Services API (WHS) – обязательный компонент для всех устройств с Wear OS 3 и более поздними версиями. Он обеспечивает стабильную интеграцию для разработчиков приложений для сервисов наблюдения за здоровьем и фитнеса. Создайте приложение, которое будет корректно работать на разных устройствах и адаптироваться к их возможностям. Это позволит избежать проблем с совместимостью и удобством использования. Для этого объявляйте зависимости только для клиентов, которые использует ваше приложение. Кроме того, в приложении должна быть предусмотрена возможность показывать или скрывать дополнительные расширенные показатели в зависимости от их доступности.
Разные датчики генерируют данные с разной частотой, которая зависит от устройства, его аппаратного обеспечения и платформы датчиков. Например, устройство может возвращать пульс в одной временной метке и местоположение в другой. Создавайте приложения, которые могут получать независимые потоки данных с разными или частично совпадающими временными метками.
В этом руководстве описаны ожидаемые действия и типы данных, поддерживаемые различными клиентами в сервисах наблюдения за здоровьем Wear OS.
Клиент для тренировок
В разделах ниже описаны ожидаемые действия и типы данных ExerciseClient.
Ожидаемое поведение
Для ExerciseClient некоторые типы упражнений зависят от доступности определенных типов данных. Например, тренировки на инвалидной коляске доступны, только если поддерживаются толчки инвалидной коляски. Включайте и отключайте эти параметры в зависимости от их доступности на конкретном устройстве.
Данные большинства типов тренировок собираются и передаются с интервалом в одну секунду, за некоторыми исключениями:
- В некоторых случаях определенные типы данных о тренировках обновляются чаще, чем раз в секунду. Например, когда пользователь бежит, количество шагов обновляется чаще, чем раз в секунду.
- Для некоторых типов данных обновление доставляется, только если текущее значение отличается от предыдущего.
Данные могут передаваться в виде потока или пакетами. Данные передаются, когда процессор приложений включен, то есть обычно когда экран включен и интерактивен. Когда экран выключается или переходит в спящий режим (включен, но неактивен), данные объединяются в пакеты для экономии энергии. Пакетные данные передаются в приложение, когда процессор приложений снова включается (например, когда часы выходят из спящего режима) или когда буферы для пакетных запросов заполнены (зависит от устройства). Частота дискретизации остается прежней, пока устройство находится в спящем режиме, поэтому пакет, который доставляется, по-прежнему имеет высокочастотные точки данных.
Типы данных определяются исключительно на основе данных, полученных от датчиков на часах. Например, данные о местоположении поступают только с часов, а не с телефона.
Типы данных
ExerciseClient API позволяет начинать, приостанавливать, возобновлять и останавливать тренировки разных типов. Для каждого типа тренировки WHS определяет набор типов данных, которые будут вам доступны. Это экономит заряд батареи и упрощает логику приложения, поскольку датчики, которые не требуются для данной тренировки, не включаются. Например, когда вы начинаете пробежку, данные о местоположении предоставляются и отслеживаются только для пробежки на открытом воздухе. При запуске тренировки на велосипеде шаги не предоставляются и не отслеживаются. В разделах ниже описаны типы данных, которые поддерживаются в ExerciseClient.
Типы данных о тренировках, доступные на всех устройствах
На всех устройствах доступны следующие типы данных о тренировках.
- Типы данных выборки имеют соответствующий тип данных _STATS, который возвращает минимальное, максимальное и среднее значения тренировки. Например, статистику PACE можно получить с помощью типа данных PACE_STATS.
- Типы данных Interval имеют соответствующий тип данных _TOTAL, который возвращает совокупное значение тренировки. Например, статистику по расстоянию можно получить с помощью типа данных DISTANCE_TOTAL.
| Показатель | Ожидаемые данные | Примечания об ожидаемом поведении |
| HEART_RATE_BPM | Ударов в минуту [тип данных: Double] | Все устройства измеряют пульс раз в секунду во время тренировки. Некоторые устройства регистрируют значение ЧСС каждую секунду. Некоторые устройства сообщают значение ЧСС, только если оно изменилось по сравнению с предыдущим. Не ожидайте, что на всех устройствах значение ЧСС будет обновляться каждую секунду. |
| МЕСТОПОЛОЖЕНИЕ | Широта и долгота [DataType: Double] | Данные о местоположении основаны только на GPS часов. Не ожидайте, что данные о местоположении будут поступать от поставщика геоданных из нескольких источников или других сервисов Android. Каждая точка данных также включает значение точности (также известное как ошибка горизонтального положения) и доступность. |
| НАЧАЛО РАБОТЫ | [Тип данных: Long] | Количество шагов – это общее число шагов за время тренировки, не включая время, когда тренировка была приостановлена. |
| РАССТОЯНИЕ | Метры [Тип данных: Double] | Рассчитывается на основе данных GPS, если они доступны, или на основе количества шагов. Общее значение относится к общей продолжительности тренировки, не включая время, когда тренировка приостановлена. |
| СКОРОСТЬ | [метры / секунда] [Тип данных: число двойной точности] | Возвращает минимальное, максимальное и среднее значения. Эти данные рассчитываются за время тренировки, не включая время, когда тренировка была приостановлена. |
| PACE | [секунды / метр] [Тип данных: Double] | Значение по умолчанию – 0, если скорость равна 0. Средние значения рассчитываются за время тренировки, не включая время, когда тренировка приостановлена. |
| ELEVATION_GAIN | Метры. [Тип данных: число двойной точности] | Положительные изменения высоты. Общее значение рассчитывается за время тренировки, не включая время, когда тренировка была приостановлена. |
| TOTAL_CALORIES | ккал [Тип данных: число двойной точности] | Сожженные калории, добавленные к скорости метаболизма. При расчете калорий учитываются рост, вес, возраст и пол пользователя, указанные в системных настройках. При подсчете калорий не учитываются данные профиля пользователя, собранные в приложении. Общее количество калорий рассчитывается за время тренировки, не включая время, когда тренировка была приостановлена. |
Необязательные типы данных о тренировках
Перечисленные ниже типы данных доступны только на некоторых устройствах. Полный список DataTypes можно найти в справочнике по Jetpack. Если DataType нет в списке обязательных или гарантированных, то он необязателен.
Ниже приведены примеры необязательных типов данных. Вот несколько вариантов:
| Показатель | Ожидаемые данные | Примечания об ожидаемом поведении |
| ABSOLUTE_ELEVATION | [Тип данных: число двойной точности] | |
| ELEVATION_LOSS | Метры [Тип данных: Double] | Отрицательные изменения высоты. Значение положительное. Например, потеря высоты в 1 м возвращается как 1, а не -1. |
| STEPS_PER_MINUTE | [Тип данных: Long] | |
| WHEELCHAIR_PUSHES | [Тип данных: Long] | Количество толчков коляски для использования в упражнениях на инвалидной коляске. |
| REP_COUNT | [Тип данных: Long] | |
| SWIM_STROKE_COUNT | [Тип данных: Long] | |
| SWIM_LAP_COUNT | [Тип данных: Long] |
Типы данных для каждого упражнения
Для каждого типа тренировки возвращаются разные типы данных. Возвращаемые типы данных соответствуют потребностям упражнения. Например, тип упражнения BIKING не возвращает тип данных STEPS. Используйте метод Capabilities во время выполнения, чтобы определить, какие типы данных поддерживаются на устройстве пользователя.
Как минимум, все типы тренировок возвращают данные о пульсе и калориях. В зависимости от требований к упражнению могут поддерживаться и другие типы данных.
Вот несколько примеров:
- Для таких тренировок, как медитация или пилатес, поддерживается только отслеживание пульса и калорий.
- Для таких тренировок, как баскетбол или бадминтон, поддерживается отслеживание пульса, калорий, расстояния и шагов.
- Для ходьбы и бега поддерживаются пульс, калории, расстояние, шаги, скорость и темп.
- Плавание: пульс, калории, расстояние и количество кругов.
Клиент пассивного мониторинга
Для всех устройств Wear OS требуются перечисленные ниже типы данных, чтобы поддерживать приложения, которые пассивно отслеживают данные о здоровье и физической активности, например пульс
и количество шагов. Каждый из этих типов данных должен быть получен исключительно из данных, генерируемых датчиками на часах.
Ожидаемое поведение
Чтобы экономить заряд батареи, показания датчиков, полученные с помощью пассивного мониторинга, сохраняются на микроконтроллере и передаются в сервисы наблюдения за здоровьем пакетами. Эти пакетные результаты возвращаются с разными интервалами в зависимости от поведения системы. Например, пакеты могут возвращаться, когда буферы датчиков заполнены или когда пользователь взаимодействует с экраном.
Не предполагайте, что для каких-либо типов данных существуют предопределенные или предсказуемые интервалы пакетной обработки.
Типы данных пассивного мониторинга
| Показатель | Ожидаемые данные | Примечания |
| HEART_RATE_BPM | Ударов в минуту. [Тип данных: Double] | Устройства могут возвращать показания пульса с разными интервалами. Некоторые устройства могут снимать показания каждую секунду. Другие устройства могут снимать показания каждые десять минут. Эти интервалы недоступны для приложений. Приложения должны корректно адаптироваться к разным интервалам выборки. |
| STEPS_DAILY/STEPS | [Тип данных: Long] | Шаги за день – это общее количество шагов, пройденных с момента последнего сброса, который запускается WHS в полночь. Сюда входят все шаги, сделанные во время паузы в активной тренировке. Шаги – это подробная дельта с момента последней проверки. |
| DISTANCE_DAILY/DISTANCE | метры [тип данных: число двойной точности] | Вычисляется на основе данных акселерометра и количества шагов. Не рассчитывайте количество шагов во время работы GPS, чтобы пользователи, отключившие сервисы геолокации, могли получать точные данные о количестве шагов. |
| СКОРОСТЬ | [метры / секунда] [Тип данных: число двойной точности] | |
| CALORIES_DAILY | ккал [Тип данных: число двойной точности] | Калории за день, включая активные калории и BMR. При расчете количества калорий учитываются рост, вес, возраст и пол пользователя, указанные в системных настройках. Калории не корректируются в соответствии с данными профиля пользователя, собранными в вашем приложении. |
| RUNNING_STEPS (необязательно) | [Тип данных: Long] | Разница в количестве шагов во время тренировки и в другое время. Отслеживайте оба показателя одновременно. |
| WALKING_STEPS (необязательно) | [Тип данных: Long] | |
| ELEVATION_GAIN | метры [тип данных: число двойной точности] | Включает только положительные дельты высоты. |
| ELEVATION_LOSS | Метры [Тип данных: число двойной точности] | Включает только отрицательные дельты высоты. |
| FLOORS_DAILY | [Тип данных: число двойной точности] | Может быть представлен как "частичный" этаж. |
Цели дня для пассивного мониторинга
| Показатель | Ожидаемые данные | Примечания |
| STEPS_DAILY | [Тип данных: Long] | Количество шагов за день, включая шаги, сделанные во время паузы в тренировке, – это общее количество шагов, сделанных с момента последнего сброса. Ограничение сбрасывается в полночь. |
| FLOORS_DAILY | [Тип данных: число двойной точности] | Может быть представлено как "частичные" этажи лестниц. |
| CALORIES_DAILY | ккал [Тип данных: число двойной точности] | Калории за день, включая калории, сожженные в результате активности, и скорость метаболизма. |
| DISTANCE_DAILY | метры [тип данных: число двойной точности] | Рассчитывается на основе данных акселерометра или количества шагов. Не используйте для этого GPS, чтобы пользователи, отключившие сервисы геолокации, могли получать точные данные о количестве шагов. |
| DAILY_ELEVATION_GAIN | метры [тип данных: число двойной точности] | Включает только положительные дельты высоты. |
MeasureClient
Используйте MeasureClient, чтобы измерить пульс в определенный момент.
Ожидаемое поведение
MeasureClient и PassiveClient в чем-то похожи. Оба они предоставляют непакетную статистику здоровья, не связанную с упражнениями. Оба типа данных можно использовать для измерения пульса, но основное различие заключается в том, что MeasureClient включает доступность данных о пульсе, а PassiveClient – нет.
Типы данных
| Показатель | Ожидаемые данные | Примечания |
| HEART_RATE_BPM | Ударов в минуту. [Тип данных: Double] | Также включает доступность |
Поддерживаемые функции
Помимо типов данных о тренировках и пассивном мониторинге, устройства поддерживают дополнительные функции для запуска событий, таких как начало тренировки, и измерения состояния, например сна и бодрствования. Некоторые из этих функций существуют на всех устройствах, а другие – только на некоторых.
Триггеры событий
Все устройства поддерживают следующие распространенные триггеры:
- Цели дня по расстоянию и шагам
- Цели по шагам, расстоянию и продолжительности тренировок.
Другие устройства могут поддерживать более сложные триггеры событий. Вот несколько примеров:
- Подсчет кругов во время плавания
- Цели по сожженным калориям
- Цели тренировок для мгновенной скорости
Штаты
Все устройства поддерживают базовые функции состояния. Функциональность состояния относится к тому, находится ли пользователь в активном упражнении или нет.
Другие устройства могут поддерживать дополнительные состояния. Дополнительные функции состояния включают определение того, была ли тренировка автоматически приостановлена или автоматически возобновлена, а также когда пользователь бодрствует или спит.
Оповещения о состоянии здоровья при пассивном мониторинге
Некоторые устройства поддерживают оповещения о состоянии здоровья. Эти функции поддерживаются не на всех устройствах. Некоторые оповещения о состоянии здоровья включают обнаружение аномалий частоты сердечных сокращений или обнаружение падений.
Рекомендуем
- Примечание. Текст ссылки показывается, когда JavaScript отключен.
- Активные данные и упражнения
- Сервисы наблюдения за здоровьем в Wear OS