इकट्ठा किया गया डेटा देखना

Health Connect में मौजूद डेटा को एग्रीगेट करने में बेसिक एग्रीगेशन या एग्रीगेट करना शामिल होता है बकेट में डेटा शामिल करें. नीचे दिए गए वर्कफ़्लो में आपको इन दोनों सुविधाओं को इस्तेमाल करने का तरीका बताया गया है.

बेसिक एग्रीगेशन

अपने डेटा पर बेसिक एग्रीगेशन का इस्तेमाल करने के लिए, 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 की मदद से, डेटा को बकेट में भी इकट्ठा किया जा सकता है. दो तरह के आपके पास इन बकेट का इस्तेमाल करने की सुविधा होती है. इसमें अवधि और पीरियड शामिल हैं.

कॉल किए जाने पर, वे बकेट की सूची दिखाते हैं. ध्यान दें कि सूची छोटी हो सकती है, इसलिए अगर बकेट में कोई डेटा नहीं है, तो उसे सूची में शामिल नहीं किया जाएगा.

कुल अवधि

इस मामले में, इकट्ठा किए गए डेटा को समय, जैसे एक मिनट या एक घंटा. डेटा को बकेट में इकट्ठा करने के लिए, 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
    }
}

Period

इस मामले में, इकट्ठा किए गए डेटा को तारीख के हिसाब से रकम के हिसाब से बकेट में बांट दिया जाता है समय की पाबंदी है, जैसे कोई हफ़्ता या महीना. डेटा को बकेट में इकट्ठा करने के लिए, 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 का है.