Улучшите совместимость приложений на устройствах Wear OS.

API Wear Health Services (WHS) является обязательным компонентом для всех устройств под управлением Wear OS 3 и более поздних версий, поскольку он обеспечивает согласованную поверхность интеграции для разработчиков приложений для здоровья и фитнеса. Создайте свое приложение так, чтобы оно корректно адаптировалось ко многим устройствам и их различным возможностям, чтобы обеспечить совместимость между устройствами и избежать проблем с взаимодействием с пользователем. Для этого объявляйте зависимости только для клиентов, которые использует ваше приложение. Кроме того, дайте вашему приложению возможность отображать или удалять дополнительные расширенные метрики в зависимости от их доступности.

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

В этом руководстве описываются ожидаемое поведение и типы данных, поддерживаемые различными клиентами в Wear Health Services.

Клиент упражнений

В следующих разделах описывается ожидаемое поведение и типы данных ExerciseClient .

Ожидаемое поведение

Для ExerciseClient некоторые типы упражнений зависят от доступности определенных типов данных. Например, упражнения на колясках доступны только в том случае, если поддерживаются толкания на колясках. Включайте и отключайте эти параметры в зависимости от их доступности на данном устройстве.

Большинство типов данных упражнений выбираются и доставляются с интервалом в одну секунду, за некоторыми исключениями:

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

Доставка данных может быть потоковой или пакетной. Данные передаются в потоковом режиме, когда процессор приложения включен, что обычно происходит, когда дисплей включен и является интерактивным. Как только дисплей выключается или переходит в режим окружающей среды (включен, но неинтерактивен), данные группируются в целях экономии энергии. Пакетированные данные доставляются в приложение либо при повторном включении процессора приложения, либо из-за выхода часов из окружающего режима, либо когда буферы для пакетной обработки заполнены, что зависит от устройства. Частота дискретизации остается неизменной, пока устройство находится в режиме окружающей среды, поэтому доставленная партия по-прежнему содержит высокочастотные точки данных.

Типы данных определяются исключительно на основе данных, генерируемых датчиками часов. Например, данные о местоположении поступают исключительно с часов, а не с телефона.

Типы данных

API-интерфейс ExerciseClient позволяет запускать, приостанавливать, возобновлять и останавливать тренировки разных типов. Для каждого упражнения WHS определяет набор типов данных, которые доступны вам для этого типа упражнения. Это экономит электроэнергию и упрощает логику вашего приложения, поскольку датчики, которые не требуются для данного упражнения, не включаются. Например, в начале пробежки данные о местоположении предоставляются и отслеживаются только для пробежки на открытом воздухе. При запуске велосипедного упражнения шаги не предусмотрены и не отслеживаются. В следующих разделах представлено описание типов данных, которые поддерживаются в ExerciseClient .

Гарантированные типы данных упражнений

Следующие типы данных упражнений доступны на всех устройствах.

  • Примеры типов данных имеют соответствующий тип данных _STATS, который возвращает минимальное, максимальное и среднее значения из упражнения. Например, статистику PACE можно получить с помощью типа данных PACE_STATS.
  • Типы данных интервала имеют соответствующий тип данных _TOTAL, который возвращает совокупное значение упражнения. Например, статистику DISTANCE можно получить с помощью типа данных DISTANCE_TOTAL.
Метрика Ожидаемые данные Примечания относительно ожидаемого поведения
HEART_RATE_BPM Ударов в минуту [DataType: Double] Все устройства измеряют частоту пульса один раз в секунду во время тренировки. Некоторые устройства сообщают значение BPM каждую секунду. Некоторые устройства сообщают BPM только в том случае, если он изменился по сравнению с предыдущим значением. Не ждите, что вы будете получать значение BPM каждые одну секунду на всех устройствах.
РАСПОЛОЖЕНИЕ Широта и долгота [DataType: Double] Данные о местоположении основаны только на GPS часов. Не ожидайте, что данные о местоположении будут поступать от Fused Location Provider или других служб Android). Каждая точка данных также включает значение точности (также известное как ошибка горизонтального положения) и доступность.
ШАГИ [Тип данных: Длинный] Количество шагов представляет собой промежуточный итог за все время упражнения, не включая время, когда упражнение было приостановлено.
РАССТОЯНИЕ Метры [Тип данных: Двойной] Рассчитывается на основе местоположения на основе GPS, если оно доступно, и на основе шагов в противном случае. Под суммой понимается сумма за все время упражнения, не включая время, когда упражнение было приостановлено.
СКОРОСТЬ [метры в секунду] [Тип данных: двойной] Возвращает минимальное, максимальное и среднее значения. Они относятся к продолжительности упражнения, не считая времени, когда упражнение было приостановлено.
ШАГ [секунды/метр] [Тип данных: двойной] Значение по умолчанию — 0, если скорость равна 0. Средние значения относятся к продолжительности упражнения, не включая время, когда упражнение было приостановлено.
ELEVATION_GAIN Метры. [Тип данных: Двойной] Положительные изменения высоты. Общее количество сообщается за все время тренировки, не включая время, когда упражнение было приостановлено.
TOTAL_CALORIES кКал [Тип данных: Двойной] Сожженные активные калории добавляются к базовому уровню метаболизма. Количество калорий, выделяемых здесь, учитывает рост, вес, возраст и пол пользователя, указанные в настройках системы. В калориях не учитываются данные профиля пользователя, собранные в вашем приложении. Общая сумма указана за весь период учений, не включая время, когда учения были приостановлены.

Дополнительные типы данных упражнений

Следующий список типов данных доступен только на определенных устройствах. Полный список типов данных см. в справочнике по Jetpack. Если тип данных отсутствует в предыдущем списке «обязательных/гарантированных», то он является необязательным.

См. следующие примеры необязательных типов данных. Этот список не является исчерпывающим:

Метрика Ожидаемые данные Примечания относительно ожидаемого поведения
ABSOLUTE_ELEVATION [Тип данных: Двойной]
ELEVATION_LOSS Метры [Тип данных: Двойной] Негативные изменения высоты. Значение положительное. Например, потеря высоты на 1 м возвращается как 1, а не -1.
STEPS_PER_MINUTE [Тип данных: Длинный]
КОЛЕСО_PUSHES [Тип данных: Длинный] Подсчет толчков на инвалидной коляске для использования в упражнениях на инвалидной коляске.
REP_COUNT [Тип данных: Длинный]
SWIM_STROKE_COUNT [Тип данных: Длинный]
SWIM_LAP_COUNT [Тип данных: Длинный]

Типы данных для каждого упражнения

Для каждого типа упражнения возвращаются разные типы данных. Типы возвращаемых данных соответствуют потребностям упражнения. Например, тип упражнения BIKING не возвращает тип данных STEPS. Используйте метод Capabilities во время выполнения, чтобы определить, какие типы данных поддерживаются на устройстве пользователя.

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

Вот несколько примеров:

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

Клиент пассивного мониторинга

Следующие типы данных необходимы для всех устройств под управлением Wear OS для поддержки приложений, которые пассивно отслеживают данные о состоянии здоровья, такие как частота пульса и количество шагов. Каждый из этих типов данных должен быть получен исключительно на основе данных, генерируемых датчиками часов.

Ожидаемое поведение

Для экономии энергии показания датчиков, полученные с помощью пассивного мониторинга, сохраняются в MCU и группируются в службы здравоохранения. Эти пакетные результаты возвращаются через разные промежутки времени в зависимости от поведения системы. Некоторые примеры включают возврат пакетов, когда буферы датчиков заполнены или когда пользователь взаимодействует с дисплеем.

Не предполагайте каких-либо предопределенных или предсказуемых интервалов пакетной обработки для любых типов данных.

Типы данных пассивного мониторинга

