API ของ
MeasureClient
จะช่วยให้แอปของคุณลงทะเบียนการเรียกกลับเพื่อรับข้อมูลในช่วงเวลาสั้นๆ ได้
ซึ่งมีไว้สำหรับสถานการณ์ที่แอปของคุณกำลังใช้งานและต้องมีการอัปเดตข้อมูลอย่างรวดเร็ว
หากเป็นไปได้ ให้สร้างโดยใช้ UI ในเบื้องหน้าเพื่อให้ผู้ใช้ทราบ
เพิ่มทรัพยากร Dependency
หากต้องการเพิ่มการอ้างอิงในบริการด้านสุขภาพ คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงในโปรเจ็กต์ ดูข้อมูลเพิ่มเติมได้ที่ ที่เก็บ Maven ของ Google
จากนั้นเพิ่มทรัพยากร Dependency ต่อไปนี้ในไฟล์ build.gradle
ระดับโมดูล
Groovy
dependencies { implementation "androidx.health:health-services-client:1.1.0-alpha05" }
Kotlin
dependencies { implementation("androidx.health:health-services-client:1.1.0-alpha05") }
ตรวจสอบความสามารถ
ก่อนลงทะเบียนเพื่อรับการอัปเดตข้อมูล ให้ตรวจสอบว่าอุปกรณ์สามารถให้ข้อมูลประเภท ที่แอปของคุณต้องการได้ การตรวจสอบความสามารถก่อนจะช่วยให้คุณเปิดหรือ ปิดใช้ฟีเจอร์บางอย่าง หรือแก้ไข UI ของแอปเพื่อชดเชยความสามารถ ที่ไม่มีได้
ตัวอย่างต่อไปนี้แสดงวิธีตรวจสอบว่าอุปกรณ์ระบุประเภทข้อมูล 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
}
ลงทะเบียนเพื่อรับข้อมูล
การเรียกกลับแต่ละรายการที่คุณลงทะเบียนจะใช้กับข้อมูลประเภทเดียว โปรดทราบว่าข้อมูลบางประเภท อาจมีสถานะความพร้อมใช้งานที่แตกต่างกัน เช่น ข้อมูลอัตราการเต้นของหัวใจอาจ ไม่พร้อมใช้งานเมื่อไม่ได้ติดอุปกรณ์ไว้ที่ข้อมืออย่างถูกต้อง
คุณควรลดระยะเวลาที่ลงทะเบียนการเรียกกลับ เนื่องจากการเรียกกลับจะทำให้เพิ่มอัตราการสุ่มตัวอย่างเซ็นเซอร์ ซึ่งจะทำให้ การใช้พลังงานเพิ่มขึ้น
ตัวอย่างต่อไปนี้แสดงวิธีลงทะเบียนและยกเลิกการลงทะเบียนการเรียกกลับเพื่อรับข้อมูล 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)
}
}