การรวบรวมข้อมูลใน 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
    }
}
กรองตามแหล่งที่มาของข้อมูล
นอกจากนี้ คุณยังกรองข้อมูลรวมตามแหล่งที่มาได้ด้วย เช่น รวมเฉพาะข้อมูลที่แอปหนึ่งๆ เขียน
ตัวอย่างต่อไปนี้แสดงวิธีใช้ dataOriginFilter และ
AggregateRequest เพื่อรวบรวมจำนวนก้าวจากแอปที่เฉพาะเจาะจง
suspend fun aggregateStepsFromSpecificApp(
    healthConnectClient: HealthConnectClient,
    startTime: Instant,
    endTime: Instant,
    appPackageName: String
) {
    try {
        val response = healthConnectClient.aggregate(
            AggregateRequest(
                metrics = setOf(StepsRecord.COUNT_TOTAL),
                timeRangeFilter = TimeRangeFilter.between(startTime, endTime),
                dataOriginFilter = setOf(DataOrigin(appPackageName))
            )
        )
        // The result may be null if no data is available in the time range
        val totalSteps = response[StepsRecord.COUNT_TOTAL] ?: 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] ?: 0L
        val maximumHeartRate = response[HeartRateRecord.BPM_MAX] ?: 0L
    } catch (e: Exception) {
        // Run error handling here
    }
}
ถัง
นอกจากนี้ Health Connect ยังช่วยให้คุณรวบรวมข้อมูลลงในกลุ่มได้ด้วย ถัง 2 ประเภทที่คุณใช้ได้ ได้แก่ duration และ period
เมื่อเรียกใช้แล้ว เมธอดเหล่านี้จะแสดงผลรายการที่เก็บข้อมูล โปรดทราบว่ารายการอาจมีข้อมูลไม่ครบถ้วน ดังนั้น ระบบจะไม่รวมที่เก็บข้อมูลไว้ในรายการหากไม่มีข้อมูล
ระยะเวลา
ในกรณีนี้ ระบบจะแบ่งข้อมูลที่รวบรวมไว้เป็นกลุ่มภายในระยะเวลาที่กำหนด เช่น 1 นาทีหรือ 1 ชั่วโมง หากต้องการรวมข้อมูลลงในที่เก็บข้อมูล ให้ใช้
aggregateGroupByDuration โดยจะยอมรับออบเจ็กต์ 
AggregateGroupByDurationRequest ที่คุณเพิ่มประเภทเมตริก ช่วงเวลา และ Duration เป็นพารามิเตอร์
คุณใช้คู่ของออบเจ็กต์ Instant หรือ LocalDateTime สำหรับ startTime และ endTime ใน TimeRangeFilter ได้
ตัวอย่างต่อไปนี้แสดงการรวมขั้นตอนต่างๆ เป็นกลุ่มที่มีความยาว 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] ?: 0L
        }
    } 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] ?: 0L
        }
    } catch (e: Exception) {
        // Run error handling here
    }
}
อ่านข้อจำกัด
โดยค่าเริ่มต้น แอปพลิเคชันทั้งหมดจะอ่านข้อมูลจาก Health Connect ได้นานสูงสุด 30 วัน ก่อนที่จะมีการให้สิทธิ์ครั้งแรก
หากต้องการขยายสิทธิ์การอ่านนอกเหนือจากข้อจำกัดเริ่มต้น ให้ขอPERMISSION_READ_HEALTH_DATA_HISTORY
ไม่เช่นนั้น หากไม่มีสิทธิ์นี้ การพยายามอ่านบันทึกที่เก่ากว่า 30 วันจะทำให้เกิดข้อผิดพลาด
ประวัติสิทธิ์ของแอปที่ถูกลบ
หากผู้ใช้ลบแอปของคุณ ระบบจะเพิกถอนสิทธิ์ทั้งหมด รวมถึงสิทธิ์เข้าถึงประวัติ หากผู้ใช้ติดตั้งแอปของคุณอีกครั้งและให้สิทธิ์อีกครั้ง ข้อจำกัดเริ่มต้นเดียวกันจะมีผล และแอปของคุณจะอ่านข้อมูลจาก Health Connect ได้นานสูงสุด 30 วันก่อนวันที่ใหม่นั้น
เช่น สมมติว่า ผู้ใช้ลบแอปของคุณในวันที่ 10 พฤษภาคม 2023 แล้วติดตั้งแอปอีกครั้ง ในวันที่ 15 พฤษภาคม 2023 และให้สิทธิ์อ่าน วันที่ที่เร็วที่สุด ที่แอปของคุณอ่านข้อมูลได้โดยค่าเริ่มต้น คือ15 เมษายน 2023
รวบรวมข้อมูลที่ได้รับผลกระทบจากลำดับความสำคัญของแอปที่ผู้ใช้เลือก
ผู้ใช้ปลายทางสามารถตั้งค่าลำดับความสำคัญสำหรับแอปการนอนหลับและกิจกรรมที่ผสานรวมกับ Health Connect ได้ มีเพียงผู้ใช้ปลายทางเท่านั้นที่เปลี่ยนแปลงรายการลำดับความสำคัญเหล่านี้ได้ เมื่อคุณอ่านข้อมูลที่รวบรวมแล้ว Aggregate API จะพิจารณา ข้อมูลที่ซ้ำกันและเก็บเฉพาะข้อมูลจากแอปที่มี ลำดับความสำคัญสูงสุด ข้อมูลที่ซ้ำกันอาจเกิดขึ้นหากผู้ใช้มีแอปหลายแอปที่เขียนข้อมูลประเภทเดียวกัน เช่น จำนวนก้าวที่เดินหรือระยะทางที่เดิน ในเวลาเดียวกัน
ดูข้อมูลเกี่ยวกับวิธีที่ผู้ใช้ปลายทางจัดลําดับความสําคัญของแอปได้ที่จัดการข้อมูล Health Connect
ผู้ใช้สามารถเพิ่มหรือนำแอปออก รวมถึงเปลี่ยนลำดับความสำคัญของแอปได้ ผู้ใช้อาจต้องการนำแอปที่เขียนข้อมูลที่ซ้ำกันออกเพื่อให้ผลรวมของข้อมูลในหน้าจอ Health Connect เหมือนกับแอปที่ผู้ใช้ให้ความสำคัญสูงสุด ระบบจะอัปเดตยอดรวมของข้อมูลแบบเรียลไทม์
แม้ว่า Aggregate API จะคํานวณข้อมูลของแอปกิจกรรมและการนอนหลับโดย การขจัดข้อมูลที่ซ้ำกันตามวิธีที่ผู้ใช้ ตั้งค่าลําดับความสําคัญ แต่คุณยังคงสร้าง ตรรกะของคุณเองเพื่อคํานวณข้อมูลแยกกันสําหรับแต่ละแอปที่เขียนข้อมูลนั้นได้
Health Connect จะขจัดข้อมูลที่ซ้ำกันเฉพาะประเภทข้อมูลกิจกรรมและการนอนหลับ และ ยอดรวมข้อมูลที่แสดงคือค่าหลังจากที่ Aggregate API ขจัดข้อมูลที่ซ้ำกันแล้ว ยอดรวมเหล่านี้แสดงข้อมูลของวันล่าสุดที่สมบูรณ์ ซึ่งมีข้อมูลเกี่ยวกับจำนวนก้าวและระยะทาง สำหรับข้อมูลประเภทอื่นๆ ผลลัพธ์ที่รวบรวมจะรวมข้อมูลทั้งหมดของประเภทนั้นๆ ใน Health Connect จากแอปทั้งหมด ที่เขียนข้อมูล
การอ่านในเบื้องหลัง
คุณขอให้แอปพลิเคชันทำงานในเบื้องหลังและอ่านข้อมูลจาก Health Connect ได้ หากคุณขอสิทธิ์ อ่านในเบื้องหลัง ผู้ใช้จะให้สิทธิ์แอปของคุณในการอ่านข้อมูลในเบื้องหลังได้
ประเภทข้อมูลรวมที่รองรับตามระเบียน
ตารางนี้แสดงประเภทข้อมูลรวมทั้งหมดที่บันทึก Health Connect รองรับ
