Usługi związane ze zdrowiem obsługują ExerciseEvents
, które powiadamiają aplikację o zdarzeniu, które wystąpiło podczas ćwiczeń, i dostarczają powiązane metadane.
Dodawanie zależności
Korzystanie ze zdarzeń związanych z ćwiczeniami wymaga najnowszej wersji 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 Maven Google.
Następnie w pliku build.gradle
na poziomie modułu dodaj tę zależność:
Groovy
dependencies { implementation "androidx.health:health-services-client:1.1.0-alpha05" }
Kotlin
dependencies { implementation("androidx.health:health-services-client:1.1.0-alpha05") }
Sprawdzanie możliwości
Podobnie jak w przypadku wszystkich ćwiczeń i typów danych w Usługach związanych ze zdrowiem sprawdź możliwości na początku. W przypadku
ExerciseEvents
oprócz wysyłania żądań ExerciseCapabilities
używaj
ExerciseTypeCapabilities.supportedExerciseEvents
do sprawdzania, które zdarzenia związane z ćwiczeniami są obsługiwane w przypadku danego ćwiczenia.
Po potwierdzeniu, że dany ExerciseEvent
jest obsługiwany, sprawdź też możliwości zdarzenia związanego z ćwiczeniami za pomocą funkcji getExerciseEventCapabilityDetails
.
W przykładzie poniżej pokazujemy, jak wysłać zapytanie o możliwości, aby potwierdzić, że urządzenie GOLF_SHOT_EVENT
jest obsługiwane, a następnie sprawdzić, czy GOLF_SHOT_EVENT
obsługuje klasyfikację typu zamachu.
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
}
Żądanie zdarzeń związanych z ćwiczeniami podczas ćwiczenia
Aby rozpocząć ćwiczenie i poprosić o zdarzenie ćwiczenia w ramach ćwiczenia, zadeklaruj ExerciseConfig
dla ćwiczenia i dodaj pole dla exerciseEventType
.
W tym przykładzie w ramach ćwiczenia GOLF
wysyłamy prośbę o GOLF_SHOT_EVENT
:
val config = ExerciseConfig(
exerciseType = ExerciseType.GOLF,
dataTypes = setOf(....),
// ...
exerciseEventTypes = setOf(ExerciseEventType.GOLF_SHOT_EVENT),
)
Rejestrowanie się w celu otrzymywania aktualizacji dotyczących wydarzeń związanych z aktywnością
Możesz otrzymywać aktualizacje ExerciseEvent
w ramach istniejącej infrastruktury, którą Twoja aplikacja ma do otrzymywania aktualizacji dotyczących ćwiczeń.
Poniższy przykład pokazuje, jak włączyć obsługę aktualizacjiGolfShotEvent
:
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!")
}
}
}
}
}