Obsługa zdarzeń związanych z ćwiczeniami

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-alpha02"
}

Kotlin

dependencies {
    implementation("androidx.health:health-services-client:1.1.0-alpha02")
}

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!")
        }
      }
    }
  }
}