Gestire gli eventi di allenamento

Health Services fornisce assistenza per ExerciseEvents, che inviano una notifica alla tua app quando si è verificato un evento durante un esercizio e forniscono i metadati associati.

Aggiungi dipendenze

Per utilizzare gli eventi di allenamento, è necessaria l'ultima versione dell'SDK Health Services.

Per aggiungere una dipendenza dai servizi sanitari, devi aggiungere il Repository Maven di Google al tuo progetto. Per ulteriori informazioni, vedi Repository Maven di Google.

Quindi, nel file build.gradle a livello di modulo, aggiungi la seguente dipendenza:

Alla moda

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

Kotlin

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

Verifica le funzionalità

Come per tutti gli allenamenti e i tipi di dati in Health Services, controlla le capacità all'avvio. Per ExerciseEvents in particolare, oltre a richiedere ExerciseCapabilities, utilizza ExerciseTypeCapabilities.supportedExerciseEvents per verificare quali eventi di allenamento sono supportati per l'esercizio in questione. Dopo aver verificato che il particolare ExerciseEvent è supportato, dovresti anche interrogare le capacità dell'evento dell'esercizio usando getExerciseEventCapabilityDetails

L'esempio seguente mostra come eseguire query sulle funzionalità per confermare GOLF_SHOT_EVENT è supportato, quindi verifica che GOLF_SHOT_EVENT supporta la classificazione del tipo di 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
}

Richiedere eventi di allenamento in un allenamento

Per avviare l'allenamento e richiedere un evento come parte dell'allenamento, dichiarare il ExerciseConfig per l'esercizio e aggiungi un campo per exerciseEventType.

L'esempio seguente richiede GOLF_SHOT_EVENT nell'ambito di un esercizio GOLF:

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

Registrati per ricevere aggiornamenti sugli eventi di allenamento

Puoi ricevere aggiornamenti ExerciseEvent nell'ambito dell'infrastruttura esistente la tua app ha per ricevere aggiornamenti sugli allenamenti. L'esempio seguente mostra come incorporare il supporto per gli aggiornamenti di 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!")
        }
      }
    }
  }
}