คู่มือนี้เข้ากันได้กับ Health Connect เวอร์ชัน 1.1.0-alpha12 และ ขึ้นไป
มีการเปลี่ยนแปลงข้อมูลเมตาใน Health Connect สำหรับนักพัฒนาแอปที่อัปเกรดเป็นเวอร์ชัน 1.1.0-alpha12 ขึ้นไป
ข้อมูลไลบรารี
Artifact ID ของปลั๊กอิน Google Maven Android Gradle
จะระบุไลบรารี Health Connect ที่คุณต้องอัปเกรด
เพิ่มทรัพยากร Dependency ของ Health Connect SDK นี้ลงในไฟล์ build.gradle ระดับโมดูล
dependencies {
implementation "androidx.health.connect:connect-client:1.1.0-alpha12"
}
การเปลี่ยนแปลงข้อมูลเมตา
เราได้นำการเปลี่ยนแปลงข้อมูลเมตา 2 รายการมาใช้ใน Health Connect Jetpack SDK ตั้งแต่เวอร์ชัน 1.1.0-alpha12 เพื่อช่วยยืนยันว่ามีข้อมูลเมตาที่เป็นประโยชน์เพิ่มเติมในระบบนิเวศ หากไม่ได้รวม metadata ไว้ในตัวสร้าง Record คุณอาจเห็นข้อผิดพลาด Constructor internal
ระบุวิธีการบันทึก
คุณต้องระบุรายละเอียดข้อมูลเมตาทุกครั้งที่สร้างอินสแตนซ์ออบเจ็กต์ประเภท Record()
เมื่อเขียนข้อมูลลงใน Health Connect คุณต้องระบุวิธีการบันทึก 1 ใน 4 วิธีโดยใช้วิธีการ Factory
ที่เกี่ยวข้องเพื่อสร้างอินสแตนซ์ Metadata
| วิธีการบันทึก | คำอธิบาย |
|---|---|
RECORDING_METHOD_UNKNOWN |
ยืนยันวิธีการบันทึกไม่ได้ |
RECORDING_METHOD_MANUAL_ENTRY |
ผู้ใช้ป้อนข้อมูล |
RECORDING_METHOD_AUTOMATICALLY_RECORDED |
อุปกรณ์หรือเซ็นเซอร์บันทึกข้อมูล |
RECORDING_METHOD_ACTIVELY_RECORDED |
ผู้ใช้เริ่มหรือสิ้นสุดเซสชันการบันทึกในอุปกรณ์ |
เช่น
StepsRecord( startTime = Instant.ofEpochMilli(1234L), startZoneOffset = null, endTime = Instant.ofEpochMilli(1236L), endZoneOffset = null, metadata = Metadata(), count = 10 )
ประเภทอุปกรณ์
คุณต้องระบุประเภทอุปกรณ์สำหรับข้อมูลทั้งหมดที่บันทึกโดยอัตโนมัติและมีการบันทึกอย่างชัดเจน ดูรายละเอียดเพิ่มเติมได้ที่คลาส
Device ในเอกสารประกอบของ Jetpack. ประเภทอุปกรณ์ปัจจุบันมีดังนี้
| ประเภทอุปกรณ์ | คำอธิบาย |
|---|---|
TYPE_UNKNOWN |
ไม่ทราบประเภทอุปกรณ์ |
TYPE_WATCH |
ประเภทอุปกรณ์คือนาฬิกา |
TYPE_PHONE |
ประเภทอุปกรณ์คือโทรศัพท์ |
TYPE_SCALE |
ประเภทอุปกรณ์คือเครื่องชั่ง |
TYPE_RING |
ประเภทอุปกรณ์คือแหวน |
TYPE_HEAD_MOUNTED |
ประเภทอุปกรณ์คืออุปกรณ์แบบสวมศีรษะ |
TYPE_FITNESS_BAND |
ประเภทอุปกรณ์คือสายรัดข้อมือฟิตเนส |
TYPE_CHEST_STRAP |
ประเภทอุปกรณ์คือสายรัดหน้าอก |
TYPE_SMART_DISPLAY |
ประเภทอุปกรณ์คือจออัจฉริยะ |
ค่า Device.type บางค่าใช้ได้ใน Health Connect เวอร์ชันใหม่กว่าเท่านั้น เมื่อฟีเจอร์ประเภทอุปกรณ์แบบขยายไม่พร้อมใช้งาน ระบบจะถือว่าประเภทเหล่านี้เป็น Device.TYPE_UNKNOWN
| ประเภทอุปกรณ์แบบขยาย | คำอธิบาย |
|---|---|
TYPE_CONSUMER_MEDICAL_DEVICE |
ประเภทอุปกรณ์คืออุปกรณ์ทางการแพทย์ |
TYPE_GLASSES |
ประเภทอุปกรณ์คือแว่นตาอัจฉริยะหรือแว่นตา |
TYPE_HEARABLE |
ประเภทอุปกรณ์คืออุปกรณ์ฟัง |
TYPE_FITNESS_MACHINE |
ประเภทอุปกรณ์คือเครื่องออกกำลังกายแบบอยู่กับที่ |
TYPE_FITNESS_EQUIPMENT |
ประเภทอุปกรณ์คืออุปกรณ์ออกกำลังกาย |
TYPE_PORTABLE_COMPUTER |
ประเภทอุปกรณ์คือคอมพิวเตอร์แบบพกพา |
TYPE_METER |
ประเภทอุปกรณ์คือมิเตอร์วัด |
FEATURE_EXTENDED_DEVICE_TYPES ในไคลเอ็นต์
if (healthConnectClient
.features
.getFeatureStatus(
HealthConnectFeatures.FEATURE_EXTENDED_DEVICE_TYPES
) == HealthConnectFeatures.FEATURE_STATUS_AVAILABLE) {
// Feature is available
} else {
// Feature isn't available
}
เช่น
val WATCH_DEVICE = Device( manufacturer = "Google", model = "Pixel Watch", type = Device.TYPE_WATCH ) // Phone val PHONE_DEVICE = Device( manufacturer = "Google", model = "Pixel 8", type = Device.TYPE_PHONE ) // Ring val RING_DEVICE = Device( manufacturer = "Oura", model = "Ring Gen3", type = Device.TYPE_RING ) // Scale val SCALE_DEVICE = Device( manufacturer = "Withings", model = "Body Comp", type = Device.TYPE_SCALE )
อัปเดตข้อมูลโค้ดแล้ว
เราได้อัปเดตคู่มือ Health Connect ทุกที่ที่จำเป็นต้องใช้ข้อมูลโค้ดใหม่เพื่อให้เป็นไปตามข้อกำหนดข้อมูลเมตาใหม่ ดูตัวอย่างบางส่วนได้ที่หน้า เขียนข้อมูล
วิธีการข้อมูลเมตาใหม่
คุณไม่สามารถสร้างอินสแตนซ์ข้อมูลเมตาได้โดยตรงอีกต่อไป ดังนั้นให้ใช้วิธีการ Factory วิธีใดวิธีหนึ่งเพื่อรับอินสแตนซ์ข้อมูลเมตาใหม่ วิธีการ Factory จะยืนยันว่ามีการระบุข้อมูลอุปกรณ์เมื่อใช้อุปกรณ์หรือเซ็นเซอร์ในการบันทึกข้อมูล สำหรับการป้อนข้อมูลด้วยตนเอง การระบุข้อมูลอุปกรณ์ยังคงเป็นตัวเลือก แต่ละฟังก์ชันมีตัวแปรลายเซ็น 3 รายการ ดังนี้
activelyRecordedfun activelyRecorded(device: Device): Metadata.fun activelyRecorded(clientRecordId: String, clientRecordVersion: Long = 0, device: Device): Metadatafun activelyRecordedWithId(id: String, device: Device): Metadata
autoRecordedfun autoRecorded(device: Device): Metadatafun autoRecorded(clientRecordId: String, clientRecordVersion: Long = 0, device: Device): Metadatafun autoRecordedWithId(id: String, device: Device): Metadata
manualEntryfun manualEntry(device: Device? = null): Metadatafun manualEntry(clientRecordId: String, clientRecordVersion: Long = 0, device: Device? = null): Metadatafun manualEntryWithId(id: String, device: Device? = null): Metadata
unknownRecordingMethodfun unknownRecordingMethod(device: Device? = null): Metadatafun unknownRecordingMethod(clientRecordId: String, clientRecordVersion: Long = 0, device: Device? = null): Metadatafun unknownRecordingMethodWithId(id: String, device: Device? = null): Metadata
ดูข้อมูลเพิ่มเติมได้ที่ โครงการโอเพนซอร์ส Android
การทดสอบข้อมูล
ใช้ ไลบรารีการทดสอบ และ
MetadataTestHelper เพื่อจำลองค่าข้อมูลเมตาที่คาดไว้
private val TEST_METADATA =
Metadata.unknownRecordingMethod(
clientRecordId = "clientId",
clientRecordVersion = 1L,
device = Device(type = Device.TYPE_UNKNOWN),
).populatedWithTestValues(id = "test")
ซึ่งจะจำลองลักษณะการทำงานของการติดตั้งใช้งาน Health Connect ซึ่งจะป้อนค่าเหล่านี้โดยอัตโนมัติระหว่างการแทรกบันทึก
สำหรับไลบรารีการทดสอบ คุณต้องเพิ่มทรัพยากร Dependency ของ Health Connect SDK นี้ลงในไฟล์ build.gradle ระดับโมดูล
dependencies {
testImplementation "androidx.health.connect:connect-testing:1.0.0-alpha02"
}
อัปเกรดไลบรารี
ขั้นตอนหลักๆ ที่คุณต้องดำเนินการมีดังนี้
อัปเกรดไลบรารีเป็น 1.1.0-alpha12
เมื่อสร้างไลบรารี ระบบจะแสดงข้อผิดพลาดในการคอมไพล์ในตำแหน่งที่จำเป็นต้องใช้ข้อมูลเมตาใหม่ หากต้องการแก้ไขข้อผิดพลาดเหล่านี้และทำการย้ายข้อมูลให้เสร็จสมบูรณ์ ให้ตรวจสอบว่าคุณได้ทำการเปลี่ยนแปลงต่อไปนี้
- คุณต้องระบุวิธีการบันทึกเมื่อสร้าง
Recordโดยทำได้โดยใช้วิธีการ Factory วิธีใดวิธีหนึ่งที่ระบุไว้ในMetadataเช่นMetadata.manualEntry()หรือMetadata.activelyRecorded(device = Device(...)) - สำหรับข้อมูลที่อุปกรณ์บันทึกไว้ คุณต้องระบุประเภทอุปกรณ์ เช่น
Device.TYPE_WATCHหรือDevice.TYPE_PHONE
- คุณต้องระบุวิธีการบันทึกเมื่อสร้าง
หากแอปเขียนประเภทอุปกรณ์แบบขยาย ให้ควบคุมประเภทอุปกรณ์เหล่านี้ด้วย
FEATURE_EXTENTED_DEVICE_TYPESเพื่อหลีกเลี่ยงTYPE_UNKNOWNที่ไม่คาดคิดในอุปกรณ์ที่ฟีเจอร์นี้ไม่พร้อมใช้งาน