Trainingsereignisse verarbeiten

Health Services bietet Support für ExerciseEvents, die deine App benachrichtigen, wenn während eines Trainings ein Ereignis eingetreten ist, und zugehörige Metadaten bereitstellt.

Abhängigkeiten hinzufügen

Für die Verwendung von Trainingsereignissen ist die neueste Version des Health Services SDK erforderlich.

Wenn Sie eine Abhängigkeit von Health Services hinzufügen möchten, müssen Sie das Google Maven-Repository hinzufügen zu Ihrem Projekt hinzufügen. Weitere Informationen finden Sie unter Maven-Repository von Google.

Fügen Sie dann in der Datei build.gradle auf Modulebene die folgende Abhängigkeit hinzu:

Groovy

dependencies {
    implementation "androidx.health:health-services-client:1.1.0-alpha05"
}

Kotlin

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

Funktionen prüfen

Wie bei allen Übungen und Datentypen in Health Services überprüfst du die Funktionen unter Start-up. Für ExerciseEvents Zusätzlich zur Anforderung von ExerciseCapabilities ExerciseTypeCapabilities.supportedExerciseEvents verwenden um zu überprüfen, welche Trainingsereignisse für die jeweilige Übung unterstützt werden. Nachdem Sie bestätigt haben, dass die jeweilige ExerciseEvent unterstützt wird, sollten Sie auch die Fähigkeiten des Trainingsereignisses getExerciseEventCapabilityDetails

Das folgende Beispiel zeigt, wie Sie Funktionen abfragen, um die GOLF_SHOT_EVENT unterstützt wird, und prüfen Sie dann, ob die GOLF_SHOT_EVENT unterstützt die Klassifizierung des Schwingentyps.

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
}

Trainingsereignisse während eines Trainings anfordern

Um mit der Übung zu beginnen und ein Ereignis als Teil der Übung anzufordern, die ExerciseConfig für die Übung deklarieren und fügen Sie ein Feld für exerciseEventType hinzu.

Im folgenden Beispiel wird GOLF_SHOT_EVENT als Teil einer GOLF-Übung angefordert:

val config = ExerciseConfig(
  exerciseType = ExerciseType.GOLF,
  dataTypes = setOf(....),
  // ...
  exerciseEventTypes = setOf(ExerciseEventType.GOLF_SHOT_EVENT),
)

Für Updates zu Trainingsereignissen registrieren

Du kannst Updates zu ExerciseEvent im Rahmen der bestehenden Infrastruktur erhalten deine App zum Empfangen von Trainingsupdates bietet. Das folgende Beispiel zeigt, wie Sie GolfShotEvent-Updates unterstützen würden:

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