Gestire gli eventi di allenamento

Health Services fornisce supporto per ExerciseEvents, che invia una notifica alla tua app quando si verifica un evento durante un allenamento e fornisce i metadati associati.

Aggiungi dipendenze

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

Per aggiungere una dipendenza a Health Services, devi aggiungere il Repository Maven di Google al tuo progetto. Per ulteriori informazioni, consulta il Repository Maven di Google.

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

Trendy

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

Kotlin

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

Verifica le funzionalità

Come per tutti gli esercizi e i tipi di dati in Health Services, controlla le funzionalità all'avvio. In particolare per ExerciseEvents, oltre a richiedere ExerciseCapabilities, utilizza ExerciseTypeCapabilities.supportedExerciseEvents per verificare quali eventi di allenamento sono supportati per l'esercizio in questione. Dopo aver verificato che ExerciseEvent specifico è supportato, dovresti anche eseguire query sulle funzionalità dell'evento di allenamento utilizzando getExerciseEventCapabilityDetails.

L'esempio seguente mostra come eseguire query sulle funzionalità per verificare che GOLF_SHOT_EVENT sia supportato e poi verificare che GOLF_SHOT_EVENT supporti 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 nell'ambito dell'allenamento, dichiara il valore ExerciseConfig per l'allenamento e aggiungi un campo per exerciseEventType.

L'esempio seguente richiede GOLF_SHOT_EVENT come parte 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 di cui dispone la tua app per la ricezione degli aggiornamenti degli allenamenti. L'esempio seguente mostra come incorporare il supporto per gli aggiornamenti 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!")
        }
      }
    }
  }
}