การรวมข้อมูลใน 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 ยังให้คุณรวมข้อมูลลงในที่เก็บข้อมูลได้ด้วย ประเภท ที่เก็บข้อมูลที่คุณสามารถใช้ประกอบด้วย duration และ period
เมื่อเรียกใช้แล้ว ระบบจะแสดงรายการที่เก็บข้อมูล โปรดทราบว่ารายการอาจมีบางส่วน ที่เก็บข้อมูลจะไม่รวมอยู่ในรายการหากไม่มีข้อมูลใดๆ
ระยะเวลา
ในกรณีนี้ ข้อมูลรวมจะแยกออกเป็นที่เก็บข้อมูลภายในความยาวคงที่ที่
เช่น 1 นาทีหรือ 1 ชั่วโมง ในการรวมข้อมูลลงในที่เก็บข้อมูล ให้ใช้
aggregateGroupByDuration
ยอมรับ
AggregateGroupByDurationRequest
ที่คุณเพิ่ม
ประเภทเมตริก ช่วงเวลา และพารามิเตอร์ Duration
ตัวอย่างต่อไปนี้จะแสดงตัวอย่างของการรวมขั้นตอนไว้ในที่เก็บข้อมูลความยาวนาที
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
}
}
ระยะเวลา
ในกรณีนี้ ข้อมูลรวมจะแยกออกเป็นที่เก็บข้อมูลภายในจำนวนที่อิงตามวันที่
เช่น 1 สัปดาห์หรือ 1 เดือน ในการรวมข้อมูลลงในที่เก็บข้อมูล ให้ใช้
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 วัน
แอปพลิเคชันสามารถอ่านข้อมูลจาก Health Connect ได้สูงสุด 30 วันก่อนวันที่ ได้รับสิทธิ์ใดๆ ในครั้งแรก
แต่หากผู้ใช้ลบแอปของคุณ ประวัติสิทธิ์จะหายไป หากผู้ใช้ ติดตั้งแอปของคุณอีกครั้งและให้สิทธิ์อีกครั้ง แอปของคุณจะสามารถอ่านข้อมูล Health Connect ไม่เกิน 30 วันก่อนวันที่ใหม่ดังกล่าว
ตัวอย่าง
หากผู้ใช้ให้สิทธิ์อ่านแอปพลิเคชันของคุณเป็นครั้งแรกในวันที่ 30 มีนาคม 2023 ข้อมูลแรกสุดที่แอปสามารถอ่านได้คือตั้งแต่วันที่ 28 กุมภาพันธ์ 2023 เป็นต้นไป
จากนั้นผู้ใช้จะลบแอปของคุณในวันที่ 10 พฤษภาคม 2023 ผู้ใช้ตัดสินใจติดตั้งอีกครั้ง ในวันที่ 15 พฤษภาคม 2023 และให้สิทธิ์อ่าน วันแรกที่แอปของคุณสามารถทำได้ ที่อ่านแล้วข้อมูลจากวันที่ 15 เมษายน 2023