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

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

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

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

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

অ্যান্ড্রয়েড 14

Android 14 (API লেভেল 34) শুরু করে, Health Connect হল Android ফ্রেমওয়ার্কের অংশ। Health Connect-এর এই সংস্করণটি একটি ফ্রেমওয়ার্ক মডিউল । যে সঙ্গে, কোন সেটআপ প্রয়োজন নেই.

অ্যান্ড্রয়েড 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-এর জন্য ব্যবহারকারীকে একটি PIN, প্যাটার্ন বা পাসওয়ার্ড দিয়ে স্ক্রিন লক সক্ষম করতে হবে যাতে যন্ত্রটি লক থাকা অবস্থায় Health Connect-এ সংরক্ষণ করা স্বাস্থ্য ডেটা ক্ষতিকারক পক্ষ থেকে সুরক্ষিত থাকে। একটি স্ক্রিন লক সেট করতে, সেটিংস > নিরাপত্তা > স্ক্রীন লক এ যান।

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

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

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

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

সর্বশেষ সংস্করণের জন্য হেলথ কানেক্ট রিলিজ পড়ুন।

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

নিম্নলিখিত বিভাগগুলি ব্যাখ্যা করে যে কীভাবে আপনার অ্যাপকে হেলথ কানেক্টে সংহত করতে কনফিগার করতে হয়।

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

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

প্রয়োজনীয় ডেটা প্রকারের উপর ভিত্তি করে AndroidManifest.xml ফাইলে পড়ার এবং লেখার অনুমতি ঘোষণা করুন। নিশ্চিত করুন যে আপনি [form]{:.external} সম্পূর্ণ করার পরে আপনি যে অনুমতিগুলির জন্য অনুরোধ করেছিলেন সেগুলির সেটটি ব্যবহার করুন৷

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>

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

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

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

ACTION_SHOW_PERMISSIONS_RATIONALE উদ্দেশ্য পরিচালনা করার জন্য এই কার্যকলাপটি ঘোষণা করুন যেখানে ব্যবহারকারী যখন Health Connect অনুমতি স্ক্রিনে গোপনীয়তা নীতি লিঙ্কে ক্লিক করেন তখন এটি অ্যাপে পাঠানো হয়।

...
<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 এবং বহির্গামী অনুরোধ এবং আগত প্রতিক্রিয়াগুলির সিরিয়ালাইজেশন পরিচালনা করে।

একটি ক্লায়েন্ট উদাহরণ পেতে, প্রথমে আপনার 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, 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

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

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

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

// 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 ব্যবহার করুন। এটি স্বাস্থ্য সংযোগের অনুমতি স্ক্রীন প্রদর্শন করে।

// 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)
  }
}

অনুমান করবেন না যে অনুমতিগুলি ধ্রুবক, কারণ ব্যবহারকারীরা যে কোনও সময় সেগুলি মঞ্জুর বা প্রত্যাহার করতে পারেন৷ আপনার অ্যাপ্লিকেশানটিকে পর্যায়ক্রমে মঞ্জুর করা অনুমতিগুলি পরীক্ষা করতে হবে এবং যেখানে অনুমতি হারিয়ে গেছে সেগুলি পরিচালনা করতে হবে৷

ধাপ 5: অপারেশন সম্পাদন করুন

এখন সবকিছু সেট করা হয়েছে, আপনার অ্যাপে রিড এবং রাইট অপারেশন সঞ্চালন করুন।

ডেটা লিখুন

একটি রেকর্ডে আপনার ডেটা গঠন করুন। 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) {
    try {
        val stepsRecord = StepsRecord(
            count = 120,
            startTime = START_TIME,
            endTime = END_TIME,
            startZoneOffset = START_ZONE_OFFSET,
            endZoneOffset = END_ZONE_OFFSET,
        )
        healthConnectClient.insertRecords(listOf(stepsRecord))
    } catch (e: Exception) {
        // Run error handling here
    }
}

ডেটা পড়ুন

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

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.
    }
}

এছাড়াও আপনি 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
    }
}

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

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

সম্পদ

নিম্নলিখিত সংস্থানগুলি দেখুন যা পরে বিকাশে সহায়তা করে।

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

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