Health Services bietet Support für ExerciseEvents
,
die deine App benachrichtigen, 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.
Wenn Sie eine Abhängigkeit von Health Services hinzufügen möchten, müssen Sie das Google Maven-Repository hinzufügen zu Ihrem Projekt 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:
Groovy
dependencies { implementation "androidx.health:health-services-client:1.1.0-alpha05" }
Kotlin
dependencies { implementation("androidx.health:health-services-client:1.1.0-alpha05") }
Funktionen prüfen
Wie bei allen Übungen und Datentypen in Health Services überprüfst du die Funktionen unter
Start-up. Für
ExerciseEvents
Zusätzlich zur Anforderung von ExerciseCapabilities
ExerciseTypeCapabilities.supportedExerciseEvents
verwenden
um zu überprü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 Fähigkeiten des Trainingsereignisses
getExerciseEventCapabilityDetails
Das folgende Beispiel zeigt, wie Sie Funktionen abfragen, um die
GOLF_SHOT_EVENT
unterstützt wird, und prüfen Sie dann, ob die GOLF_SHOT_EVENT
unterstützt die Klassifizierung des Schwingentyps.
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
}
Trainingsereignisse während eines Trainings anfordern
Um mit der Übung zu beginnen und ein Ereignis als Teil der Übung anzufordern,
die ExerciseConfig
für die Übung deklarieren
und fügen Sie ein Feld für exerciseEventType
hinzu.
Im folgenden Beispiel wird GOLF_SHOT_EVENT
als Teil 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 Updates zu ExerciseEvent
im Rahmen der bestehenden Infrastruktur erhalten
deine App zum Empfangen von Trainingsupdates bietet.
Das folgende Beispiel zeigt, wie Sie GolfShotEvent
-Updates unterstützen 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!")
}
}
}
}
}