নিম্নলিখিত উদাহরণ আপনাকে দেখায় কিভাবে সাধারণ কর্মপ্রবাহের অংশ হিসাবে কাঁচা ডেটা পড়তে হয়।
ডেটা পড়ুন
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 দিন পর্যন্ত ডেটা পড়তে পারে যেকোন অনুমতি দিয়ে। 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 দিনের বেশি পুরানো কোনো ডেটা পড়তে পারবেন না।