এই নির্দেশিকাটি হেলথ কানেক্ট সংস্করণ 1.1.0-alpha12 এর সাথে সামঞ্জস্যপূর্ণ।
এই নির্দেশিকাটি আপনাকে দেখাবে কীভাবে আপনি আপনার অ্যাপে হেলথ কানেক্ট ব্যবহার শুরু করতে পারেন।
ধাপ ১: হেলথ কানেক্ট অ্যাপটি প্রস্তুত করুন।
আপনার অ্যাপ্লিকেশন হেলথ কানেক্ট এসডিকে-এর মাধ্যমে যে সমস্ত অনুরোধ পাঠায়, সেগুলি পরিচালনা করার দায়িত্ব হেলথ কানেক্ট অ্যাপের। এই অনুরোধগুলির মধ্যে ডেটা সংরক্ষণ এবং এর পঠন ও লিখন অ্যাক্সেস পরিচালনা করা অন্তর্ভুক্ত।
হেলথ কানেক্ট-এর অ্যাক্সেস ফোনে ইনস্টল করা অ্যান্ড্রয়েড সংস্করণের উপর নির্ভর করে। নিম্নলিখিত বিভাগগুলিতে অ্যান্ড্রয়েডের কয়েকটি সাম্প্রতিক সংস্করণ কীভাবে পরিচালনা করতে হয় তার রূপরেখা দেওয়া হয়েছে।
অ্যান্ড্রয়েড ১৪
অ্যান্ড্রয়েড ১৪ (এপিআই লেভেল ৩৪) থেকে হেলথ কানেক্ট অ্যান্ড্রয়েড ফ্রেমওয়ার্কের একটি অংশ। হেলথ কানেক্টের এই সংস্করণটি একটি ফ্রেমওয়ার্ক মডিউল । এর জন্য কোনো সেটআপের প্রয়োজন নেই।
অ্যান্ড্রয়েড ১৩ এবং তার নিচের সংস্করণ
অ্যান্ড্রয়েড ১৩ (এপিআই লেভেল ৩৩) এবং এর পূর্ববর্তী সংস্করণগুলোতে হেলথ কানেক্ট অ্যান্ড্রয়েড ফ্রেমওয়ার্কের অংশ নয়। তাই, আপনাকে গুগল প্লে স্টোর থেকে হেলথ কানেক্ট অ্যাপটি ইনস্টল করতে হবে।
আপনি যদি অ্যান্ড্রয়েড ১৩ এবং তার পূর্ববর্তী সংস্করণগুলিতে হেলথ কানেক্ট-এর সাথে আপনার অ্যাপটি ইন্টিগ্রেট করে থাকেন এবং অ্যান্ড্রয়েড ১৪-এ মাইগ্রেট করতে চান, তাহলে "অ্যান্ড্রয়েড ১৩ থেকে ১৪-এ মাইগ্রেট করুন" নির্দেশিকাটি দেখুন।
হেলথ কানেক্ট অ্যাপটি খুলুন
হেলথ কানেক্ট এখন আর ডিফল্টভাবে হোম স্ক্রিনে দেখা যায় না। আপনি সেটিংস- এর মাধ্যমে হেলথ কানেক্ট খুলতে পারেন, তবে অ্যান্ড্রয়েড ভার্সন ভেদে এর পথ ভিন্ন হতে পারে।
- অ্যান্ড্রয়েড ১৪ এবং তার পরবর্তী সংস্করণগুলিতে: সেটিংস > নিরাপত্তা ও গোপনীয়তা > গোপনীয়তা নিয়ন্ত্রণ > হেলথ কানেক্ট- এ যান, অথবা সেটিংস-এ হেলথ কানেক্ট অনুসন্ধান করুন।
- অ্যান্ড্রয়েড ১৩ এবং এর নিচের সংস্করণগুলিতে: সেটিংস > অ্যাপস > হেলথ কানেক্ট- এ যান, অথবা আপনার কুইক সেটিংস মেনুতে হেলথ কানেক্ট যোগ করুন।
ধাপ ২: আপনার অ্যাপে হেলথ কানেক্ট এসডিকে যোগ করুন।
হেলথ কানেক্ট অ্যাপের ডেটাস্টোরে বিভিন্ন অপারেশন সম্পাদনের জন্য হেলথ কানেক্ট এপিআই ব্যবহার করে রিকোয়েস্ট পাঠানোর দায়িত্ব হেলথ কানেক্ট এসডিকে-এর।
আপনার মডিউল-স্তরের build.gradle ফাইলে Health Connect SDK নির্ভরতা যোগ করুন:
dependencies {
...
implementation "androidx.health.connect:connect-client:1.2.0-alpha04"
...
}
সর্বশেষ সংস্করণের জন্য হেলথ কানেক্ট রিলিজগুলো দেখুন।
ক্যানারি রিলিজ চ্যানেলের বৈশিষ্ট্য ব্যবহার করুন
ক্যানারি রিলিজ চ্যানেলের ফিচারগুলো ব্যবহার করতে, আপনার মডিউল-স্তরের build.gradle ফাইলে compileSdk এর ভার্সনটি পরিবর্তন করুন:
android {
compileSdkPreview = "CANARY"
}
ধাপ ৩: আপনার অ্যাপটি কনফিগার করুন
নিম্নলিখিত বিভাগগুলিতে ব্যাখ্যা করা হয়েছে কীভাবে আপনার অ্যাপটিকে হেলথ কানেক্ট-এর সাথে সংযুক্ত করার জন্য কনফিগার করতে হবে।
ফিচারের প্রাপ্যতা যাচাই করুন
হেলথ কানেক্ট-এ যখন নতুন ফিচার যোগ করা হয়, তখন ব্যবহারকারীরা সবসময় তাদের হেলথ কানেক্ট-এর ভার্সন আপডেট নাও করতে পারেন। ফিচার অ্যাভেইলেবিলিটি এপিআই (Feature Availability API) হলো এমন একটি উপায়, যার মাধ্যমে যাচাই করা যায় যে হেলথ কানেক্ট-এর কোনো ফিচার আপনার ব্যবহারকারীর ডিভাইসে উপলব্ধ আছে কি না এবং কী পদক্ষেপ নিতে হবে, তা নির্ধারণ করা যায়।
ফিচারের প্রাপ্যতা যাচাই করার প্রধান ফাংশনটি হলো getFeatureStatus() । এটি FEATURE_STATUS_AVAILABLE অথবা FEATURE_STATUS_UNAVAILABLE এই পূর্ণসংখ্যা ধ্রুবকগুলো রিটার্ন করে।
@OptIn(ExperimentalFeatureAvailabilityApi::class) 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 ) } }
অনুমতি ঘোষণা করুন
স্বাস্থ্য ও ফিটনেস সংক্রান্ত তথ্য সংবেদনশীল। হেলথ কানেক্ট ব্যবহারকারীর আস্থা বজায় রেখে, ডেটা পড়া ও লেখার কার্যক্রমে একটি অতিরিক্ত নিরাপত্তা স্তর প্রয়োগ করে।
আপনার অ্যাপের AndroidManifest.xml ফাইলে প্রয়োজনীয় ডেটা টাইপগুলোর উপর ভিত্তি করে রিড এবং রাইট পারমিশন ঘোষণা করুন, যা প্লে কনসোলে আপনার ঘোষিত অ্যাক্সেসের সাথে মিলতে হবে।
হেলথ কানেক্ট স্ট্যান্ডার্ড অ্যান্ড্রয়েড পারমিশন ডিক্লারেশন ফরম্যাট ব্যবহার করে। <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>
অনুমতিসমূহ এবং তাদের সংশ্লিষ্ট ডেটা টাইপগুলোর সম্পূর্ণ তালিকার জন্য, ডেটা টাইপের তালিকা দেখুন।
আপনার অ্যাপের গোপনীয়তা নীতির ডায়ালগটি দেখান
আপনার অ্যান্ড্রয়েড ম্যানিফেস্টে এমন একটি অ্যাক্টিভিটি থাকা প্রয়োজন, যা আপনার অ্যাপের গোপনীয়তা নীতি প্রদর্শন করবে। এই নীতিতে অনুরোধ করা অনুমতিগুলোর পেছনের যুক্তি ব্যাখ্যা করা থাকে এবং ব্যবহারকারীর ডেটা কীভাবে ব্যবহৃত ও পরিচালিত হয়, তা বর্ণনা করা হয়।
ব্যবহারকারী হেলথ কানেক্ট পারমিশন স্ক্রিনে থাকা প্রাইভেসি পলিসি লিঙ্কে ক্লিক করলে অ্যাপে পাঠানো 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>
...
একজন হেলথ কানেক্ট ক্লায়েন্ট পান
HealthConnectClient হলো Health Connect API-এর একটি এন্ট্রি পয়েন্ট। এটি অ্যাপটিকে Health Connect অ্যাপের ডেটাস্টোর ব্যবহার করার সুযোগ দেয়। এটি স্বয়ংক্রিয়ভাবে অন্তর্নিহিত স্টোরেজ লেয়ারের সাথে তার সংযোগ পরিচালনা করে এবং বহির্গামী অনুরোধ ও আগত প্রতিক্রিয়ার সমস্ত IPC ও সিরিয়ালাইজেশন সামলায়।
ক্লায়েন্ট ইনস্ট্যান্স পেতে, প্রথমে আপনার অ্যান্ড্রয়েড ম্যানিফেস্টে হেলথ কানেক্ট প্যাকেজের নামটি ঘোষণা করুন।
<application> ... </application>
...
<!-- Check if Health Connect is installed -->
<queries>
<package android:name="com.google.android.apps.healthdata" />
</queries>
এরপর আপনার Activity-তে 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 } }
ধাপ ৪: ব্যবহারকারীর কাছ থেকে অনুমতি চেয়ে নিন।
একটি ক্লায়েন্ট ইনস্ট্যান্স তৈরি করার পরে, আপনার অ্যাপকে ব্যবহারকারীর কাছ থেকে অনুমতির জন্য অনুরোধ করতে হবে। ব্যবহারকারীদের যেকোনো সময় অনুমতি প্রদান বা প্রত্যাখ্যান করার ক্ষমতা থাকতে হবে। এটি করার জন্য, প্রয়োজনীয় ডেটা টাইপগুলির জন্য এক সেট অনুমতি তৈরি করুন। প্রথমে নিশ্চিত করুন যে সেটের অনুমতিগুলি আপনার অ্যান্ড্রয়েড ম্যানিফেস্টে ঘোষিত হয়েছে।
val permissions = setOf( HealthPermission.getReadPermission(HeartRateRecord::class), HealthPermission.getWritePermission(HeartRateRecord::class), HealthPermission.getReadPermission(StepsRecord::class), HealthPermission.getWritePermission(StepsRecord::class) )
getGrantedPermissions ব্যবহার করুন। যদি না থাকে, তাহলে সেই অনুমতিগুলোর জন্য অনুরোধ করতে createRequestPermissionResultContract ব্যবহার করুন। এটি হেলথ কানেক্ট পারমিশন স্ক্রিনটি প্রদর্শন করবে।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.") } } }
অনবোর্ড ব্যবহারকারীরা
অনেক অ্যাপের নিজস্ব অনবোর্ডিং ফ্লো থাকে, যেমন ফিচার সম্পর্কে জানানো বা ব্যবহারকারীর সম্মতি চাওয়া। আপনার অনবোর্ডিং ফ্লো চালু করার জন্য হেলথ কানেক্টকে সক্ষম করতে, আপনার ম্যানিফেস্টে নিম্নলিখিতগুলি যোগ করুন:
<!-- 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>
ব্যবহারকারীরা আপনার অ্যাপের ভেতর থেকে সংযোগ স্থাপন না করে, সরাসরি হেলথ কানেক্ট অ্যাপ থেকেই আপনার অ্যাপের সাথে সংযোগ স্থাপন করতে পারেন। ডেটা পড়া বা লেখার অনুমতি দেওয়ার বাইরেও যদি আপনার অ্যাপের কোনো অতিরিক্ত ইন্টারঅ্যাকশনের প্রয়োজন হয়, তাহলে একটি অনবোর্ডিং অ্যাক্টিভিটি প্রদান করুন।
মনে রাখবেন যে অনবোর্ডিং কার্যক্রমটি একাধিকবার চালু হতে পারে, উদাহরণস্বরূপ, যদি ব্যবহারকারী পরবর্তীতে আপনার অ্যাপের অনুমতি প্রত্যাহার করে নেন এবং তারপর পুনরায় সংযোগ করেন।
ধাপ ৫: কার্যক্রম সম্পাদন করুন
এখন যেহেতু সবকিছু প্রস্তুত, আপনার অ্যাপে রিড এবং রাইট অপারেশনগুলো সম্পাদন করুন।
আপনার ব্যবহারকারীরা এমন অন্যান্য অ্যাপ ব্যবহার করতে পারেন যেগুলো আপনার অ্যাপের অ্যাক্সেসের জন্য হেলথ কানেক্ট-এর সাথে ডেটা সিঙ্ক করে। যদি ব্যবহারকারী এখনও এই অ্যাপগুলোকে হেলথ কানেক্ট-এ ডেটা লেখার জন্য সেট আপ না করে থাকেন, তবে আপনি ম্যাচমেকিং এপিআই (Matchmaking API) ব্যবহার করে আপনার ব্যবহারকারীদের জন্য এই অ্যাপগুলোকে নির্বিঘ্নে সংযুক্ত করতে পারেন।
ডেটা লিখুন
আপনার ডেটাকে একটি রেকর্ডে বিন্যস্ত করুন। হেলথ কানেক্ট-এ উপলব্ধ ডেটা টাইপগুলির তালিকাটি দেখে নিন।
val zoneOffset = ZoneOffset.systemDefault().rules.getOffset(startTime) val stepsRecord = StepsRecord( count = 120, startTime = startTime, endTime = endTime, startZoneOffset = zoneOffset, endZoneOffset = zoneOffset, metadata = Metadata( device = Device(type = Device.TYPE_WATCH), recordingMethod = Metadata.RECORDING_METHOD_AUTOMATICALLY_RECORDED ) ) 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( device = Device(type = Device.TYPE_WATCH), recordingMethod = Metadata.RECORDING_METHOD_AUTOMATICALLY_RECORDED ) ) 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 }
ভিডিও টিউটোরিয়াল
এই ভিডিওগুলো দেখুন, যেখানে হেলথ কানেক্ট-এর ফিচারগুলো সম্পর্কে আরও বিস্তারিত ব্যাখ্যা করা হয়েছে, এবং সেই সাথে একটি মসৃণ ইন্টিগ্রেশন সম্পন্ন করার জন্য সেরা অনুশীলন নির্দেশিকাও দেওয়া হয়েছে:
- হেলথ কানেক্ট-এ অনুমতি ব্যবস্থাপনা
- হেলথ কানেক্টে পড়া ও লেখা
- একটি দুর্দান্ত হেলথ কানেক্ট ইন্টিগ্রেশনের জন্য কিছু টিপস
সম্পদ
পরবর্তীতে উন্নয়নের জন্য সহায়ক নিম্নলিখিত রিসোর্সগুলো দেখে নিন।
- হেলথ কানেক্ট এসডিকে (জেটপ্যাকে উপলব্ধ): হেলথ কানেক্ট এপিআই ব্যবহার করার জন্য আপনার অ্যাপ্লিকেশনে এই এসডিকে-টি অন্তর্ভুক্ত করুন।
- এপিআই রেফারেন্স: হেলথ কানেক্ট এপিআই-এর জন্য জেটপ্যাক রেফারেন্সটি দেখুন।
- ডেটা টাইপের ব্যবহার ঘোষণা করুন: প্লে কনসোলে, আপনার অ্যাপ যে হেলথ কানেক্ট ডেটা টাইপগুলো থেকে ডেটা পড়ে এবং যেখানে লেখে, সেগুলোর অ্যাক্সেস ঘোষণা করুন ।
- ঐচ্ছিক গিটহাব কোড নমুনা এবং কোডল্যাব: কাজ শুরু করার জন্য গিটহাব কোড নমুনা রিপোজিটরি এবং কোডল্যাব অনুশীলনটি দেখুন।
পরবর্তী পদক্ষেপ
হেলথ কানেক্ট-এ কীভাবে বিভিন্ন অপারেশন সম্পাদন করতে হয়, তা শিখতে সাধারণ ওয়ার্কফ্লোগুলো দেখুন, যেমন: