Health Services unterstützt ExerciseEvents
, mit denen Ihre App benachrichtigt wird, wenn während eines Trainings ein Ereignis aufgetreten ist, und die zugehörigen Metadaten bereitgestellt werden.
Abhängigkeiten hinzufügen
Für die Verwendung von Trainingsereignissen ist die aktuelle Version des Health Services SDK erforderlich.
Wenn Sie eine Abhängigkeit von Health Services hinzufügen möchten, müssen Sie Ihrem Projekt das Google Maven-Repository hinzufügen. Weitere Informationen finden Sie im 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 Trainings und Datentypen in Health Services sollten Sie die Funktionen beim Start prüfen. Für ExerciseEvents
müssen Sie zusätzlich zur Anfrage von ExerciseCapabilities
ExerciseTypeCapabilities.supportedExerciseEvents
verwenden, um zu prüfen, welche Trainingsereignisse für das jeweilige Training unterstützt werden.
Nachdem du bestätigt hast, dass die jeweilige ExerciseEvent
unterstützt wird, solltest du auch die Funktionen des Trainingsereignisses mit getExerciseEventCapabilityDetails
abfragen.
Das folgende Beispiel zeigt, wie Sie Funktionen abfragen, um zu bestätigen, dass GOLF_SHOT_EVENT
unterstützt wird, und dann bestätigen, dass GOLF_SHOT_EVENT
die Klassifizierung von Schwungtypen 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
}
Trainingsereignisse in einem Training anfordern
Wenn Sie das Training starten und ein Trainingsereignis als Teil des Trainings anfordern möchten, deklarieren Sie die ExerciseConfig
für das Training 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 Trainingsveranstaltungen registrieren
Du kannst ExerciseEvent
-Updates im Rahmen der vorhandenen Infrastruktur deiner App für den Empfang von Trainingsupdates erhalten.
Das folgende Beispiel zeigt, wie Sie Unterstützung für GolfShotEvent
-Updates einbauen:
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!")
}
}
}
}
}