Dengan
MeasureClient
API, aplikasi Anda mendaftarkan callback untuk menerima data dalam waktu singkat.
Hal ini dirancang untuk situasi saat aplikasi Anda sedang digunakan dan memerlukan pembaruan data
yang cepat. Jika memungkinkan, buat callback ini dengan UI latar depan agar pengguna
mengetahuinya.
Menambahkan dependensi
Untuk menambahkan dependensi di Fitur Kesehatan, Anda harus menambahkan repositori Maven Google ke project Anda. Untuk mengetahui informasi selengkapnya, lihat Repositori Maven Google.
Kemudian, di file build.gradle
tingkat modul, tambahkan dependensi berikut:
Groovy
dependencies { implementation "androidx.health:health-services-client:1.1.0-alpha03" }
Kotlin
dependencies { implementation("androidx.health:health-services-client:1.1.0-alpha03") }
Memeriksa kemampuan
Sebelum mendaftar untuk pembaruan data, pastikan perangkat dapat menyediakan jenis data yang dibutuhkan aplikasi Anda. Dengan memeriksa kemampuan terlebih dahulu, Anda dapat mengaktifkan atau menonaktifkan fitur tertentu atau mengubah UI aplikasi untuk mengimbangi kemampuan yang tidak tersedia.
Contoh berikut menunjukkan cara memeriksa apakah perangkat dapat menyediakan
jenis data 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
}
Mendaftarkan data
Setiap callback yang Anda daftarkan adalah untuk satu jenis data. Perlu diperhatikan bahwa beberapa jenis data mungkin memiliki status ketersediaan yang bervariasi. Misalnya, data detak jantung mungkin tidak tersedia saat perangkat tidak dipasang dengan benar ke pergelangan tangan.
Penting untuk meminimalkan jumlah waktu callback didaftarkan, karena callback menyebabkan peningkatan frekuensi sampling sensor, yang pada akhirnya meningkatkan penggunaan daya.
Contoh berikut menunjukkan cara mendaftar dan membatalkan pendaftaran callback untuk menerima data
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)
}
}