ข้อกำหนดข้อมูลเมตา

คู่มือนี้เข้ากันได้กับ 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 ประเภทอุปกรณ์คือมิเตอร์วัด
หากต้องการตรวจสอบว่าอุปกรณ์ของผู้ใช้รองรับประเภทอุปกรณ์แบบขยายใน Health Connect หรือไม่ ให้ตรวจสอบความพร้อมใช้งานของ 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 รายการ ดังนี้

  • 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.1.0-alpha12

  2. เมื่อสร้างไลบรารี ระบบจะแสดงข้อผิดพลาดในการคอมไพล์ในตำแหน่งที่จำเป็นต้องใช้ข้อมูลเมตาใหม่ หากต้องการแก้ไขข้อผิดพลาดเหล่านี้และทำการย้ายข้อมูลให้เสร็จสมบูรณ์ ให้ตรวจสอบว่าคุณได้ทำการเปลี่ยนแปลงต่อไปนี้

    • คุณต้องระบุวิธีการบันทึกเมื่อสร้าง Record โดยทำได้โดยใช้วิธีการ Factory วิธีใดวิธีหนึ่งที่ระบุไว้ใน Metadata เช่น Metadata.manualEntry() หรือ Metadata.activelyRecorded(device = Device(...))
    • สำหรับข้อมูลที่อุปกรณ์บันทึกไว้ คุณต้องระบุประเภทอุปกรณ์ เช่น Device.TYPE_WATCH หรือ Device.TYPE_PHONE
  3. หากแอปเขียนประเภทอุปกรณ์แบบขยาย ให้ควบคุมประเภทอุปกรณ์เหล่านี้ด้วย FEATURE_EXTENTED_DEVICE_TYPES เพื่อหลีกเลี่ยง TYPE_UNKNOWN ที่ไม่คาดคิดในอุปกรณ์ที่ฟีเจอร์นี้ไม่พร้อมใช้งาน