การรวบรวมข้อมูลใน Health Connect ประกอบด้วยการรวบรวมข้อมูลพื้นฐานหรือการรวบรวมข้อมูลเป็นกลุ่ม เวิร์กโฟลว์ต่อไปนี้แสดงวิธีดำเนินการทั้ง 2 อย่าง
การรวมข้อมูลพื้นฐาน
หากต้องการใช้การรวมข้อมูลพื้นฐานกับข้อมูล ให้ใช้ฟังก์ชัน aggregate
ในออบเจ็กต์ HealthConnectClient
โดยรับออบเจ็กต์ AggregateRequest
ที่คุณเพิ่มประเภทเมตริกและช่วงเวลาเป็นพารามิเตอร์ วิธีเรียกข้อมูลสรุปพื้นฐานจะขึ้นอยู่กับประเภทเมตริกที่ใช้
การรวมแบบสะสม
การรวมแบบสะสมจะคํานวณค่าทั้งหมด
ตัวอย่างต่อไปนี้แสดงวิธีรวบรวมข้อมูลสําหรับประเภทข้อมูล
suspend fun aggregateDistance(
healthConnectClient: HealthConnectClient,
startTime: Instant,
endTime: Instant
) {
try {
val response = healthConnectClient.aggregate(
AggregateRequest(
metrics = setOf(DistanceRecord.DISTANCE_TOTAL),
timeRangeFilter = TimeRangeFilter.between(startTime, endTime)
)
)
// The result may be null if no data is available in the time range
val distanceTotalInMeters = response[DistanceRecord.DISTANCE_TOTAL]?.inMeters ?: 0L
} catch (e: Exception) {
// Run error handling here
}
}
การรวมข้อมูลทางสถิติ
การรวมข้อมูลทางสถิติจะคํานวณค่าต่ำสุด ค่าสูงสุด หรือค่าเฉลี่ยของระเบียนที่มีตัวอย่าง
ตัวอย่างต่อไปนี้แสดงวิธีใช้การรวมข้อมูลทางสถิติ
suspend fun aggregateHeartRate(
healthConnectClient: HealthConnectClient,
startTime: Instant,
endTime: Instant
) {
try {
val response =
healthConnectClient.aggregate(
AggregateRequest(
setOf(HeartRateRecord.BPM_MAX, HeartRateRecord.BPM_MIN),
timeRangeFilter = TimeRangeFilter.between(startTime, endTime)
)
)
// The result may be null if no data is available in the time range
val minimumHeartRate = response[HeartRateRecord.BPM_MIN]
val maximumHeartRate = response[HeartRateRecord.BPM_MAX]
} catch (e: Exception) {
// Run error handling here
}
}
ถัง
นอกจากนี้ Health Connect ยังช่วยให้คุณรวบรวมข้อมูลไว้ในที่เก็บข้อมูลได้ด้วย กลุ่มที่เก็บข้อมูล 2 ประเภทที่คุณใช้ได้ ได้แก่ duration และ period
เมื่อเรียกใช้แล้ว ระบบจะแสดงรายการที่เก็บข้อมูล โปรดทราบว่ารายการอาจมีความกระจัดกระจาย ดังนั้นที่เก็บข้อมูลจะไม่รวมอยู่ในรายการหากไม่มีข้อมูล
ระยะเวลา
ในกรณีนี้ ระบบจะแบ่งข้อมูลรวมออกเป็นกลุ่มภายในระยะเวลาที่กําหนด เช่น 1 นาทีหรือ 1 ชั่วโมง หากต้องการรวบรวมข้อมูลเป็นกลุ่ม ให้ใช้ aggregateGroupByDuration
โดยรับออบเจ็กต์ AggregateGroupByDurationRequest
ที่คุณเพิ่มประเภทเมตริก ช่วงเวลา และ Duration
เป็นพารามิเตอร์
ตัวอย่างต่อไปนี้แสดงการรวมขั้นตอนเป็นกลุ่มขนาด 1 นาที
suspend fun aggregateStepsIntoMinutes(
healthConnectClient: HealthConnectClient,
startTime: LocalDateTime,
endTime: LocalDateTime
) {
try {
val response =
healthConnectClient.aggregateGroupByDuration(
AggregateGroupByDurationRequest(
metrics = setOf(StepsRecord.COUNT_TOTAL),
timeRangeFilter = TimeRangeFilter.between(startTime, endTime),
timeRangeSlicer = Duration.ofMinutes(1L)
)
)
for (durationResult in response) {
// The result may be null if no data is available in the time range
val totalSteps = durationResult.result[StepsRecord.COUNT_TOTAL]
}
} catch (e: Exception) {
// Run error handling here
}
}
จุด
ในกรณีนี้ ระบบจะแบ่งข้อมูลรวมออกเป็นกลุ่มภายในระยะเวลาตามวันที่ เช่น สัปดาห์หรือเดือน หากต้องการรวบรวมข้อมูลเป็นกลุ่ม ให้ใช้ aggregateGroupByPeriod
โดยรับออบเจ็กต์ AggregateGroupByPeriodRequest
ที่คุณเพิ่มประเภทเมตริก ช่วงเวลา และ Period
เป็นพารามิเตอร์
ตัวอย่างต่อไปนี้แสดงการรวมขั้นตอนเป็นกลุ่มรายเดือน
suspend fun aggregateStepsIntoMonths(
healthConnectClient: HealthConnectClient,
startTime: LocalDateTime,
endTime: LocalDateTime
) {
try {
val response =
healthConnectClient.aggregateGroupByPeriod(
AggregateGroupByPeriodRequest(
metrics = setOf(StepsRecord.COUNT_TOTAL),
timeRangeFilter = TimeRangeFilter.between(startTime, endTime),
timeRangeSlicer = Period.ofMonths(1)
)
)
for (monthlyResult in response) {
// The result may be null if no data is available in the time range
val totalSteps = monthlyResult.result[StepsRecord.COUNT_TOTAL]
}
} catch (e: Exception) {
// Run error handling here
}
}
ข้อจำกัดในการอ่าน
โดยค่าเริ่มต้น แอปจะอ่านข้อมูลได้สูงสุด 30 วันเมื่อมีการให้สิทธิ์
เมื่อให้สิทธิ์ PERMISSION_READ_HEALTH_DATA_HISTORY
แอปจะอ่านข้อมูลที่เก่ากว่า 30 วันได้
ข้อจำกัด 30 วัน
แอปพลิเคชันจะอ่านข้อมูลจาก Health Connect ได้สูงสุด 30 วันก่อนวันที่มีการให้สิทธิ์เป็นครั้งแรก
อย่างไรก็ตาม หากผู้ใช้ลบแอปของคุณ ประวัติสิทธิ์จะหายไป หากผู้ใช้ติดตั้งแอปของคุณอีกครั้งและมอบสิทธิ์อีกครั้ง แอปจะอ่านข้อมูลจาก Health Connect ได้สูงสุด 30 วันก่อนวันที่ใหม่ดังกล่าว
ตัวอย่าง 30 วัน
หากผู้ใช้ให้สิทธิ์การอ่านแก่แอปพลิเคชันของคุณเป็นครั้งแรกในวันที่ 30 มีนาคม 2023 ข้อมูลล่าสุดที่แอปจะอ่านย้อนกลับได้คือตั้งแต่วันที่ 28 กุมภาพันธ์ 2023 เป็นต้นไป
จากนั้นผู้ใช้ลบแอปของคุณในวันที่ 10 พฤษภาคม 2023 ผู้ใช้ตัดสินใจที่จะติดตั้งแอปอีกครั้งในวันที่ 15 พฤษภาคม 2023 และมอบสิทธิ์การอ่าน วันที่ที่เร็วที่สุดที่แอปจะอ่านข้อมูลได้คือ15 เมษายน 2023
อ่านข้อมูลที่มีอายุมากกว่า 30 วัน
หากต้องการอ่านข้อมูลที่มีอายุมากกว่า 30 วัน คุณต้องขอสิทธิ์ PERMISSION_READ_HEALTH_DATA_HISTORY
หากไม่มีสิทธิ์นี้ การพยายามอ่านระเบียนเดียวที่เก่ากว่า 30 วันจะทำให้เกิดข้อผิดพลาด
นอกจากนี้ คุณยังอ่านข้อมูลที่เก่ากว่า 30 วันโดยใช้คําขอช่วงเวลาไม่ได้
ข้อมูลรวมที่ได้รับผลกระทบจากลําดับความสําคัญของแอปที่ผู้ใช้เลือก
ผู้ใช้ปลายทางสามารถกำหนดลำดับความสำคัญสำหรับแอปการนอนหลับและแอปกิจกรรมที่ผสานรวมกับ Health Connect เฉพาะผู้ใช้ปลายทางเท่านั้นที่จะเปลี่ยนแปลงรายการลำดับความสำคัญเหล่านี้ได้ เมื่อทำการอ่านแบบรวม Aggregate API จะพิจารณาข้อมูลซ้ำและเก็บเฉพาะข้อมูลจากแอปที่มีลําดับความสําคัญสูงสุด ข้อมูลซ้ำอาจเกิดขึ้นได้หากผู้ใช้มีแอปหลายแอปที่เขียนข้อมูลประเภทเดียวกัน เช่น จํานวนก้าวหรือระยะทางที่เดินไป ในเวลาเดียวกัน
ดูข้อมูลเกี่ยวกับวิธีที่ผู้ใช้ปลายทางสามารถจัดลำดับความสำคัญของแอปได้ที่หัวข้อจัดการข้อมูล Health Connect
ผู้ใช้สามารถเพิ่มหรือนำแอปออก รวมถึงเปลี่ยนลำดับความสำคัญได้ ผู้ใช้อาจต้องการนำแอปที่เขียนข้อมูลที่ซ้ำกันออกเพื่อให้ผลรวมของข้อมูลในหน้าจอ Health Connect เหมือนกับแอปที่ผู้ใช้ให้ความสำคัญสูงสุด ระบบจะอัปเดตยอดรวมของข้อมูลแบบเรียลไทม์
แม้ว่า Aggregate API จะคํานวณข้อมูลของแอปกิจกรรมและการนอนหลับโดยการกรองข้อมูลที่ซ้ำกันออกตามวิธีที่ผู้ใช้กําหนดลําดับความสําคัญ แต่คุณยังคงสร้างตรรกะของคุณเองเพื่อคํานวณข้อมูลแยกต่างหากสําหรับแต่ละแอปที่เขียนข้อมูลนั้นได้
Health Connect จะกรองข้อมูลที่ซ้ำกันออกเฉพาะประเภทข้อมูลกิจกรรมและการนอนหลับ และผลรวมของข้อมูลที่แสดงคือค่าหลังจากกรองข้อมูลที่ซ้ำกันออกโดย Aggregate API ผลรวมเหล่านี้แสดงวันเต็มวันล่าสุดที่มีข้อมูลจำนวนก้าวและระยะทาง สำหรับแอปประเภทอื่นๆ จำนวนแอปทั้งหมดที่รวมกันจะแสดงในผลรวมของข้อมูลใน Health Connect
การอ่านในเบื้องหลัง
คุณสามารถขอให้แอปพลิเคชันทำงานในเบื้องหลังและอ่านข้อมูลจาก Health Connect หากคุณขอสิทธิ์อ่านในเบื้องหลัง ผู้ใช้จะอนุญาตให้แอปของคุณเข้าถึงเพื่ออ่านข้อมูลในเบื้องหลังได้