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-alpha03" }
Kotlin
dependencies { implementation("androidx.health:health-services-client:1.1.0-alpha03") }
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!")
}
}
}
}
}