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