MeasureClient
API ile uygulamanız, kısa bir süre boyunca veri almak için geri çağırma işlemlerini kaydeder.
Bu, uygulamanızın kullanımda olduğu ve hızlı veri güncellemeleri gerektirdiği durumlar için tasarlanmıştır. Mümkünse bunu, kullanıcının farkında olması için ön planda bir kullanıcı arayüzüyle oluşturun.
Bağımlılık ekleme
Sağlık Hizmetleri'ne bağımlılık eklemek için projenize Google Maven deposunu eklemeniz gerekir. Daha fazla bilgi için Google'ın Maven deposuna bakın.
Ardından, modül düzeyindeki build.gradle
dosyanıza aşağıdaki bağımlılığı ekleyin:
Groovy
dependencies { implementation "androidx.health:health-services-client:1.1.0-alpha05" }
Kotlin
dependencies { implementation("androidx.health:health-services-client:1.1.0-alpha05") }
Özellikleri kontrol etme
Veri güncellemelerine kaydolmadan önce cihazın, uygulamanızın ihtiyaç duyduğu veri türünü sağlayabildiğinden emin olun. Öncelikle özellikleri kontrol ederek belirli özellikleri etkinleştirebilir veya devre dışı bırakabilir ya da kullanılamayan özellikleri telafi etmek için uygulamanızın kullanıcı arayüzünü değiştirebilirsiniz.
Aşağıdaki örnekte, bir cihazın HEART_RATE_BPM
veri türünü sağlayıp sağlayamayacağının nasıl kontrol edileceği gösterilmektedir:
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
}
Veri için kaydolma
Kaydettiğiniz her geri çağırma tek bir veri türü içindir. Bazı veri türlerinin farklı kullanılabilirlik durumlarına sahip olabileceğini unutmayın. Örneğin, cihaz bileğe düzgün şekilde takılmadığında nabız verileri kullanılamayabilir.
Geri arama sürenizi en aza indirmeniz önemlidir. Geri aramalar, sensör örnekleme hızlarının artmasına ve dolayısıyla güç tüketiminin artmasına neden olur.
Aşağıdaki örnekte, HEART_RATE_BPM
verilerini almak için geri çağırma işlevinin nasıl kaydedileceği ve kaydının nasıl silineceği gösterilmektedir:
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)
}
}