সমষ্টিগত ডেটা পড়ুন

হেলথ কানেক্টে ডেটা একত্রিত করার মধ্যে মৌলিক একত্রীকরণ বা বালতিতে ডেটা একত্রিত করা অন্তর্ভুক্ত। নিম্নলিখিত কর্মপ্রবাহগুলি আপনাকে দেখায় যে কীভাবে উভয়ই করতে হয়।

মৌলিক সমষ্টি

আপনার ডেটাতে মৌলিক একত্রীকরণ ব্যবহার করতে, আপনার HealthConnectClient অবজেক্টে aggregate ফাংশন ব্যবহার করুন। এটি একটি 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
    }
}

সময়কাল

এই ক্ষেত্রে, একত্রিত ডেটা তারিখ-ভিত্তিক সময়ের মধ্যে বালতিতে বিভক্ত করা হয়, যেমন এক সপ্তাহ বা এক মাসের মধ্যে। বালতিতে ডেটা একত্রিত করতে, 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 দিনের সীমাবদ্ধতা

অ্যাপ্লিকেশনগুলি প্রথমবার অনুমতি দেওয়ার 30 দিন আগে পর্যন্ত Health Connect থেকে ডেটা পড়তে পারে৷

যাইহোক, যদি কোনও ব্যবহারকারী আপনার অ্যাপটি মুছে ফেলে তবে অনুমতির ইতিহাস হারিয়ে যায়। যদি ব্যবহারকারী আপনার অ্যাপ পুনরায় ইনস্টল করে এবং আবার অনুমতি দেয়, তাহলে আপনার অ্যাপটি সেই নতুন তারিখের 30 দিন আগে পর্যন্ত Health Connect থেকে ডেটা পড়তে পারে।

30 দিনের উদাহরণ

30 মার্চ, 2023-এ যদি কোনও ব্যবহারকারী প্রথমে আপনার আবেদনটি পড়ার অনুমতি দেয়, তাহলে আপনার অ্যাপটি 28 ফেব্রুয়ারি, 2023 এর পর থেকে সবচেয়ে প্রথম যে ডেটা পড়তে পারে তা হবে।

তারপরে ব্যবহারকারী আপনার অ্যাপটি 10 ​​মে, 2023-এ মুছে দেবেন। ব্যবহারকারী 15 মে, 2023-এ এটি পুনরায় ইনস্টল করার এবং পড়ার অনুমতি দেওয়ার সিদ্ধান্ত নেয়। আপনার অ্যাপটি এখন যে তারিখ থেকে ডেটা পড়তে পারে সেটি হল 15 এপ্রিল, 2023

30 দিনের বেশি পুরানো ডেটা পড়ুন

আপনি যদি 30 দিনের বেশি পুরানো ডেটা পড়তে চান তবে আপনাকে অবশ্যই PERMISSION_READ_HEALTH_DATA_HISTORY অনুমতি ব্যবহার করতে হবে৷ এই অনুমতি ব্যতীত, 30 দিনের বেশি পুরানো একটি একক রেকর্ড পড়ার প্রচেষ্টার ফলে একটি ত্রুটি হয়৷ আপনি সময়সীমার অনুরোধগুলির একটি ব্যবহার করে 30 দিনের বেশি পুরানো কোনো ডেটা পড়তে পারবেন না।