এই নির্দেশিকা Health Connect-এর 1.1.0-alpha12 ভার্সনের সাথে মানানসই।
এই নির্দেশিকা থেকে আপনি জানতে পারবেন যে কীভাবে আপনার অ্যাপে Health Connect ব্যবহার করা শুরু করতে পারবেন।
ধাপ ১: Health Connect অ্যাপ প্রস্তুত করা
Health Connect SDK-এর মাধ্যমে আপনার অ্যাপ্লিকেশন যত অনুরোধ পাঠায়, সেগুলি হ্যান্ডেল করার দায়িত্ব Health Connect অ্যাপের। এইসব অনুরোধের মধ্যে ডেটা স্টোর করা এবং এর রিড ও রাইট অ্যাক্সেস ম্যানেজ করা অন্তর্ভুক্ত।
ফোনে ইনস্টল করা Android ভার্সনের উপর Health Connect-এ অ্যাক্সেস নির্ভর করে। Android-এর সাম্প্রতিক কয়েকটি ভার্সন কীভাবে ম্যানেজ করতে হয় তা নিম্নলিখিত বিভাগে বর্ণনা করা হয়েছে।
Android 14
Android 14 (API লেভেল 34) থেকে শুরু করে, Health Connect হল Android ফ্রেমওয়ার্কের অংশ। Health Connect-এর এই ভার্সন হল একটি ফ্রেমওয়ার্ক মডিউল। এর সাথে কোনও সেট-আপের প্রয়োজন নেই।
Android 13 ও তার আগের যেকোনও ভার্সন
Android 13 (API লেভেল 33) ও এর আগের যেকোনও ভার্সনে, Health Connect Android ফ্রেমওয়ার্কের অংশ নয়। এর সাথে, আপনাকে Google Play Store থেকে Health Connect অ্যাপ ইনস্টল করতে হবে।
আপনি যদি Android 13 ও তার আগের যেকোনও ভার্সনে Health Connect-এর সাথে আপনার অ্যাপ ইন্টিগ্রেট করে থাকেন এবং Android 14-এ মাইগ্রেট করতে চান, তাহলে Android 13 থেকে 14-এ মাইগ্রেট করুন লিঙ্কে দেখুন।
Health Connect অ্যাপ খুলুন
ডিফল্ট হিসেবে হোম স্ক্রিনে Health Connect আর দেখা যায় না। আপনি সেটিংস-এর মাধ্যমে Health Connect খুলতে পারবেন, তবে Android ভার্সনের উপর নির্ভর করে পাথ আলাদা আলাদা হয়:
- Android 14 ও এর পরের যেকোনও ভার্সনে: সেটিংস > সুরক্ষা ও গোপনীয়তা > গোপনীয়তা নিয়ন্ত্রণ > Health Connect বিকল্পে যান, অথবা সেটিংস থেকে Health Connect খুঁজে দেখুন।
- Android 13 ও তার আগের যেকোনও ভার্সনে: সেটিংস > অ্যাপ > Health Connect বিকল্পে যান, অথবা আপনার দ্রুত সেটিংস মেনুতে Health Connect যোগ করুন।
ধাপ ২: আপনার অ্যাপে Health Connect SDK যোগ করুন
Health Connect SDK, Health Connect API ব্যবহার করে Health Connect অ্যাপের ডেটা স্টোরের বিরুদ্ধে অপারেশন পারফর্ম করার জন্য অনুরোধ পাঠানোর জন্য দায়ী।
আপনার মডিউল-লেভেল build.gradle ফাইলে Health Connect SDK ডিপেন্ডেন্সি যোগ করুন:
dependencies {
...
implementation "androidx.health.connect:connect-client:1.2.0-alpha06"
...
}
লেটেস্ট ভার্সনের জন্য Health Connect রিলিজ দেখুন।
Canary রিলিজ চ্যানেল ফিচার ব্যবহার করা
Canary রিলিজ চ্যানেলে ফিচার ব্যবহার করতে, আপনার মডিউল-লেভেল build.gradle ফাইলে
compileSdk-এর ভার্সন পরিবর্তন করুন:
android {
compileSdkPreview = "CANARY"
}
ধাপ ৩: আপনার অ্যাপ কনফিগার করা
নিম্নলিখিত বিভাগগুলি ব্যাখ্যা করে যে কীভাবে আপনার অ্যাপকে Health Connect-এর সাথে ইন্টিগ্রেট করার জন্য কনফিগার করতে হয়।
ফিচার উপলভ্য কিনা দেখে নিন
Health Connect-এ নতুন ফিচার যোগ করা হলে, ব্যবহারকারীরা সবসময় Health Connect-এর ভার্সন আপডেট নাও করতে পারেন। ফিচার উপলভ্যতা API হল এমন একটি উপায় যার মাধ্যমে Health Connect-এর কোনও ফিচার আপনার ব্যবহারকারীর ডিভাইসে উপলভ্য আছে কিনা তা চেক করা যায় এবং কী অ্যাকশন নিতে হবে তা সিদ্ধান্ত নেওয়া যায়।
ফিচার উপলভ্য কিনা চেক করার মূল ফাংশন হল
getFeatureStatus()। এটি পূর্ণসংখ্যা ধ্রুবক
FEATURE_STATUS_AVAILABLE বা FEATURE_STATUS_UNAVAILABLE রিটার্ন করে:
fun enqueueBackgroundReadWorker(context: Context, healthConnectClient: HealthConnectClient) { if (healthConnectClient .features .getFeatureStatus( HealthConnectFeatures.FEATURE_READ_HEALTH_DATA_IN_BACKGROUND ) == HealthConnectFeatures.FEATURE_STATUS_AVAILABLE ) { val periodicWorkRequest = PeriodicWorkRequestBuilder<ScheduleWorker>(1, TimeUnit.HOURS) .build() WorkManager.getInstance(context).enqueueUniquePeriodicWork( "read_health_connect", ExistingPeriodicWorkPolicy.KEEP, periodicWorkRequest ) } }
অনুমতি ঘোষণা করা
স্বাস্থ্য ও ফিটনেস ডেটা অ্যাক্সেস করা সংবেদনশীল বিষয়। ব্যবহারকারীর বিশ্বাস বজায় রাখতে, Health Connect রিড ও রাইট অপারেশনের জন্য সুরক্ষার একটি লেয়ার প্রয়োগ করে।
আপনার অ্যাপে, প্রয়োজনীয় ডেটা ধরনের উপর ভিত্তি করে AndroidManifest.xml
ফাইলে রিড ও রাইট পার্মিশন ঘোষণা করুন, যা Play Console-এ আপনার ঘোষণা করা অ্যাক্সেসের সাথে
ম্যাচ করতে হবে।
Health Connect, Android-এর স্ট্যান্ডার্ড অনুমতি সংক্রান্ত ঘোষণা ফর্ম্যাট ব্যবহার করে।
<uses-permission> ট্যাগ সহ অনুমতি অ্যাসাইন করুন। এগুলিকে
<manifest> ট্যাগের মধ্যে নেস্ট করুন।
<manifest>
<uses-permission android:name="android.permission.health.READ_HEART_RATE"/>
<uses-permission android:name="android.permission.health.WRITE_HEART_RATE"/>
<uses-permission android:name="android.permission.health.READ_STEPS"/>
<uses-permission android:name="android.permission.health.WRITE_STEPS"/>
<application>
...
</application>
</manifest>
অনুমতি ও তার সংশ্লিষ্ট ডেটা ধরনের সম্পূর্ণ তালিকা দেখতে, ডেটা ধরনের তালিকা দেখুন।
আপনার অ্যাপের গোপনীয়তা নীতি সংক্রান্ত ডায়ালগ দেখানো
আপনার Android ম্যানিফেস্টে এমন অ্যাক্টিভিটি থাকতে হবে যা আপনার অ্যাপের গোপনীয়তা নীতি দেখায়। এটি হল অনুরোধ করা অনুমতির জন্য আপনার অ্যাপের যুক্তি, যা ব্যবহারকারীর ডেটা কীভাবে ব্যবহার ও ম্যানেজ করা হয় তা বর্ণনা করে।
Health Connect-এর অনুমতি স্ক্রিনে ব্যবহারকারী
গোপনীয়তা নীতি লিঙ্কে ক্লিক করলে, অ্যাপে পাঠানো ACTION_SHOW_PERMISSIONS_RATIONALE
ইন্টেন্ট হ্যান্ডেল করার জন্য এই অ্যাক্টিভিটি ঘোষণা করুন।
...
<application>
...
<!-- For supported versions through Android 13, create an activity to show the rationale
of Health Connect permissions once users click the privacy policy link. -->
<activity
android:name=".PermissionsRationaleActivity"
android:exported="true">
<intent-filter>
<action android:name="androidx.health.ACTION_SHOW_PERMISSIONS_RATIONALE" />
</intent-filter>
</activity>
<!-- For versions starting Android 14, create an activity alias to show the rationale
of Health Connect permissions once users click the privacy policy link. -->
<activity-alias
android:name="ViewPermissionUsageActivity"
android:exported="true"
android:targetActivity=".PermissionsRationaleActivity"
android:permission="android.permission.START_VIEW_PERMISSION_USAGE">
<intent-filter>
<action android:name="android.intent.action.VIEW_PERMISSION_USAGE" />
<category android:name="android.intent.category.HEALTH_PERMISSIONS" />
</intent-filter>
</activity-alias>
...
</application>
...
Health Connect ক্লায়েন্ট পাওয়া
HealthConnectClient হল Health Connect API-এর এন্ট্রি পয়েন্ট।
এটি Health Connect অ্যাপে ডেটা স্টোর ব্যবহার করার জন্য অ্যাপকে অনুমতি দেয়। এটি
আন্ডারলাইং স্টোরেজ লেয়ারের সাথে এর কানেকশন অটোমেটিক ম্যানেজ করে এবং
আউটগোয়িং অনুরোধ ও ইনকামিং উত্তরের সমস্ত IPC ও সিরিয়ালাইজেশন হ্যান্ডেল করে।
ক্লায়েন্ট ইনস্ট্যান্স পেতে, প্রথমে আপনার Android ম্যানিফেস্টে Health Connect প্যাকেজের নাম ঘোষণা করুন।
<application> ... </application>
...
<!-- Check if Health Connect is installed -->
<queries>
<package android:name="com.google.android.apps.healthdata" />
</queries>
তারপরে আপনার অ্যাক্টিভিটিতে, getSdkStatus ব্যবহার করে Health Connect ইনস্টল করা হয়েছে কিনা
তা চেক করুন। যদি থাকে, তাহলে একটি
HealthConnectClient ইনস্ট্যান্স পান।
val availabilityStatus = HealthConnectClient.getSdkStatus(context) if (availabilityStatus == HealthConnectClient.SDK_UNAVAILABLE) { Box(modifier = modifier.padding(16.dp), contentAlignment = Alignment.Center) { Text( text = "Health Connect is not available on this device. Please ensure it is installed and updated.", style = MaterialTheme.typography.bodyLarge, textAlign = TextAlign.Center ) } return } val healthConnectClient = remember { if (availabilityStatus == HealthConnectClient.SDK_AVAILABLE) { HealthConnectClient.getOrCreate(context) } else { null } }
ধাপ ৪: ব্যবহারকারীর থেকে অনুমতি চাওয়া
ক্লায়েন্ট ইনস্ট্যান্স তৈরি করার পরে, আপনার অ্যাপকে ব্যবহারকারীর কাছে অনুমতি চেয়ে অনুরোধ করতে হবে। ব্যবহারকারীদের যেকোনও সময় অনুমতি দেওয়া বা প্রত্যাহার করার সুবিধা দিতে হবে। এটি করতে, প্রয়োজনীয় ডেটার ধরনের জন্য অনুমতির একটি সেট তৈরি করুন। সেটে থাকা অনুমতিগুলি প্রথমে আপনার Android মেনিফেস্টে ঘোষণা করা হয়েছে কিনা তা ভালো করে দেখে নিন।
val permissions = setOf( HealthPermission.getReadPermission(HeartRateRecord::class), HealthPermission.getWritePermission(HeartRateRecord::class), HealthPermission.getReadPermission(StepsRecord::class), HealthPermission.getWritePermission(StepsRecord::class) )
getGrantedPermissions
ব্যবহার করুন। তা না হলে, সেইসব অনুমতির অনুরোধ করতে
createRequestPermissionResultContract
ব্যবহার করুন। এটি Health Connect-এর অনুমতি সংক্রান্ত স্ক্রিন দেখায়।
val permissions = setOf( HealthPermission.getReadPermission(StepsRecord::class), HealthPermission.getWritePermission(StepsRecord::class), HealthPermission.getReadPermission(HeartRateRecord::class), HealthPermission.getWritePermission(HeartRateRecord::class) ) val requestPermissionsLauncher = rememberLauncherForActivityResult( contract = PermissionController.createRequestPermissionResultContract() ) { grantedPermissions -> if (grantedPermissions.containsAll(permissions)) { coroutineScope.launch { snackbarHostState.showSnackbar("Permissions granted!") } } else { coroutineScope.launch { snackbarHostState.showSnackbar("Permissions denied.") } } }
ব্যবহারকারীদের অনবোর্ড করা
অনেক অ্যাপে কাস্টম অনবোর্ডিং ফ্লো থাকে, যেমন ফিচার সম্পর্কে শিক্ষা বা ব্যবহারকারীর সম্মতি চাওয়া। আপনার অনবোর্ডিং ফ্লো লঞ্চ করার জন্য Health Connect-কে চালু করতে, আপনার মেনিফেস্টে নিম্নলিখিত যোগ করুন:
<!-- Required to support pre-Android 14 devices with APK Health Connect -->
<activity
android:name=".OnboardingActivity"
android:exported="true"
android:permission="com.google.android.apps.healthdata.permission.START_ONBOARDING">
<intent-filter>
<action android:name="androidx.health.ACTION_SHOW_ONBOARDING"/>
</intent-filter>
</activity>
<!-- Required to support Android 14+ devices with platform Health Connect -->
<activity-alias
android:name="UAndAboveOnboardingActivity"
android:exported="true"
android:targetActivity=".OnboardingActivity"
android:permission="android.permission.health.START_ONBOARDING">
<intent-filter>
<action android:name="android.health.connect.action.SHOW_ONBOARDING" />
</intent-filter>
</activity-alias>
ব্যবহারকারীরা আপনার অ্যাপের মধ্যে থেকে কানেক্ট করার পরিবর্তে সরাসরি Health Connect অ্যাপ থেকে কানেকশন শুরু করতে পারেন। আপনার অ্যাপে ডেটা রিড বা রাইট করার অনুমতি দেওয়ার পরে কোনও অতিরিক্ত ইন্টার্যাকশনের প্রয়োজন হলে, অনবোর্ডিং অ্যাক্টিভিটি প্রদান করুন।
মনে রাখবেন, অনবোর্ডিং অ্যাক্টিভিটি একাধিকবার লঞ্চ করা হতে পারে, যেমন, যদি ব্যবহারকারী পরে আপনার অ্যাপের অনুমতি প্রত্যাহার করে নেন এবং তারপরে এটি আবার কানেক্ট করেন।
ধাপ ৫: অপারেশন পারফর্ম করা
সবকিছু সেট করা হয়ে গেলে, আপনার অ্যাপে রিড ও রাইট অপারেশন পারফর্ম করুন।
আপনার অ্যাপ অ্যাক্সেস করার জন্য আপনার ব্যবহারকারীরা Health Connect-এর সাথে ডেটা সিঙ্ক করে এমন অন্যান্য অ্যাপ ব্যবহার করতে পারেন । ব্যবহারকারী যদি এখনও Health Connect-এ লেখার জন্য এইসব অ্যাপ সেট-আপ না করে থাকেন, তাহলে আপনি ম্যাচমেকিং API ব্যবহার করে আপনার ব্যবহারকারীদের জন্য এইসব অ্যাপ নির্বিঘ্নে কানেক্ট করতে পারবেন।
ডেটা এডিট করা
আপনার ডেটা রেকর্ড হিসেবে স্ট্রাকচার করুন। Health Connect-এ উপলভ্য ডেটার ধরন-এর তালিকা দেখুন।
val zoneOffset = ZoneOffset.systemDefault().rules.getOffset(startTime) val stepsRecord = StepsRecord( count = 120, startTime = startTime, endTime = endTime, startZoneOffset = zoneOffset, endZoneOffset = zoneOffset, metadata = Metadata.autoRecorded( device = Device(type = Device.TYPE_WATCH) ) ) healthConnectClient.insertRecords(listOf(stepsRecord))
তারপর insertRecords ব্যবহার করে আপনার রেকর্ড লিখুন।
val zoneOffset = ZoneOffset.systemDefault().rules.getOffset(startTime) val stepsRecord = StepsRecord( count = 120, startTime = startTime, endTime = endTime, startZoneOffset = zoneOffset, endZoneOffset = zoneOffset, metadata = Metadata.autoRecorded( device = Device(type = Device.TYPE_WATCH) ) ) healthConnectClient.insertRecords(listOf(stepsRecord))
ডেটা দেখা
আপনি readRecords ব্যবহার করে আপনার ডেটা আলাদা আলাদাভাবে পড়তে পারবেন।
val response = healthConnectClient.readRecords( ReadRecordsRequest( HeartRateRecord::class, timeRangeFilter = TimeRangeFilter.between(startTime, endTime) ) ) response.records.forEach { record -> /* Process records */ }
এছাড়াও, আপনি
aggregate ব্যবহার করে আপনার ডেটা সামগ্রিকভাবে পড়তে পারবেন।
suspend fun readStepsAggregate(startTime: Instant, endTime: Instant): Long { val response = healthConnectClient.aggregate( AggregateRequest( metrics = setOf(StepsRecord.COUNT_TOTAL), timeRangeFilter = TimeRangeFilter.between(startTime, endTime) ) ) return response[StepsRecord.COUNT_TOTAL] ?: 0L }
ভিডিও টিউটোরিয়াল
Health Connect ফিচার সম্পর্কে আরও জানতে এবং সাবলীল ইন্টিগ্রেশন পাওয়ার জন্য পেশাদার পদ্ধতি সংক্রান্ত নির্দেশিকা সম্পর্কে জানতে এই ভিডিওগুলি দেখুন:
- Health Connect-এ অনুমতি ম্যানেজ করা
- Health Connect-এ ডেটা পড়া ও লেখা
- Health Connect-এর সাথে ভালভাবে ইন্টিগ্রেশন করার ব্যাপারে পরামর্শ
রিসোর্স
নিম্নলিখিত রিসোর্সগুলি চেক করে দেখুন যা পরে ডেভেলপমেন্টের ক্ষেত্রে সাহায্য করে।
- Health Connect SDK (Jetpack-এ উপলভ্য): Health Connect API ব্যবহার করতে, আপনার অ্যাপ্লিকেশনে এই SDK অন্তর্ভুক্ত করুন।
- API রেফারেন্স: Health Connect API-এর জন্য Jetpack রেফারেন্স দেখুন।
- ডেটার ধরন ব্যবহার করার কথা ঘোষণা করুন: Play Console-এ, আপনার অ্যাপ যেসব ডেটার ধরন Health Connect থেকে পড়ে ও সেগুলিতে লেখে, সেগুলি অ্যাক্সেস করার কথা ঘোষণা করুন।
- ঐচ্ছিক GitHub কোড স্যাম্পেল ও কোডল্যাব: শুরু করার ব্যাপারে সাহায্য পেতে GitHub কোড স্যাম্পেল রিপোজিটরি ও কোডল্যাব এক্সারসাইজ দেখুন।
পরবর্তী ধাপ
Health Connect-এ কীভাবে অপারেশন পারফর্ম করতে হয় তা জানতে সাধারণ ওয়ার্কফ্লো দেখুন, যেমন: