Cómo mejorar la compatibilidad de apps en dispositivos Wear OS

La API de Servicios de salud (WHS) de Wear es un componente obligatorio para todos los dispositivos que ejecutan Wear OS 3 y versiones posteriores, ya que proporciona una plataforma de integración coherente para los desarrolladores de salud y fitness. Compila tu app para que se adapte, de forma correcta, a muchos dispositivos y a sus diferentes funciones para mantener la compatibilidad entre dispositivos y evitar problemas con la experiencia del usuario. Con ese fin, declara las dependencias solo para los clientes que usa tu app. Además, permite que tu app tenga la flexibilidad de mostrar o quitar métricas avanzadas opcionales, según su disponibilidad.

Los diferentes sensores generan datos con frecuencias distintas que varían según el dispositivo en función de la plataforma de hardware y de sensores subyacentes. Por ejemplo, un dispositivo puede mostrar la frecuencia cardíaca en una marca de tiempo y la ubicación en otra. Crea apps que puedan recibir flujos de datos independientes en marcas de tiempo diferentes o en marcas de tiempo superpuestas.

En esta guía, se describen los comportamientos previstos y los tipos de datos que admiten varios clientes en los Servicios de salud de Wear (WHS).

ExerciseClient

En las siguientes secciones, se describen los comportamientos previstos y los tipos de datos de ExerciseClient.

Comportamientos previstos

Para ExerciseClient, algunos tipos de ejercicio dependen de la disponibilidad de ciertos tipos de datos. Por ejemplo, los ejercicios para silla de ruedas solo están disponibles si se admiten impulsos en silla de ruedas. Habilita e inhabilita estas opciones, según su disponibilidad en un dispositivo determinado.

La mayoría de los tipos de datos de ejercicio se muestrean y entregan en intervalos de un segundo, con algunas excepciones, como las siguientes:

  • En determinadas situaciones, algunos tipos de datos de ejercicio se actualizan más de una vez por segundo. Por ejemplo, cuando el usuario está corriendo, el recuento de pasos se actualiza más de una vez por segundo.
  • Para algunos tipos de datos, se entrega una actualización solo si el valor actual es diferente del anterior.

Los datos se pueden entregar con una transmisión o en lotes. Los datos se transmiten mientras el procesador de la aplicación está encendido, que suele ser el momento en el que la pantalla está encendida y se puede interactuar con esta. Una vez que la pantalla se apaga o ingresa al modo ambiente (está encendida, pero no se puede interactuar con ella), los datos se agrupan en lotes para ahorrar energía. Los datos en lotes se entregan a la aplicación cuando el procesador se vuelve a encender, ya sea porque el reloj sale del modo ambiente, o cuando los búferes para la agrupación en lotes están completos, lo que varía según el dispositivo. La tasa de muestreo permanece igual mientras el dispositivo está en modo ambiente, por lo que un lote que se entrega aún tiene datos de alta frecuencia.

Los tipos de datos solo provienen de los datos que generan los sensores en el reloj. Por ejemplo, los datos de ubicación provienen completamente del reloj y no del teléfono.

Tipos de datos

La API de ExerciseClient te permite iniciar, pausar, reanudar y detener entrenamientos de distintos tipos. Para cada ejercicio, los WHS definen un conjunto de tipos de datos que están disponibles para ese tipo de ejercicio. De este modo, se ahorra energía y se simplifica la lógica de tu app, ya que no se activan los sensores que no son necesarios para un ejercicio determinado. Por ejemplo, cuando comienzas a correr, solo se proporcionan datos de ubicación y se realiza un seguimiento de estos para cuando corres al aire libre. Cuando inicias un ejercicio en bicicleta, no se proporcionan datos de pasos ni se realiza un seguimiento de estos. En las siguientes secciones, se proporciona una descripción de los tipos de datos compatibles con ExerciseClient.

Tipos de datos de ejercicio garantizados

Los siguientes tipos de datos de ejercicio están disponibles en todos los dispositivos.

  • Los tipos de datos de muestra tienen un tipo de datos _STATS correspondiente que muestra valores mínimos, máximos y promedios del ejercicio. Por ejemplo, las estadísticas de PACE se pueden extraer con el tipo de datos PACE_STATS.
  • Los tipos de datos de intervalos tienen un tipo de datos _TOTAL correspondiente que muestra el valor acumulativo del ejercicio. Por ejemplo, las estadísticas de DISTANCE se pueden extraer con el tipo de datos DISTANCE_TOTAL.
