มีการเปลี่ยนแปลงข้อมูลเมตาใน Health Connect สำหรับ นักพัฒนาแอปที่อัปเกรดเป็นรุ่น 1.1.0-alpha12 ขึ้นไป
ข้อมูลห้องสมุด
รหัสอาร์ติแฟกต์ของ Google Maven Android Gradle Plugin
จะระบุไลบรารี Health Connect ที่คุณจะต้องอัปเกรด
เพิ่มทรัพยากร Dependency ของ Health Connect SDK นี้ลงในไฟล์ build.gradle ระดับโมดูล
dependencies {
  implementation "androidx.health.connect:connect-client:1.1.0-alpha12"
}
การเปลี่ยนแปลงข้อมูลเมตา
เราได้ทำการเปลี่ยนแปลงข้อมูลเมตา 2 รายการใน Jetpack SDK สำหรับ Health Connect ตั้งแต่เวอร์ชัน 1.1.0-alpha12 เพื่อช่วยยืนยันว่ามีข้อมูลเมตาเพิ่มเติมที่เป็นประโยชน์ อยู่ในระบบนิเวศ
ระบุวิธีการบันทึก
คุณต้องระบุรายละเอียดข้อมูลเมตาทุกครั้งที่สร้างออบเจ็กต์ประเภท Record()
เมื่อเขียนข้อมูลไปยัง Health Connect คุณต้องระบุวิธีการบันทึก 1 ใน 4 วิธีโดยใช้วิธีการจากโรงงานที่เกี่ยวข้องอย่างใดอย่างหนึ่งเพื่อสร้างอินสแตนซ์ของ 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.manualEntry(),
    Count = 10,
)
ประเภทอุปกรณ์
คุณต้องระบุประเภทอุปกรณ์สำหรับข้อมูลทั้งหมดที่บันทึกโดยอัตโนมัติและข้อมูลที่บันทึกอย่างต่อเนื่อง
 แม้ว่าจะระบุ manufacturer และ model
ได้ด้วย แต่ก็ไม่บังคับ ดูรายละเอียดเพิ่มเติมได้ที่คลาส 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
}
หากเป็นไปได้ โปรดระบุผู้ผลิตและรุ่นของอุปกรณ์นอกเหนือจาก ประเภทอุปกรณ์ เช่น
private val TEST_DEVICE = Device(
    manufacturer = "Google",
    model = "Pixel Watch",
    type = Device.TYPE_WATCH
)
อัปเดตข้อมูลโค้ดแล้ว
เราได้อัปเดตคำแนะนำเกี่ยวกับ Health Connect ในส่วนที่ต้องใช้ข้อมูลโค้ดใหม่ เพื่อให้เป็นไปตามข้อกำหนดใหม่เกี่ยวกับข้อมูลเมตา ดูตัวอย่างได้ที่หน้าเขียนข้อมูล
วิธีการใหม่สำหรับข้อมูลเมตา
คุณไม่สามารถสร้างอินสแตนซ์ของข้อมูลเมตาได้โดยตรงอีกต่อไป ดังนั้นให้ใช้วิธีการของ Factory อย่างใดอย่างหนึ่งเพื่อรับอินสแตนซ์ใหม่ของข้อมูลเมตา วิธีการจากโรงงานจะยืนยัน ว่ามีการระบุข้อมูลอุปกรณ์เมื่อใช้อุปกรณ์หรือเซ็นเซอร์เพื่อ บันทึกข้อมูล สำหรับข้อมูลที่ป้อนด้วยตนเอง การระบุข้อมูลอุปกรณ์ ยังคงเป็นทางเลือก แต่ละฟังก์ชันมีลายเซ็น 3 รูปแบบ ได้แก่
- activelyRecorded- fun activelyRecorded(device: Device): Metadata.
- fun activelyRecorded(clientRecordId: String, clientRecordVersion: Long = 0, device: Device): Metadata
- fun activelyRecordedWithId(id: String, device: Device): Metadata
 
- autoRecorded- fun autoRecorded(device: Device): Metadata
- fun autoRecorded(clientRecordId: String, clientRecordVersion: Long = 0, device: Device): Metadata
- fun autoRecordedWithId(id: String, device: Device): Metadata
 
- manualEntry- fun manualEntry(device: Device? = null): Metadata
- fun manualEntry(clientRecordId: String, clientRecordVersion: Long = 0, device: Device? = null): Metadata
- fun manualEntryWithId(id: String, device: Device? = null): Metadata
 
- unknownRecordingMethod- fun unknownRecordingMethod(device: Device? = null): Metadata
- fun unknownRecordingMethod(clientRecordId: String, clientRecordVersion: Long = 0, device: Device? = null): Metadata
- fun 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โดยทำได้โดยใช้วิธีการจากโรงงานวิธีใดวิธีหนึ่งที่ระบุไว้ในMetadataเช่นMetadata.manualEntry()หรือMetadata.activelyRecorded(device = Device(...))
- สำหรับข้อมูลที่บันทึกโดยอุปกรณ์ คุณต้องระบุประเภทอุปกรณ์
เช่น Device.TYPE_WATCHหรือDevice.TYPE_PHONE
 
- คุณต้องระบุวิธีการบันทึกเมื่อสร้าง
- หากแอปเขียนประเภทอุปกรณ์แบบขยาย ให้ควบคุมการเข้าถึงประเภทอุปกรณ์เหล่านั้นด้วย - FEATURE_EXTENTED_DEVICE_TYPESเพื่อหลีกเลี่ยงไม่ให้เกิด- TYPE_UNKNOWNที่ไม่คาดคิดในอุปกรณ์ ที่ฟีเจอร์ไม่พร้อมใช้งาน
