Obsługa zdarzeń związanych z ćwiczeniami

Usługi zdrowotne zapewniają pomoc w zakresie: ExerciseEvents, który powiadamia aplikację o zdarzeniu podczas ćwiczenia i dostarcza powiązane metadane.

Dodaj 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ć repozytorium Google Maven do swojego projektu. Więcej informacji: repozytorium Google Maven.

Następnie w pliku build.gradle na poziomie modułu dodaj tę zależność:

dependencies {
    implementation "androidx.health:health-services-client:1.1.0-alpha03"
}
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 zdrowotnych, sprawdź funkcje na start-up. Dla: ExerciseEvents w szczególności, oprócz poproszenia o ExerciseCapabilities, użyj ExerciseTypeCapabilities.supportedExerciseEvents aby sprawdzić, które zdarzenia są obsługiwane dla danego ćwiczenia. Po potwierdzeniu, że konkretna ExerciseEvent jest obsługiwana, należy także zapytać o możliwości zdarzenia ćwiczenia za pomocą getExerciseEventCapabilityDetails

Ten przykład pokazuje, jak wysłać zapytanie o możliwości, aby potwierdzić Usługa GOLF_SHOT_EVENT jest obsługiwana, a następnie potwierdź, że 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ń ćwiczeń w ćwiczeniu

Aby rozpocząć ćwiczenie i zgłosić żądanie zdarzenia w jego ramach, zadeklaruj ExerciseConfig dla ćwiczenia i dodaj pole dla exerciseEventType.

Ten przykładowy żą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 ćwiczeń

Możesz otrzymywać aktualizacje typu ExerciseEvent w ramach istniejącej infrastruktury czy Twoja aplikacja otrzymuje aktualizacje dotyczące ćwiczeń. Ten przykład pokazuje, jak 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!")
       
}
     
}
   
}
 
}
}