Métrica Datos previstos Notas sobre los comportamientos previstos
HEART_RATE_BPM Pulsaciones por minuto [Tipo de datos: Double] Todos los dispositivos registran la frecuencia cardíaca una vez por segundo durante un ejercicio. Algunos dispositivos informan un valor de ppm cada segundo. Algunos dispositivos solo informan el valor de ppm cuando es diferente al valor anterior. No esperes recibir un valor de ppm en cada intervalo de un segundo en todos los dispositivos.
LOCATION Latitud y longitud [Tipo de datos: Double] Los datos de ubicación solo se basan en el GPS del reloj. No esperes que los datos de ubicación provengan del proveedor de ubicación combinada o de otros servicios de Android. Cada dato también incluye disponibilidad y un valor de precisión (también conocido como error de posición horizontal).
STEPS [Tipo de datos: Long] El recuento de pasos es un total activo durante el ejercicio, sin incluir el tiempo en el que este se pausó.
DISTANCE Metros [Tipo de datos: Double] Se calcula a partir de la ubicación basada en el GPS cuando está disponible o, de lo contrario, a partir de los pasos. El término "total" hace referencia al total durante el ejercicio, sin incluir el tiempo en el que este se pausó.
SPEED [Metros/segundo] [Tipo de datos: Double] Muestra valores mínimos, máximos y promedios. Estos valores se informan durante el ejercicio, sin incluir el tiempo en el que este se pausó.
PACE [segundos/metro] [Tipo de datos: Double] El valor predeterminado es 0 si la velocidad es 0. Los promedios se informan durante el ejercicio, sin incluir el tiempo en el que este se pausó.
ELEVATION_GAIN Metros [Tipo de datos: Double] Cambios positivos en la elevación. El total se informa durante el ejercicio, sin incluir el tiempo en el que este se pausó.
TOTAL_CALORIES kcal [Tipo de datos: Double] Calorías activas quemadas que se agregan a la tasa metabólica basal. Las calorías emitidas aquí tienen en cuenta la altura, el peso, la edad y el género del usuario, como se especifica en la configuración del sistema. Las calorías no tienen en cuenta los datos de perfil del usuario recopilados en tu app. El total se informa durante el ejercicio, sin incluir el tiempo en el que este se pausó.

Tipos de datos de ejercicio opcionales

La siguiente lista de tipos de datos está disponible solo en algunos dispositivos. Consulta la referencia de Jetpack para obtener una lista completa de DataTypes. Si un DataType no está en la lista anterior de tipos de datos "obligatorios/garantizados", es opcional.

Consulta los siguientes ejemplos de tipos de datos opcionales. La siguiente lista no es exhaustiva:

Métrica Datos previstos Notas sobre los comportamientos previstos
ABSOLUTE_ELEVATION [Tipo de datos: Double]
ELEVATION_LOSS Metros [Tipo de datos: Double] Cambios negativos en la elevación. El valor es positivo. Por ejemplo, una pérdida de elevación de 1 m se muestra como 1, no como -1.
STEPS_PER_MINUTE [Tipo de datos: Long]
WHEELCHAIR_PUSHES [Tipo de datos: Long] Recuento de impulsos en silla de ruedas para su uso en ejercicios basados en estas sillas.
REP_COUNT [Tipo de datos: Long]
SWIM_STROKE_COUNT [Tipo de datos: Long]
SWIM_LAP_COUNT [Tipo de datos: Long]

Tipos de datos por ejercicio

Se muestran diferentes tipos de datos para cada tipo de ejercicio. Los tipos de datos que se muestran son coherentes con las necesidades del ejercicio. Por ejemplo, el tipo de ejercicio en BICICLETA no muestra el tipo de datos STEPS. Usa el método Capabilities en el entorno de ejecución para determinar los tipos de datos que admite el dispositivo del usuario.

Como mínimo, todos los tipos de ejercicios muestran datos sobre la frecuencia cardíaca y las calorías. Otros ejercicios pueden admitir tipos de datos adicionales, según los requisitos del ejercicio.

Estos son algunos ejemplos:

  • Algunos ejercicios, como meditación o pilates, solo admiten la frecuencia cardíaca y las calorías.
  • Los ejercicios, como básquetbol o bádminton, admiten la frecuencia cardíaca, las calorías, la distancia y los pasos.
  • Algunos ejercicios, como caminar y correr, admiten la frecuencia cardíaca, las calorías, la distancia, los pasos, la velocidad y el ritmo.
  • La natación admite la frecuencia cardíaca, las calorías, la distancia y las vueltas en la piscina.

Cliente de supervisión pasiva

Los siguientes tipos de datos son obligatorios para todos los dispositivos que ejecutan Wear OS a fin de admitir apps que supervisan, de forma pasiva, datos de salud, como la frecuencia cardíaca y el recuento de pasos. Cada uno de estos tipos de datos debe solo provenir de datos generados por sensores en el reloj.

Comportamientos previstos

Para conservar energía, las lecturas del sensor que se obtienen con la supervisión pasiva se almacenan en el MCU y se agrupan en lotes en los Servicios de salud. Estos resultados en lotes se muestran en intervalos diferentes, según el comportamiento del sistema. Algunos ejemplos incluyen lotes que se muestran cuando los búferes del sensor están llenos o cuando el usuario interactúa con la pantalla.

No supongas ningún intervalo en lotes predefinido ni predecible para ningún tipo de datos.

Tipos de datos de supervisión pasiva

