কাঁচা তথ্য পড়ুন

নিম্নলিখিত উদাহরণ আপনাকে দেখায় কিভাবে সাধারণ কর্মপ্রবাহের অংশ হিসাবে কাঁচা ডেটা পড়তে হয়।

ডেটা পড়ুন

Health Connect অ্যাপগুলিকে ডেটাস্টোর থেকে ডেটা পড়ার অনুমতি দেয় যখন অ্যাপটি অগ্রভাগে এবং পটভূমিতে থাকে:

  • ফোরগ্রাউন্ড রিডস : যখন আপনার অ্যাপ ফোরগ্রাউন্ডে থাকে তখন আপনি সাধারণত Health Connect থেকে ডেটা পড়তে পারেন। এই ক্ষেত্রে, আপনি এই ক্রিয়াকলাপটি চালানোর জন্য একটি ফোরগ্রাউন্ড পরিষেবা ব্যবহার করার কথা বিবেচনা করতে পারেন যদি কোনও পঠিত অপারেশন চলাকালীন ব্যবহারকারী বা সিস্টেম আপনার অ্যাপকে ব্যাকগ্রাউন্ডে রাখে।

  • পটভূমি পড়া : ব্যবহারকারীর কাছ থেকে অতিরিক্ত অনুমতির অনুরোধ করে, ব্যবহারকারী বা সিস্টেম আপনার অ্যাপটিকে পটভূমিতে রাখার পরে আপনি ডেটা পড়তে পারেন। সম্পূর্ণ পটভূমি পড়ার উদাহরণ দেখুন।

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

রেকর্ড পড়তে, একটি ReadRecordsRequest তৈরি করুন এবং আপনি যখন readRecords কল করবেন তখন এটি সরবরাহ করুন।

নিম্নলিখিত উদাহরণ দেখায় কিভাবে একটি নির্দিষ্ট সময়ের মধ্যে একটি ব্যবহারকারীর জন্য ধাপ গণনা ডেটা পড়তে হয়। SensorManager সাথে একটি বর্ধিত উদাহরণের জন্য, ধাপ গণনা ডেটা নির্দেশিকা দেখুন।

suspend fun readStepsByTimeRange(
    healthConnectClient: HealthConnectClient,
    startTime: Instant,
    endTime: Instant
) {
    try {
        val response = healthConnectClient.readRecords(
            ReadRecordsRequest(
                StepsRecord::class,
                timeRangeFilter = TimeRangeFilter.between(startTime, endTime)
            )
        )
        for (stepRecord in response.records) {
            // Process each step record
        }
    } catch (e: Exception) {
        // Run error handling here
    }
}

পটভূমি পড়ার উদাহরণ

পটভূমিতে ডেটা পড়তে, আপনার ম্যানিফেস্ট ফাইলে নিম্নলিখিত অনুমতি ঘোষণা করুন:

<application>
  <uses-permission android:name="android.permission.health.READ_HEALTH_DATA_IN_BACKGROUND" />
...
</application>

নিম্নলিখিত উদাহরণ দেখায় কিভাবে WorkManager ব্যবহার করে একটি নির্দিষ্ট সময়ের মধ্যে ব্যবহারকারীর জন্য ব্যাকগ্রাউন্ডে ধাপ গণনা ডেটা পড়তে হয়:

class ScheduleWorker(private val appContext: Context, workerParams: WorkerParameters):
    CoroutineWorker(appContext, workerParams) {

    override suspend fun doWork(): Result {
        // Read data and process it.
        ...

        // Return success indicating successful data retrieval
        return Result.success()
    }
}

if (healthConnectClient
    .features
    .getFeatureStatus(
    HealthConnectFeatures.FEATURE_READ_HEALTH_DATA_IN_BACKGROUND
    ) == HealthConnectFeatures.FEATURE_STATUS_AVAILABLE) {

    // Check if necessary permission is granted
    val grantedPermissions = healthConnectClient.permissionController.getGrantedPermissions()

    if (PERMISSION_READ_HEALTH_DATA_IN_BACKGROUND !in grantedPermissions) {
        // Perform read in foreground
        ...
    } else {
        // Schedule the periodic work request in background
        val periodicWorkRequest = PeriodicWorkRequestBuilder<ScheduleWorker>(1, TimeUnit.HOURS)
            .build()

        WorkManager.getInstance(context).enqueueUniquePeriodicWork(
            "read_health_connect",
            ExistingPeriodicWorkPolicy.KEEP,
            periodicWorkRequest
        )
    }
} else {
  // Background reading is not available, perform read in foreground
  ...
}

পূর্বে লিখিত ডেটা পড়ুন

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

এই পরিস্থিতিতে ডেটা পড়ার জন্য, আপনাকে আপনার ReadRecordsRequest এর dataOriginFilter প্যারামিটারে একটি DataOrigin অবজেক্ট হিসাবে প্যাকেজের নাম নির্দেশ করতে হবে।

নিম্নলিখিত উদাহরণ দেখায় কিভাবে একটি প্যাকেজ নাম নির্দেশ করতে হয় যখন ধাপ রেকর্ড পড়ার সময়:

try {
    val response =  healthConnectClient.readRecords(
        ReadRecordsRequest(
            recordType = StepsRecord::class,
            timeRangeFilter = TimeRangeFilter.between(startTime, endTime),
            dataOriginFilter = setOf(DataOrigin("com.my.package.name"))
        )
    )
    for (record in response.records) {
        // Process each record
    }
} catch (e: Exception) {
    // Run error handling here
}

30 দিনের পড়ার সীমাবদ্ধতা

হেলথ কানেক্ট 30 দিন পর্যন্ত ডেটা পড়তে পারে যখন কোনও অনুমতি প্রথম দেওয়া হয়েছিল।

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

উদাহরণ

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

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