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

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

মৌলিক সমষ্টি

আপনার ডেটাতে মৌলিক একত্রীকরণ ব্যবহার করতে, আপনার 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 দিন আগে পর্যন্ত Health Connect থেকে ডেটা পড়তে পারে৷

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

ব্যবহারকারী-নির্বাচিত অ্যাপ অগ্রাধিকার দ্বারা প্রভাবিত সমষ্টিগত ডেটা

শেষ ব্যবহারকারীরা স্লিপ এবং অ্যাক্টিভিটি অ্যাপের জন্য অগ্রাধিকার সেট করতে পারেন যা তারা Health Connect-এর সাথে একত্রিত করেছে। শুধুমাত্র শেষ ব্যবহারকারীরাই এই অগ্রাধিকার তালিকা পরিবর্তন করতে পারেন। যখন আপনি একটি সমষ্টিগত পাঠ সম্পাদন করেন, তখন সমষ্টি API যেকোনো ডুপ্লিকেট ডেটার জন্য অ্যাকাউন্ট করে এবং সর্বোচ্চ অগ্রাধিকার দিয়ে শুধুমাত্র অ্যাপ থেকে ডেটা রাখে। ডুপ্লিকেট ডেটা থাকতে পারে যদি ব্যবহারকারীর একাধিক অ্যাপ একই ধরনের ডেটা লেখা থাকে—যেমন পদক্ষেপের সংখ্যা বা কভার করা দূরত্ব—একই সময়ে।

শেষ ব্যবহারকারীরা কীভাবে তাদের অ্যাপগুলিকে অগ্রাধিকার দিতে পারে সে সম্পর্কে তথ্যের জন্য, স্বাস্থ্য সংযোগ ডেটা পরিচালনা করুন দেখুন।

ব্যবহারকারী অ্যাপ যোগ করতে বা অপসারণ করতে পারে সেইসাথে তাদের অগ্রাধিকার পরিবর্তন করতে পারে। একজন ব্যবহারকারী এমন একটি অ্যাপ সরাতে চাইতে পারেন যা ডুপ্লিকেট ডেটা লিখছে যাতে হেলথ কানেক্ট স্ক্রিনে থাকা ডেটার মোট সংখ্যা তারা যে অ্যাপটিকে সর্বোচ্চ অগ্রাধিকার দিয়েছে তার অনুরূপ। মোট ডেটা রিয়েল টাইমে আপডেট করা হয়।

যদিও এগ্রিগেট এপিআই ব্যবহারকারী কীভাবে অগ্রাধিকার সেট করেছে সে অনুযায়ী ডেটা ডিডুপ করে অ্যাক্টিভিটি এবং স্লিপ অ্যাপের ডেটা গণনা করে, তবুও আপনি সেই ডেটা লেখা প্রতিটি অ্যাপের জন্য আলাদাভাবে ডেটা গণনা করতে আপনার নিজস্ব যুক্তি তৈরি করতে পারেন।

হেলথ কানেক্ট দ্বারা শুধুমাত্র অ্যাক্টিভিটি এবং স্লিপ ডেটা টাইপ ডিডুপ করা হয় এবং মোট দেখানো ডেটা হল অ্যাগ্রিগেট API দ্বারা ডিডুপ করার পরের মান। এই টোটালগুলি সাম্প্রতিক পুরো দিন দেখায় যেখানে পদক্ষেপ এবং দূরত্বের জন্য ডেটা বিদ্যমান। অন্যান্য ধরনের অ্যাপের জন্য, এই ধরনের সমস্ত অ্যাপের মোট সংখ্যা হেলথ কানেক্টের ডেটা টোটে দেখানো হয়েছে।

পটভূমি পড়া

