Los Servicios de salud admiten ExerciseEvents
, que notifican a tu app cuando se produjo un evento durante un ejercicio y proporcionan metadatos asociados.
Cómo agregar dependencias
Para usar eventos de ejercicio, se requiere la versión más reciente del SDK de Health Services.
Para agregar una dependencia en los Servicios de salud, debes agregar el repositorio de Maven de Google a tu proyecto. Para obtener información relacionada, consulta el repositorio de Maven de Google.
Luego, en el archivo build.gradle
a nivel del módulo, agrega la siguiente dependencia:
Groovy
dependencies { implementation "androidx.health:health-services-client:1.1.0-alpha05" }
Kotlin
dependencies { implementation("androidx.health:health-services-client:1.1.0-alpha05") }
Cómo verificar las funciones
Al igual que con todos los ejercicios y tipos de datos en los Servicios de Salud, verifica las capacidades al inicio. En el caso de ExerciseEvents
en particular, además de solicitar ExerciseCapabilities
, usa ExerciseTypeCapabilities.supportedExerciseEvents
para verificar qué eventos de ejercicio se admiten para el ejercicio determinado.
Después de confirmar que se admite el ExerciseEvent
en particular, también debes consultar las capacidades del evento de ejercicio con getExerciseEventCapabilityDetails
.
En el siguiente ejemplo, se muestra cómo consultar las capacidades para confirmar que se admite GOLF_SHOT_EVENT
y, luego, confirmar que GOLF_SHOT_EVENT
admite la clasificación de tipo de swing.
fun handleCapabilities(capabilities: ExerciseCapabilities) {
val golfCapabilities = capabilities.typeToCapabilities[ExerciseType.GOLF]
val golfShotEventSupported =
golfCapabilities
?.supportedExerciseEvents
?.contains(ExerciseEventType.GOLF_SHOT_EVENT)
val golfSwingTypeClassificationSupported =
golfCapabilities
?.getExerciseEventCapabilityDetails(ExerciseEventType.GOLF_SHOT_EVENT)
?.isSwingTypeClassificationSupported ?: false
}
Solicita eventos de ejercicio en un ejercicio
Para iniciar el ejercicio y solicitar un evento de ejercicio como parte de este, declara el ExerciseConfig
para el ejercicio y agrega un campo para exerciseEventType
.
En el siguiente ejemplo, se solicita GOLF_SHOT_EVENT
como parte de un ejercicio de GOLF
:
val config = ExerciseConfig(
exerciseType = ExerciseType.GOLF,
dataTypes = setOf(....),
// ...
exerciseEventTypes = setOf(ExerciseEventType.GOLF_SHOT_EVENT),
)
Cómo registrarse para recibir actualizaciones de eventos de ejercicio
Puedes recibir actualizaciones de ExerciseEvent
como parte de la infraestructura existente que tiene tu app para recibir actualizaciones de ejercicio.
En el siguiente ejemplo, se muestra cómo incorporar la compatibilidad con las actualizaciones de GolfShotEvent
:
val callback = object : ExerciseUpdateCallback {
override fun onExerciseUpdateReceived(update: ExerciseUpdate) {
...
}
// [ExerciseEvent] intended to come through with low latency and out of
// band of onExerciseUpdateReceived()
override fun onExerciseEventReceived(event: ExerciseEvent) {
when (event) {
is GolfShotEvent -> {
if (it.swingType == GolfShotSwingType.PUTT) {
println("Putt detected!")
}
}
}
}
}