Метрика Ожидаемые данные Примечания
HEART_RATE_BPM Ударов в минуту [Тип данных: Двойной] Устройства могут возвращать показания сердечного ритма через разные промежутки времени. Некоторые устройства могут выполнять чтение каждую секунду. Другие устройства могут снимать показания каждые десять минут. Эти интервалы недоступны приложениям. Приложения должны корректно адаптироваться к различным интервалам выборки.
STEPS_DAILY/ШАГИ [Тип данных: Длинный] Шаги за день — это общее количество шагов, пройденных с момента последнего сброса, который инициируется WHS в полночь. Сюда входят любые шаги, предпринятые во время паузы активного упражнения. Шаги — это детальная разница с момента последней проверки.
DISTANCE_DAILY/DISTANCE метры [Тип данных: Двойной] Рассчитывается по акселерометру/шагам. Не производите расчеты во время GPS, чтобы пользователи, отключившие службы определения местоположения, могли получать точные данные о шагах.
СКОРОСТЬ [метры в секунду] [Тип данных: двойной]
CALORIES_DAILY кКал [Тип данных: Двойной] Калории на день, включая активные калории и BMR. Приведенное здесь значение калорий учитывает рост, вес, возраст и пол пользователя, указанные в настройках системы. Калории не корректируются в соответствии с данными профиля пользователя, собранными в вашем приложении.
RUNNING_STEPS (необязательно) [Тип данных: Длинный] Дельта шагов как во время упражнения, так и в других случаях. Отслеживайте оба одновременно.
WALKING_STEPS (необязательно) [Тип данных: Длинный]
ELEVATION_GAIN метры [Тип данных: Двойной] Включает только положительные отклонения по высоте.
ELEVATION_LOSS метры [Тип данных: Двойной] Включает только отрицательные дельты высоты.
FLOORS_DAILY [Тип данных: Двойной] Могут быть представлены как «частичные» этажи

Пассивный мониторинг ежедневных целей

Метрика Ожидаемые данные Примечания
ШАГИ_ЕЖЕДНЕВНО [Тип данных: Длинный] Шаги за день, включая любые шаги, пройденные во время паузы в активном упражнении, представляют собой общее количество шагов, пройденных с момента последнего сброса. WHS сбрасывается в полночь.
FLOORS_DAILY [Тип данных: Двойной] Могут быть представлены как «неполные» этажи лестницы.
CALORIES_DAILY ккал [тип данных: двойной] Калории на день, включая активные калории и BMR.
DISTANCE_DAILY метры [Тип данных: Двойной] Рассчитывается на основе акселерометра или количества шагов. Не рассчитывайте это значение с помощью GPS, чтобы пользователи, отключившие службы определения местоположения, могли получать точные данные о шагах.
DAILY_ELEVATION_GAIN метры [Тип данных: Двойной] Включает только положительные отклонения по высоте.

МераКлиент

Используйте MeasureClient для измерения частоты пульса в данный момент.

Ожидаемое поведение

MeasureClient и PassiveClient в некотором смысле похожи. Оба они предоставляют негруппированную статистику здоровья, не связанную с упражнением. Вы можете использовать оба варианта для измерения частоты пульса, но основное отличие состоит в том, что MeasureClient включает доступность данных о частоте пульса, а PassiveClient не включает информацию о доступности.

Типы данных

Метрика Ожидаемые данные Примечания
HEART_RATE_BPM Ударов в минуту [Тип данных: Двойной] Также включает наличие

Поддерживаемые функции

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

Триггеры событий

Все устройства поддерживают следующие общие триггеры:

  • Ежедневные цели по расстоянию и шагам
  • Цели упражнений по шагам, расстоянию и продолжительности.

Другие устройства могут поддерживать более сложные триггеры событий. Некоторые примеры включают следующее:

  • Подсчет кругов во время плавания
  • Цели упражнений для сжигания калорий
  • Цели упражнений для мгновенной скорости

Штаты

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

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

Оповещения о состоянии здоровья при пассивном мониторинге

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

{% дословно %} {% дословно %} {% дословно %} {% дословно %}