Gérer les événements d'exercice

Services Santé prend en charge ExerciseEvents, qui avertit votre application lorsqu'un événement s'est produit pendant un exercice et lui fournit les métadonnées associées.

Ajouter des dépendances

L'utilisation d'événements d'exercice nécessite la dernière version du SDK Services Santé.

Pour ajouter une dépendance à Services Santé, vous devez ajouter le dépôt Maven de Google à votre projet. Pour en savoir plus, consultez les informations sur le dépôt Maven de Google.

Ensuite, dans le fichier build.gradle, au niveau du module, ajoutez la dépendance suivante :

Groovy

dependencies {
    implementation "androidx.health:health-services-client:1.1.0-alpha02"
}

Kotlin

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

Vérifier les fonctionnalités

Comme pour tous les exercices et tous les types de données dans Services Santé, vérifiez les fonctionnalités au démarrage. Pour ExerciseEvents en particulier, en plus de demander ExerciseCapabilities, utilisez ExerciseTypeCapabilities.supportedExerciseEvents pour vérifier les événements d'exercice pris en charge pour l'exercice donné. Après avoir vérifié que l'événement ExerciseEvent en question est pris en charge, vous devez également interroger les capacités de l'événement d'exercice à l'aide de getExerciseEventCapabilityDetails.

L'exemple suivant montre comment interroger des fonctionnalités pour confirmer que GOLF_SHOT_EVENT est compatible, puis que GOLF_SHOT_EVENT prend en charge la classification de type 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
}

Demander des événements d'exercice dans un exercice

Pour commencer l'exercice et demander un événement d'exercice dans le cadre de l'exercice, déclarez ExerciseConfig pour l'exercice et ajoutez un champ pour exerciseEventType.

L'exemple suivant demande GOLF_SHOT_EVENT dans le cadre d'un exercice de GOLF :

val config = ExerciseConfig(
  exerciseType = ExerciseType.GOLF,
  dataTypes = setOf(....),
  // ...
  exerciseEventTypes = setOf(ExerciseEventType.GOLF_SHOT_EVENT),
)

S'inscrire pour recevoir des informations sur les événements d'exercice

Vous pouvez recevoir des informations de ExerciseEvent dans l'infrastructure existante de votre application afin de recevoir des informations à jour sur les exercices. L'exemple suivant montre comment incorporer la prise en charge des informations 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!")
        }
      }
    }
  }
}