Usa datos sintéticos generados a partir de los Servicios de salud en Wear OS para probar tu app como si un ejercicio realmente estuviera sucediendo.
Si realizas pruebas en un emulador que ejecuta Wear OS 3 (nivel de API 30) o versiones posteriores, puedes usar los datos sintéticos que genera el emulador. Consulta la siguiente guía para obtener más información sobre las diferencias entre la generación de datos sintéticos para Wear OS 3 y versiones posteriores.
Cómo usar datos sintéticos en Wear OS 4 y versiones posteriores
Si realizas pruebas en un emulador que ejecuta Wear OS 4 (nivel de API 33) o versiones posteriores, puedes usar los datos sintéticos que genera el emulador para probar tu app. Esto presenta una serie de mejoras en la forma en que se generan los datos sintéticos en versiones anteriores de Wear OS:
La generación de datos sintéticos en Wear OS 4 y versiones posteriores está integrada en el ciclo de vida de la API de Servicios de salud. Esto significa que no se necesitan comandos adb para iniciar o detener el ejercicio. En su lugar, puedes iniciar o detener el ejercicio en la app como lo haría un usuario.
Se expandió la compatibilidad con los eventos de ejercicio: Puedes simular la recepción de eventos de pausa y reanudación automáticas, eventos de caída, detección de sueño y detección de golpes de golf.
Cómo usar el panel de sensores de los Servicios de salud
La actualización de funciones de Android Studio Koala (Canary) incluye un panel de sensores de Servicios de salud en Wear OS. El panel se puede usar para simular un dispositivo que tenga o no capacidades de sensores específicos, lo que es importante probar cuando se compilan apps de fitness en Wear OS.
También puedes usar el panel para cambiar los valores de las métricas y observar cómo se ajusta tu app.
Para abrir y usar el panel, haz lo siguiente:
- Crea o abre un dispositivo virtual de Android (AVD) y ejecuta tu app en el emulador.
- En el panel del emulador, selecciona Wear Health Services. Se abre el panel Wear Health Services, que muestra una lista de los sensores disponibles en diferentes dispositivos con Android.
Después de que se abra el panel, puedes hacer lo siguiente:
- Alterna entre Funciones estándar y Todas las funciones (predeterminada) para elegir el conjunto de funciones que se habilitarán durante el próximo ejercicio. Puedes habilitar o inhabilitar funciones individuales seleccionando las casillas de verificación. Selecciona Apply para enviar la lista actual de capacidades al dispositivo emulado y selecciona Reset para restablecer la lista de capacidades a sus valores de activación y desactivación predeterminados.
- Activa diferentes eventos de usuario después de seleccionar el botón del menú desplegable Trigger events. Desde aquí, puedes activar la pausa o la reanudación automática de las actividades de fitness, activar los eventos de sueño del usuario y activar los golpes de golf que el usuario realiza en un campo de golf o de minigolf.
- Anula los valores del sensor después de comenzar un ejercicio en una app que esté instalada en el emulador. Después de ingresar valores nuevos para diferentes métricas de ejercicio, selecciona Apply para sincronizar estos valores con el emulador. Esto es útil para probar cómo tu app controla las diferentes condiciones de ejercicio y las tendencias de fitness de los usuarios.
Genera datos sintéticos con el emulador
También puedes ejecutar tu app sin el panel de sensores y hacer que el emulador genere datos automáticamente.
Usa los controles integrados en la app para iniciar, pausar y finalizar la generación de datos sintéticos.
También ten en cuenta que el emulador genera los mismos valores de datos para cada ejercicio.
Cómo simular eventos
Puedes simular varios eventos en el emulador, como AUTO_PAUSE_DETECTED
.
Puedes usar el siguiente comando para activar esos eventos:
adb shell am broadcast -a "whs.event-key" com.google.android.wearable.healthservices
Eventos sintéticos
Evento |
Clave |
---|---|
Se detectó la pausa automática |
|
Se detectó la función de reanudación automática |
|
Se detectó una caída |
|
Se detectó que el dispositivo está en modo de suspensión |
|
Se detectó una detención del modo de suspensión |
|
Se detectó un tiro de golf |
|
Por ejemplo, puedes usar el siguiente comando para activar un evento de pausa automática:
adb shell am broadcast -a "whs.AUTO_PAUSE_DETECTED" com.google.android.wearable.healthservices
En el caso de los eventos de golpes de golf, debes especificar parámetros adicionales para el tipo de swing de golpe de golf, que se describen a continuación:
Tipo de swing de tiro de golf |
Parámetro |
---|---|
Tipo de golpe de putt |
putt |
Tipo de columpio parcial |
parcial |
Tipo de columpio completo |
completo |
Agrega el tipo de swing de golpe de golf después de especificar el evento de golpe de golf:
adb shell am broadcast -a "whs.GOLF_SHOT" --es golf_shot_swing_type \ "golf-swing-type-parameter" com.google.android.wearable.healthservices
Por ejemplo, el siguiente comando activa un tiro de golf parcial:
adb shell am broadcast -a "whs.GOLF_SHOT" --es golf_shot_swing_type "partial" \ com.google.android.wearable.healthservices
Cómo usar datos sintéticos en Wear OS 3
Si realizas pruebas en un emulador que ejecuta Wear OS 3, también puedes usar datos sintéticos para probar tu app.
Habilita la generación de datos sintéticos
Completa los siguientes pasos para habilitar la generación de datos sintéticos en Wear OS 3.
- Habilita las opciones para desarrolladores.
Emite el siguiente comando
adb
para habilitar el modo sintético:adb shell am broadcast \ -a "whs.USE_SYNTHETIC_PROVIDERS" \ com.google.android.wearable.healthservices
Una vez que se habilita la generación de datos sintéticos, emite los comandos que se describen en esta página para controlar el comportamiento del "usuario sintético".
Cómo inhabilitar la generación de datos sintéticos
Para volver a usar sensores reales, ejecuta el siguiente comando:
adb shell am broadcast \
-a "whs.USE_SENSOR_PROVIDERS" \
com.google.android.wearable.healthservices
Ejercicios sintéticos
Los Servicios de salud admiten los siguientes tipos de ejercicio:
- Caminar:
whs.synthetic.user.START_WALKING
- Correr:
whs.synthetic.user.START_RUNNING
- Hacer senderismo:
whs.synthetic.user.START_HIKING
- Nadar:
whs.synthetic.user.START_SWIMMING
- Correr en una cinta:
whs.synthetic.user.START_RUNNING_TREADMILL
Los ejercicios generan datos sintéticos realistas para los siguientes tipos de datos:
- Frecuencia cardíaca
- Recuento de pasos por minuto
- Ubicación GPS (con una única ruta predeterminada)
- Duración de la actividad
- Elevación y pisos
Además, se pueden generar los siguientes estados:
- Estado de sueño (dormido o despierto)
- Detección de caídas
Inicio
Para comenzar a simular un ejercicio, emite la transmisión correspondiente a com.google.android.wearable.healthservices
:
# start the "walking" synthetic exercise
$ adb shell am broadcast \
-a "whs.synthetic.user.START_WALKING" \
com.google.android.wearable.healthservices
Cada actividad tiene ajustes predeterminados para las métricas admitidas:
Actividad | Frecuencia cardíaca | Velocidad promedio | Cambio de elevación | Usar ubicación |
---|---|---|---|---|
Caminar | 120 ppm | 1.4 m/seg | 20 m/min | verdadero |
Correr | 170 ppm | 2.3 m/seg | 20 m/min | verdadero |
Hacer senderismo | 150 ppm | 1.3 m/seg | 20 m/min | verdadero |
Nadar | 150 ppm | 1.6 m/seg | 0.0 m/min | verdadero |
Correr en una cinta | 160 ppm | 2.3 m/seg | 20 m/min | falso |
Detener
Para detener la actividad sintética, usa el siguiente comando:
adb shell am broadcast \
-a "whs.synthetic.user.STOP_EXERCISE" \
com.google.android.wearable.healthservices
Personalizada
Para obtener un control más preciso sobre las métricas que se generan, inicia una actividad física personalizada con la string de acción whs.synthetic.user.START_EXERCISE
.
Proporciona cualquier combinación de las siguientes marcas:
--ei exercise_options_duration_secs <int>
: Duración del ejercicio en segundos. Valor predeterminado:0
.--ei exercise_options_heart_rate <int>
: Frecuencia cardíaca en pulsaciones por minuto. Promedio:70
.--ef exercise_options_average_speed <float>
: Velocidad promedio en metros por segundo. También afecta los pasos por minuto o la cadencia. Valor predeterminado:0
.--ez exercise_options_use_location <boolean>
: Indica si se deben emitir datos de ubicación durante el ejercicio (con una ruta predeterminada). Valor predeterminado:false
.--ef exercise_options_max_elevation_rate <float>
: Tasa de cambio de elevación máxima posible en metros por minuto. Valor predeterminado:0
.
Por ejemplo, configura las opciones de ejercicio de la siguiente manera:
adb shell am broadcast \
-a "whs.synthetic.user.START_EXERCISE" \
--ei exercise_options_heart_rate 90 \
--ef exercise_options_average_speed 1.2 \
--ez exercise_options_use_location true \
com.google.android.wearable.healthservices
También puedes cambiar los tipos de datos disponibles, sin importar si el hardware real o el emulado admite un tipo de datos en particular. Por ejemplo, puedes habilitar o inhabilitar la elevación absoluta, como se muestra en el siguiente fragmento:
# enable synthetic mode and enable absolute elevation
$ adb shell am broadcast \
-a "whs.CONFIGURE_SYNTHETIC_DEVICE" \
--ez absolute_elevation true \
com.google.android.wearable.healthservices
# enable synthetic mode and disable absolute elevation
$ adb shell am broadcast \
-a "whs.CONFIGURE_SYNTHETIC_DEVICE" \
--ez absolute_elevation false \
com.google.android.wearable.healthservices
Otros estados y eventos
Estado de sueño
También puedes activar los estados de sueño para el usuario sintético. Se admiten dos estados: dormido y despierto.
Para ingresar al estado dormido, ejecuta este comando:
adb shell am broadcast \
-a "whs.synthetic.user.START_SLEEPING" \
com.google.android.wearable.healthservices
Para ingresar al estado despierto, ejecuta este comando:
adb shell am broadcast \
-a "whs.synthetic.user.STOP_SLEEPING" \
com.google.android.wearable.healthservices
Detección de caídas
Para simular una caída, ejecuta este comando:
adb shell am broadcast \
-a "whs.synthetic.user.FALL_OVER" \
com.google.android.wearable.healthservices
Los Servicios de salud pueden tardar hasta un minuto en enviar el evento de caída.
Recomendaciones para ti
- Nota: El texto del vínculo se muestra cuando JavaScript está desactivado
- SourceType
- ArithmeticExpression
- ListConfiguration