Obsługa zdarzeń związanych z ćwiczeniami

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