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-alpha03" }
Kotlin
dependencies { implementation("androidx.health:health-services-client:1.1.0-alpha03") }
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!")
}
}
}
}
}