Com a API
MeasureClient
,
seu app registra callbacks para receber dados por um curto período.
Isso pode ser feito quando o app está em uso e requer atualizações rápidas de
dados. Se possível, crie esse comportamento com uma interface em primeiro plano para que o usuário
fique ciente do que está acontecendo.
Adicionar dependências
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-alpha03" }
Kotlin
dependencies { implementation("androidx.health:health-services-client:1.1.0-alpha03") }
Verificar as capabilities
Antes de se registrar para atualizações de dados, verifique se o dispositivo pode fornecer o tipo de dados de que o app precisa. Ao conferir as capabilities primeiro, é possível ativar ou desativar determinados recursos ou modificar a interface do app para compensar as que não estão disponíveis.
O exemplo abaixo mostra como conferir se um dispositivo pode fornecer o
tipo de dados HEART_RATE_BPM
:
val healthClient = HealthServices.getClient(this /*context*/)
val measureClient = healthClient.measureClient
lifecycleScope.launch {
val capabilities = measureClient.getCapabilitiesAsync().await()
supportsHeartRate = DataType.HEART_RATE_BPM in capabilities.supportedDataTypesMeasure
}
Registrar para receber dados
Cada callback registrado é para um único tipo de dados. Alguns tipos de dados podem ter disponibilidade variada. Por exemplo, os dados de frequência cardíaca podem não estar disponíveis quando o dispositivo não estiver conectado corretamente ao pulso.
É importante minimizar por quanto tempo seu callback fica registrado, já que ele gera um aumento nas taxas de amostragem do sensor, o que por sua vez aumenta o consumo de energia.
O exemplo a seguir mostra como registrar e cancelar o registro de um callback para receber
dados de HEART_RATE_BPM
:
val heartRateCallback = object : MeasureCallback {
override fun onAvailabilityChanged(dataType: DeltaDataType<*, *>, availability: Availability) {
if (availability is DataTypeAvailability) {
// Handle availability change.
}
}
override fun onDataReceived(data: DataPointContainer) {
// Inspect data points.
}
}
val healthClient = HealthServices.getClient(this /*context*/)
val measureClient = healthClient.measureClient
// Register the callback.
measureClient.registerMeasureCallback(DataType.Companion.HEART_RATE_BPM, heartRateCallback)
// Unregister the callback.
awaitClose {
runBlocking {
measureClient.unregisterMeasureCallbackAsync(DataType.Companion.HEART_RATE_BPM, heartRateCallback)
}
}