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