Health Connect দিয়ে শুরু করুন

এই নির্দেশিকাটি আপনাকে দেখাবে কিভাবে আপনি আপনার অ্যাপে Health Connect ব্যবহার শুরু করতে পারেন।

ধাপ ১: Health Connect অ্যাপটি প্রস্তুত করুন

Health Connect অ্যাপটি Health Connect SDK এর মাধ্যমে আপনার অ্যাপ্লিকেশনের পাঠানো সমস্ত অনুরোধ পরিচালনা করার জন্য দায়ী। এই অনুরোধগুলির মধ্যে রয়েছে ডেটা সংরক্ষণ এবং এর পঠন এবং লেখার অ্যাক্সেস পরিচালনা করা।

হেলথ কানেক্টের অ্যাক্সেস ফোনে ইনস্টল করা অ্যান্ড্রয়েড সংস্করণের উপর নির্ভর করে। নিম্নলিখিত বিভাগগুলিতে অ্যান্ড্রয়েডের বেশ কয়েকটি সাম্প্রতিক সংস্করণ কীভাবে পরিচালনা করতে হয় তা বর্ণনা করা হয়েছে।

অ্যান্ড্রয়েড ১৪

অ্যান্ড্রয়েড ১৪ (এপিআই লেভেল ৩৪) থেকে শুরু করে, হেলথ কানেক্ট অ্যান্ড্রয়েড ফ্রেমওয়ার্কের অংশ। হেলথ কানেক্টের এই সংস্করণটি একটি ফ্রেমওয়ার্ক মডিউল । এর সাথে, কোনও সেটআপের প্রয়োজন নেই।

অ্যান্ড্রয়েড ১৩ এবং তার আগের ভার্সন

অ্যান্ড্রয়েড ১৩ (এপিআই লেভেল ৩৩) এবং তার নিচের ভার্সনে, হেলথ কানেক্ট অ্যান্ড্রয়েড ফ্রেমওয়ার্কের অংশ নয়। এর জন্য আপনাকে গুগল প্লে স্টোর থেকে হেলথ কানেক্ট অ্যাপটি ইনস্টল করতে হবে।

যদি আপনি আপনার অ্যাপটি Android 13 এবং তার আগের ভার্সনে Health Connect এর সাথে ইন্টিগ্রেটেড করে থাকেন এবং Android 14 এ মাইগ্রেট করতে চান, তাহলে Migrate from Android 13 to 14 দেখুন।

Health Connect অ্যাপটি খুলুন।

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

  • Android 14 এবং তার পরবর্তী ভার্সনে: সেটিংস > নিরাপত্তা এবং গোপনীয়তা > গোপনীয়তা নিয়ন্ত্রণ > Health Connect এ যান, অথবা সেটিংসে Health Connect অনুসন্ধান করুন।
  • Android 13 এবং তার আগের ভার্সনে: সেটিংস > অ্যাপস > Health Connect এ যান, অথবা আপনার Quick Settings মেনুতে Health Connect যোগ করুন।

ধাপ ২: আপনার অ্যাপে Health Connect SDK যোগ করুন

হেলথ কানেক্ট SDK হেলথ কানেক্ট অ্যাপের ডেটাস্টোরের বিরুদ্ধে ক্রিয়াকলাপ সম্পাদনের জন্য অনুরোধ পাঠানোর জন্য হেলথ কানেক্ট API ব্যবহার করার জন্য দায়ী।

আপনার মডিউল-স্তরের build.gradle ফাইলে Health Connect SDK নির্ভরতা যোগ করুন:

dependencies {
  ...
  implementation "androidx.health.connect:connect-client:1.2.0-alpha02"
  ...
}

সর্বশেষ সংস্করণের জন্য Health Connect রিলিজগুলি দেখুন।

ধাপ ৩: আপনার অ্যাপ কনফিগার করুন

নিম্নলিখিত বিভাগগুলিতে ব্যাখ্যা করা হয়েছে যে কীভাবে আপনার অ্যাপটিকে Health Connect-এ ইন্টিগ্রেট করার জন্য কনফিগার করবেন।

বৈশিষ্ট্যের উপলভ্যতা পরীক্ষা করুন

