Os Recursos de saúde oferecem suporte a ExerciseEvents,
que notificam o app quando ocorre um evento durante um exercício e fornecem
os metadados associados a essa ação.
Adicionar dependências
O uso de eventos de exercícios requer a versão mais recente do SDK dos Recursos de saúde.
Para adicionar uma dependência aos Recursos de saúde, é preciso adicionar o repositório Maven do Google ao seu projeto. Para mais informações, consulte a seção Repositório Maven do Google.
Em seguida, no arquivo build.gradle do módulo, adicione a dependência abaixo:
Groovy
dependencies { implementation "androidx.health:health-services-client:1.1.0-alpha05" }
Kotlin
dependencies { implementation("androidx.health:health-services-client:1.1.0-alpha05") }
Verificar os recursos
Assim como em todos os exercícios e tipos de dados nos Recursos de saúde,
confira as capabilities na inicialização. Para
ExerciseEvents, além de solicitar ExerciseCapabilities,
use
ExerciseTypeCapabilities.supportedExerciseEvents
para verificar quais eventos de exercício têm suporte ao exercício em questão.
Depois de confirmar que o ExerciseEvent específico tem suporte,
consulte também as capabilities do evento de exercício usando
getExerciseEventCapabilityDetails.
O exemplo abaixo mostra como consultar capabilities para confirmar se o
GOLF_SHOT_EVENT tem suporte e se o GOLF_SHOT_EVENT
oferece suporte à classificação do tipo de 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
}
Solicitar eventos de exercício durante um exercício
Para iniciar o exercício e solicitar um evento de exercício como parte dele,
declare a ExerciseConfig para o exercício
e adicione um campo para o exerciseEventType.
O exemplo abaixo solicita GOLF_SHOT_EVENT como parte de um exercício GOLF:
val config = ExerciseConfig(
exerciseType = ExerciseType.GOLF,
dataTypes = setOf(....),
// ...
exerciseEventTypes = setOf(ExerciseEventType.GOLF_SHOT_EVENT),
)
Receber atualizações de eventos de exercício
É possível receber atualizações de ExerciseEvent como parte da infraestrutura
existente do app para receber atualizações de exercícios.
O exemplo abaixo mostra como incorporar o suporte a atualizações de
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!")
}
}
}
}
}