Health Services bietet Unterstützung für ExerciseEvents
, das deine App benachrichtigt, wenn während eines Trainings ein Ereignis eingetreten ist, und zugehörige Metadaten bereitstellt.
Abhängigkeiten hinzufügen
Für die Verwendung von Trainingsereignissen ist die neueste Version des Health Services SDK erforderlich.
Zum Hinzufügen einer Abhängigkeit von Health Services müssen Sie Ihrem Projekt das Maven-Repository von Google hinzufügen. Weitere Informationen finden Sie unter Maven-Repository von Google.
Fügen Sie dann in der Datei build.gradle
auf Modulebene die folgende Abhängigkeit hinzu:
Groovig
dependencies { implementation "androidx.health:health-services-client:1.1.0-alpha03" }
Kotlin
dependencies { implementation("androidx.health:health-services-client:1.1.0-alpha03") }
Funktionen prüfen
Wie bei allen Übungen und Datentypen in Gesundheitsdiensten überprüfen Sie die Funktionen beim Start. Insbesondere für ExerciseEvents
können Sie neben ExerciseCapabilities
auch mit ExerciseTypeCapabilities.supportedExerciseEvents
prüfen, welche Trainingsereignisse für die jeweilige Übung unterstützt werden.
Nachdem Sie bestätigt haben, dass die jeweilige ExerciseEvent
unterstützt wird, sollten Sie auch die Funktionen des Trainingsereignisses mit getExerciseEventCapabilityDetails
abfragen.
Das folgende Beispiel zeigt, wie Sie Funktionen abfragen, um zu prüfen, ob GOLF_SHOT_EVENT
unterstützt wird, und dann zu bestätigen, dass GOLF_SHOT_EVENT
die Swing-Typklassifizierung unterstützt.
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
}
Übungsereignisse während eines Trainings anfordern
Um die Übung zu starten und ein Trainingsereignis als Teil der Übung anzufordern, deklarieren Sie die ExerciseConfig
für die Übung und fügen Sie ein Feld für exerciseEventType
hinzu.
Im folgenden Beispiel wird GOLF_SHOT_EVENT
im Rahmen einer GOLF
-Übung angefordert:
val config = ExerciseConfig(
exerciseType = ExerciseType.GOLF,
dataTypes = setOf(....),
// ...
exerciseEventTypes = setOf(ExerciseEventType.GOLF_SHOT_EVENT),
)
Für Updates zu Trainingsereignissen registrieren
Du kannst ExerciseEvent
-Updates als Teil der vorhandenen Infrastruktur deiner App für den Empfang von Übungsupdates erhalten.
Das folgende Beispiel zeigt, wie Sie die Unterstützung für GolfShotEvent
-Updates integrieren würden:
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!")
}
}
}
}
}