যখন Health Connect-এ নতুন বৈশিষ্ট্য যোগ করা হয়, তখন ব্যবহারকারীরা সবসময় তাদের Health Connect-এর সংস্করণ আপডেট নাও করতে পারে। Feature Availability API হল Health Connect-এর কোনও বৈশিষ্ট্য আপনার ব্যবহারকারীর ডিভাইসে উপলব্ধ কিনা তা পরীক্ষা করার এবং কী পদক্ষেপ নেবেন তা নির্ধারণ করার একটি উপায়।

বৈশিষ্ট্যের উপলব্ধতা পরীক্ষা করার প্রধান ফাংশন হল getFeatureStatus() । এটি পূর্ণসংখ্যার ধ্রুবক FEATURE_STATUS_AVAILABLE বা FEATURE_STATUS_UNAVAILABLE প্রদান করে:

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

  // Feature is available
  ...
} else {
  // Feature is not available
  ...
}

অনুমতি ঘোষণা করুন

স্বাস্থ্য এবং ফিটনেস ডেটা অ্যাক্সেস করা সংবেদনশীল। হেলথ কানেক্ট ব্যবহারকারীর আস্থা বজায় রেখে পঠন এবং লেখার ক্রিয়াকলাপের জন্য সুরক্ষার একটি স্তর প্রয়োগ করে।

আপনার অ্যাপে, 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>

অনুমতির সম্পূর্ণ তালিকা এবং তাদের সংশ্লিষ্ট ডেটা প্রকারের জন্য, ডেটা প্রকারের তালিকা দেখুন।

আপনার অ্যাপের গোপনীয়তা নীতির ডায়ালগ দেখান

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

ব্যবহারকারী যখন 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>
...

একটি হেলথ কানেক্ট ক্লায়েন্ট পান

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, providerPackageName)
if (availabilityStatus == HealthConnectClient.SDK_UNAVAILABLE) {
  return // early return as there is no viable integration
}
if (availabilityStatus == HealthConnectClient.SDK_UNAVAILABLE_PROVIDER_UPDATE_REQUIRED) {
  // Optionally redirect to package installer to find a provider, for example:
  val uriString = "market://details?id=$providerPackageName&url=healthconnect%3A%2F%2Fonboarding"
  context.startActivity(
    Intent(Intent.ACTION_VIEW).apply {
      setPackage("com.android.vending")
      data = Uri.parse(uriString)
      putExtra("overlay", true)
      putExtra("callerId", context.packageName)
    }
  )
  return
}
val healthConnectClient = HealthConnectClient.getOrCreate(context)
// Issue operations with healthConnectClient

ধাপ ৪: ব্যবহারকারীর কাছ থেকে অনুমতির অনুরোধ করুন

একটি ক্লায়েন্ট ইনস্ট্যান্স তৈরি করার পরে, আপনার অ্যাপটিকে ব্যবহারকারীর কাছ থেকে অনুমতি চাইতে হবে। ব্যবহারকারীদের যেকোনো সময় অনুমতি প্রদান বা অস্বীকার করার অনুমতি দিতে হবে।

এটি করার জন্য, প্রয়োজনীয় ডেটা টাইপের জন্য অনুমতিগুলির একটি সেট তৈরি করুন। নিশ্চিত করুন যে সেটের অনুমতিগুলি প্রথমে আপনার অ্যান্ড্রয়েড ম্যানিফেস্টে ঘোষণা করা হয়েছে।

// Create a set of permissions for required data types
val PERMISSIONS =
    setOf(
  HealthPermission.getReadPermission(HeartRateRecord::class),
  HealthPermission.getWritePermission(HeartRateRecord::class),
  HealthPermission.getReadPermission(StepsRecord::class),
  HealthPermission.getWritePermission(StepsRecord::class)
)

আপনার অ্যাপটি ইতিমধ্যেই প্রয়োজনীয় অনুমতি পেয়েছে কিনা তা দেখতে getGrantedPermissions ব্যবহার করুন। যদি না থাকে, তাহলে সেই অনুমতিগুলির জন্য অনুরোধ করতে createRequestPermissionResultContract ব্যবহার করুন। এটি Health Connect অনুমতিগুলির স্ক্রিন প্রদর্শন করে।

// Create the permissions launcher
val requestPermissionActivityContract = PermissionController.createRequestPermissionResultContract()

