Fazer medições de saúde com o MeasureClient

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