Usługi zdrowotne zapewniają wsparcie dla usługi ExerciseEvents
, która powiadamia aplikację o wydarzeniu podczas ćwiczenia i dostarcza powiązane metadane.
Dodaj zależności
Aby korzystać z wydarzeń związanych z ćwiczeniami, musisz mieć najnowszą wersję pakietu SDK usług zdrowotnych.
Aby dodać zależność od usług zdrowotnych, musisz dodać do projektu repozytorium Google Maven. Więcej informacji znajdziesz w repozytorium Google Maven.
Następnie w pliku build.gradle
na poziomie modułu dodaj tę zależność:
Odlotowy
dependencies { implementation "androidx.health:health-services-client:1.1.0-alpha03" }
Kotlin
dependencies { implementation("androidx.health:health-services-client:1.1.0-alpha03") }
Sprawdź możliwości
Tak jak w przypadku wszystkich ćwiczeń i typów danych w Usługach medycznych sprawdź możliwości przy uruchamianiu. W przypadku narzędzia ExerciseEvents
oprócz żądania ExerciseCapabilities
użyj parametru ExerciseTypeCapabilities.supportedExerciseEvents
, aby sprawdzić, które zdarzenia ćwiczeniowe są obsługiwane w przypadku danego ćwiczenia.
Po potwierdzeniu, że dane ExerciseEvent
są obsługiwane, możesz też przesłać zapytanie o możliwości zdarzenia ćwiczenia za pomocą metody getExerciseEventCapabilityDetails
.
Z przykładu poniżej dowiesz się, jak wysyłać zapytania o możliwości, aby potwierdzić, że GOLF_SHOT_EVENT
jest obsługiwany, a następnie potwierdzić, że GOLF_SHOT_EVENT
obsługuje klasyfikację typu 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
}
Wysyłanie żądań zdarzeń ćwiczenia w trakcie ćwiczenia
Aby rozpocząć ćwiczenie i poprosić o zdarzenie ćwiczenia w jego ramach, zadeklaruj ExerciseConfig
dla ćwiczenia i dodaj pole exerciseEventType
.
W tym przykładzie żądanie GOLF_SHOT_EVENT
w ramach ćwiczenia GOLF
:
val config = ExerciseConfig(
exerciseType = ExerciseType.GOLF,
dataTypes = setOf(....),
// ...
exerciseEventTypes = setOf(ExerciseEventType.GOLF_SHOT_EVENT),
)
Zarejestruj się, aby otrzymywać aktualizacje dotyczące wydarzeń związanych z ćwiczeniami
Możesz otrzymywać aktualizacje ExerciseEvent
w ramach istniejącej infrastruktury aplikacji do odbierania aktualizacji dotyczących ćwiczeń.
Ten przykład pokazuje, w jaki sposób możesz włączyć obsługę aktualizacji 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!")
}
}
}
}
}