Métrica Datos previstos Notas
HEART_RATE_BPM Pulsaciones por minuto [Tipo de datos: Double] Los dispositivos pueden mostrar lecturas de la frecuencia cardíaca en diferentes intervalos. Es posible que algunos dispositivos realicen lecturas cada segundo; otros lo pueden hacer cada diez minutos. Estos intervalos no están disponibles para las apps. Estas deben adaptarse, de forma correcta, a los diferentes intervalos de muestreo.
STEPS_DAILY/STEPS [Tipo de datos: Long] Los pasos diarios son la cantidad total de pasos que se realizaron desde la última vez que se restableció el recuento y que los WHS activan a la medianoche. Incluye cualquier paso que se realice mientras un ejercicio activo está en pausa. Los pasos son un delta detallado desde la última verificación.
DISTANCIA_DIARIA/DISTANCIA Metros [Tipo de datos: Double] Se calcula a partir del acelerómetro o los pasos. No realices cálculos cuando se usa el GPS para asegurarte de que los usuarios que hayan desactivado los servicios de ubicación puedan continuar recibiendo recuentos precisos de pasos.
SPEED [Metros/segundo] [Tipo de datos: Double]
CALORIES_DIARIAS kcal [Tipo de datos: Double] Calorías del día, incluidas las activas y las tasas metabólica basal (BMR). La cifra de calorías emitidas aquí tiene en cuenta la altura, el peso, la edad y el género del usuario, como se especifica en la configuración del sistema. Las calorías no se ajustan de acuerdo con los datos de perfil del usuario recopilados en tu app.
RUNNING_STEPS (opcional) [Tipo de datos: Long] Delta de pasos durante un ejercicio y cualquier otra actividad. Realiza un seguimiento de dos actividades a la vez.
WALKING_STEPS (opcional) [Tipo de datos: Long]
ELEVATION_GAIN Metros [Tipo de datos: Double] Incluye solo los deltas positivos en la elevación.
ELEVATION_LOSS Metros [Tipo de datos: Double] Incluye solo los deltas negativos en la elevación.
MULTIPLO.INFERIOR_DIARIO [Tipo de datos: Double] Se pueden representar como pisos "parciales".

Objetivos diarios de supervisión pasiva

Métrica Datos previstos Notes
PASOS_DIARIAS [Tipo de datos: Long] Los pasos diarios, incluidos los que se realicen mientras un ejercicio activo está en pausa, son la cantidad total de pasos que se hicieron desde la última vez que se restableció el recuento. Los WHS se restablecen a medianoche.
MULTIPLO.INFERIOR_DIARIO [Tipo de datos: Double] Se pueden representar como pisos "parciales" de escaleras.
CALORIES_DIARIAS kcal [Tipo de datos: Double] Calorías del día, incluidas las calorías activas y las BMR.
DISTANCIA_DAILY Metros [Tipo de datos: Double] Se calculan a partir del acelerómetro o del recuento de pasos. No realices cálculos con el GPS, de modo que los usuarios que hayan desactivado los servicios de ubicación puedan continuar recibiendo recuentos precisos de pasos.
DAILY_ELEVATION_GAIN Metros [Tipo de datos: Double] Incluye solo los deltas positivos en la elevación.

MeasureClient

Usa MeasureClient para medir la frecuencia cardíaca en un momento determinado.

Comportamientos previstos

MeasureClient y PassiveClient son similares de alguna manera. Ambos objetos proporcionan estadísticas de salud que no están agrupadas en lotes ni se relacionan con un ejercicio. Puedes usar ambos para medir la frecuencia cardíaca, pero la diferencia principal es que MeasureClient incluye la disponibilidad de datos de frecuencia cardíaca, pero PassiveClient no incluye la información de disponibilidad.

Tipos de datos

Métrica Datos previstos Notas
HEART_RATE_BPM Pulsaciones por minuto [Tipo de datos: Double] También incluye la disponibilidad.

Funciones admitidas

Además de los tipos de datos de ejercicios y los tipos de datos de supervisión pasiva, los dispositivos admiten funciones adicionales para activar eventos, por ejemplo, iniciar un ejercicio y medir el estado, como dormido frente a despierto. Algunas de estas funciones existen en todos los dispositivos y otras solo en algunos.

Activadores de eventos

Todos los dispositivos admiten los siguientes activadores comunes:

  • Objetivos diarios para distancia y pasos
  • Objetivos de ejercicio para pasos, distancia y duración

Otros dispositivos pueden admitir activadores de eventos más avanzados. Estos son algunos ejemplos:

  • Recuento de vueltas al nadar
  • Objetivos de entrenamiento para calorías quemadas
  • Objetivos de entrenamiento para velocidad instantánea

Estados

Todos los dispositivos son compatibles con la funcionalidad de estado básica. La funcionalidad de estado se refiere a si un usuario está actualmente en un ejercicio activo o no.

Otros dispositivos pueden proporcionar funciones de estado adicionales. Algunas funciones de estado adicionales incluyen detectar si un ejercicio se pausó o reanudó automáticamente, o si el usuario está despierto o dormido.

Alertas de salud en la supervisión pasiva

Algunos dispositivos admiten alertas de salud. Estas funciones no son compatibles con todos los dispositivos. Algunas alertas de salud incluyen detectar anomalías en la frecuencia cardíaca o caídas.