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