আপনি অনুরোধ করতে পারেন যে আপনার অ্যাপ্লিকেশনটি ব্যাকগ্রাউন্ডে চলবে এবং Health Connect থেকে ডেটা পড়তে হবে। আপনি যদি ব্যাকগ্রাউন্ড পড়ার অনুমতির অনুরোধ করেন, আপনার ব্যবহারকারী আপনার অ্যাপকে ব্যাকগ্রাউন্ডে ডেটা পড়ার অনুমতি দিতে পারে।

রেকর্ড দ্বারা সমর্থিত সমষ্টিগত ডেটা প্রকার

এই টেবিলটি Health Connect রেকর্ডের দ্বারা সমর্থিত সমষ্টিগত ডেটা প্রকারের তালিকা করে।

রেকর্ড সামগ্রিক তথ্য প্রকার
ActiveCaloriesBurnedRecord ACTIVE_CALORIES_TOTAL
BasalMetabolicRateRecord BASAL_CALORIES_TOTAL
BloodPressureRecord DIASTOLIC_AVG , DIASTOLIC_MAX , DIASTOLIC_MIN , SYSTOLIC_AVG , SYSTOLIC_MAX , SYSTOLIC_MIN
CyclingPedalingCadenceRecord RPM_AVG , RPM_MAX , RPM_MIN
DistanceRecord DISTANCE_TOTAL
ElevationGainedRecord ELEVATION_GAINED_TOTAL
ExerciseSessionRecord EXERCISE_DURATION_TOTAL
FloorsClimbedRecord FLOORS_CLIMBED_TOTAL
HeartRateRecord BPM_AVG , BPM_MAX , BPM_MIN , MEASUREMENTS_COUNT
HeightRecord HEIGHT_AVG , HEIGHT_MAX , HEIGHT_MIN
HydrationRecord VOLUME_TOTAL
MindfulnessSessionRecord MINDFULNESS_DURATION_TOTAL
NutritionRecord BIOTIN_TOTAL , CAFFEINE_TOTAL , CALCIUM_TOTAL , CHLORIDE_TOTAL , CHOLESTEROL_TOTAL , CHROMIUM_TOTAL , COPPER_TOTAL , DIETARY_FIBER_TOTAL , ENERGY_FROM_FAT_TOTAL , ENERGY_FROM_FAT_TOTAL , ENERGY_TOTAL , FOLATE_TOTAL , FOLIC_ACID_TOTAL , FOLACID IODINE_TOTAL , IRON_TOTAL , MAGNESIUM_TOTAL , MOLYBDENUM_TOTAL , MONOUNSATURATED_FAT_TOTAL , NIACIN_TOTAL , PANTOTHENIC_ACID_TOTAL , PHOSPHORUS_TOTAL , POLYUNSATURATED_FAT_TOTAL , POTASSIUM_TOTAL , PROTEIN_TOTAL RIBOFLAVIN_TOTAL , SATURATED_FAT_TOTAL , SELENIUM_TOTAL , SODIUM_TOTAL , SUGAR_TOTAL , THIAMIN_TOTAL , TOTAL_CARBOHYDRATE_TOTAL , TOTAL_FAT_TOTAL , UNSATURATED_FAT_TOTAL , UNSATURATED_FAT_TOTAL , VITAMIN_A_TOTAL , VITAMIN_B12_TOTAL VITAMIN_B6_TOTAL , VITAMIN_C_TOTAL , VITAMIN_D_TOTAL , VITAMIN_E_TOTAL , VITAMIN_K_TOTAL , ZINC_TOTAL
PowerRecord POWER_AVG , POWER_MAX , POWER_MIN
RestingHeartRateRecord BPM_AVG , BPM_MAX , BPM_MIN
SkinTemperatureRecord TEMPERATURE_DELTA_AVG , TEMPERATURE_DELTA_MAX , TEMPERATURE_DELTA_MIN
SleepSessionRecord SLEEP_DURATION_TOTAL
TotalCaloriesBurnedRecord ENERGY_TOTAL
WeightRecord WEIGHT_AVG , WEIGHT_MAX , WEIGHT_MIN
WheelchairPushesRecord COUNT_TOTAL