Controla eventos de ejercicio

Los Servicios de salud brindan asistencia para ExerciseEvents, que notifican a tu app cuando se produce un evento durante un ejercicio y proporcionan metadatos asociados.

Cómo agregar dependencias

El uso de eventos de ejercicio requiere la versión más reciente del SDK de Servicios de salud.

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-alpha03"
}

Kotlin

dependencies {
    implementation("androidx.health:health-services-client:1.1.0-alpha03")
}

Cómo verificar las funciones

Al igual que con todos los ejercicios y tipos de datos de los Servicios de salud, verifica las capacidades en inicio. Para ExerciseEvents en particular, además de solicitar ExerciseCapabilities, usar ExerciseTypeCapabilities.supportedExerciseEvents para verificar qué eventos de ejercicio son compatibles con el ejercicio en cuestión. Después de confirmar que se admite el ExerciseEvent específico, haz lo siguiente: también debes consultar las capacidades del evento de ejercicio usando getExerciseEventCapabilityDetails

En el siguiente ejemplo, se muestra cómo consultar capacidades para confirmar la GOLF_SHOT_EVENT sea compatible y, luego, confirma que el GOLF_SHOT_EVENT admite la clasificación de tipos 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
}

Cómo solicitar eventos de ejercicio en un ejercicio

Para comenzar el ejercicio y solicitar un evento como parte de él, declara el valor de 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ías 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!")
        }
      }
    }
  }
}