val requestPermissions = registerForActivityResult(requestPermissionActivityContract) { granted ->
  if (granted.containsAll(PERMISSIONS)) {
    // Permissions successfully granted
  } else {
    // Lack of required permissions
  }
}

suspend fun checkPermissionsAndRun(healthConnectClient: HealthConnectClient) {
  val granted = healthConnectClient.permissionController.getGrantedPermissions()
  if (granted.containsAll(PERMISSIONS)) {
    // Permissions already granted; proceed with inserting or reading data
  } else {
    requestPermissions.launch(PERMISSIONS)
  }
}

যেহেতু ব্যবহারকারীরা যেকোনো সময় অনুমতি দিতে বা প্রত্যাহার করতে পারেন, তাই আপনার অ্যাপকে পর্যায়ক্রমে মঞ্জুরকৃত অনুমতিগুলি পরীক্ষা করতে হবে এবং অনুমতি হারিয়ে গেলে পরিস্থিতি মোকাবেলা করতে হবে।

অনবোর্ড ব্যবহারকারীরা

অনেক অ্যাপের নিজস্ব অনবোর্ডিং ফ্লো থাকে যেমন ফিচার এডুকেশন বা ব্যবহারকারীর সম্মতি চাওয়া। হেলথ কানেক্টকে আপনার অনবোর্ডিং ফ্লো চালু করতে সক্ষম করতে, আপনার ম্যানিফেস্টে নিম্নলিখিতগুলি যোগ করুন:

<!-- 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-এ উপলব্ধ ডেটা টাইপের তালিকাটি দেখুন।

val stepsRecord = StepsRecord(
    count = 120,
    startTime = START_TIME,
    endTime = END_TIME,
    startZoneOffset = START_ZONE_OFFSET,
    endZoneOffset = END_ZONE_OFFSET,
)

তারপর insertRecords ব্যবহার করে আপনার রেকর্ড লিখুন।

suspend fun insertSteps(healthConnectClient: HealthConnectClient) {
    val endTime = Instant.now()
    val startTime = endTime.minus(Duration.ofMinutes(15))
    try {
        val stepsRecord = StepsRecord(
            count = 120,
            startTime = startTime,
            endTime = endTime,
            startZoneOffset = ZoneOffset.UTC,
            endZoneOffset = ZoneOffset.UTC,
            metadata = Metadata.autoRecorded(
                device = Device(type = Device.TYPE_WATCH)
            ),
        )
        healthConnectClient.insertRecords(listOf(stepsRecord))
    } catch (e: Exception) {
        // Run error handling here
    }
}

তথ্য পড়ুন

আপনি readRecords ব্যবহার করে আপনার ডেটা পৃথকভাবে পড়তে পারেন।

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

আপনি aggregate ব্যবহার করে আপনার ডেটা একত্রিত পদ্ধতিতেও পড়তে পারেন।

suspend fun aggregateSteps(
    healthConnectClient: HealthConnectClient,
    startTime: Instant,
    endTime: Instant
) {
    try {
        val response = healthConnectClient.aggregate(
            AggregateRequest(
                metrics = setOf(StepsRecord.COUNT_TOTAL),
                timeRangeFilter = TimeRangeFilter.between(startTime, endTime)
            )
        )
        // The result may be null if no data is available in the time range
        val stepCount = response[StepsRecord.COUNT_TOTAL]
    } catch (e: Exception) {
        // Run error handling here
    }
}

ভিডিও টিউটোরিয়াল

হেলথ কানেক্ট বৈশিষ্ট্যগুলি সম্পর্কে আরও ব্যাখ্যা করে এমন এই ভিডিওগুলি দেখুন, সেইসাথে একটি মসৃণ ইন্টিগ্রেশন অর্জনের জন্য সর্বোত্তম অনুশীলন নির্দেশিকাগুলি দেখুন:

রিসোর্স

পরবর্তীতে উন্নয়নে সাহায্য করার জন্য নিম্নলিখিত রিসোর্সগুলি দেখুন।

পরবর্তী পদক্ষেপ

হেলথ কানেক্টে কীভাবে কাজ সম্পাদন করতে হয় তা জানতে সাধারণ কর্মপ্রবাহগুলি দেখুন, যেমন: