Trainingsereignisse verarbeiten

Health Services bietet Unterstützung für ExerciseEvents, das deine App benachrichtigt, 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.

Zum Hinzufügen einer Abhängigkeit von Health Services müssen Sie Ihrem Projekt das Maven-Repository von Google 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:

Groovig

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

Kotlin

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

Funktionen prüfen

Wie bei allen Übungen und Datentypen in Gesundheitsdiensten überprüfen Sie die Funktionen beim Start. Insbesondere für ExerciseEvents können Sie neben ExerciseCapabilities auch mit ExerciseTypeCapabilities.supportedExerciseEvents prü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 Funktionen des Trainingsereignisses mit getExerciseEventCapabilityDetails abfragen.

Das folgende Beispiel zeigt, wie Sie Funktionen abfragen, um zu prüfen, ob GOLF_SHOT_EVENT unterstützt wird, und dann zu bestätigen, dass GOLF_SHOT_EVENT die Swing-Typklassifizierung unterstützt.

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
}

Übungsereignisse während eines Trainings anfordern

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

Im folgenden Beispiel wird GOLF_SHOT_EVENT im Rahmen 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 ExerciseEvent-Updates als Teil der vorhandenen Infrastruktur deiner App für den Empfang von Übungsupdates erhalten. Das folgende Beispiel zeigt, wie Sie die Unterstützung für GolfShotEvent-Updates integrieren 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!")
        }
      }
    }
  }
}