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