Health Connect का इस्तेमाल शुरू करना

इस गाइड में, अपने ऐप्लिकेशन पर Health Connect का इस्तेमाल शुरू करने का तरीका बताया गया है.

पहला चरण: Health Connect ऐप्लिकेशन तैयार करना

Health Connect ऐप्लिकेशन, उन सभी अनुरोधों को मैनेज करने के लिए ज़िम्मेदार है जिन्हें आपका ऐप्लिकेशन, Health Connect SDK टूल की मदद से भेजता है. इन अनुरोधों में डेटा को स्टोर करना और इसके पढ़ने और लिखने के ऐक्सेस को मैनेज करना शामिल है.

Health Connect को ऐक्सेस करने की सुविधा, फ़ोन पर इंस्टॉल किए गए Android वर्शन पर निर्भर करती है. नीचे दिए सेक्शन में, Android के हाल ही के कई वर्शन को मैनेज करने का तरीका बताया गया है.

Android 14

Android 14 (एपीआई लेवल 34) से, Health Connect, Android फ़्रेमवर्क का हिस्सा है. Health Connect का यह वर्शन, फ़्रेमवर्क मॉड्यूल है. इसके लिए, किसी सेटअप की ज़रूरत नहीं होती.

Android 13 और उससे पहले के वर्शन

Android 13 (एपीआई लेवल 33) और उससे पहले के वर्शन पर, Health Connect, Android फ़्रेमवर्क का हिस्सा नहीं है. इसके बाद, आपको Google Play Store से Health Connect ऐप्लिकेशन इंस्टॉल करना होगा.

अगर आपने अपने ऐप्लिकेशन को Android 13 और उससे पहले के वर्शन पर Health Connect के साथ इंटिग्रेट किया है और Android 14 पर माइग्रेट करना है, तो Android 13 से 14 पर माइग्रेट करना लेख पढ़ें.

Health Connect ऐप्लिकेशन खोलना

Health Connect अब डिफ़ॉल्ट रूप से होम स्क्रीन पर नहीं दिखता. Health Connect खोलने के लिए, सेटिंग > ऐप्लिकेशन > Health Connect पर जाएं या Health Connect को क्विक सेटिंग मेन्यू में जोड़ें.

इसके अलावा, Health Connect का इस्तेमाल करने के लिए ज़रूरी है कि उपयोगकर्ता ने डिवाइस को पिन, पैटर्न या पासवर्ड से लॉक किया हो. इससे, डिवाइस के लॉक होने पर, Health Connect में सेव किए जा रहे स्वास्थ्य से जुड़े डेटा को नुकसान पहुंचाने वाले लोगों या ग्रुप से सुरक्षित रखा जा सकता है. स्क्रीन लॉक सेट करने के लिए, सेटिंग > सुरक्षा > स्क्रीन लॉक पर जाएं.

दूसरा चरण: अपने ऐप्लिकेशन में Health Connect SDK टूल जोड़ना

Health Connect SDK टूल, Health Connect ऐप्लिकेशन के डेटास्टोर में कार्रवाइयां करने के लिए अनुरोध भेजने के लिए, Health Connect API का इस्तेमाल करता है.

मॉड्यूल लेवल की build.gradle फ़ाइल में, Health Connect SDK टूल की डिपेंडेंसी जोड़ें:

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

नए वर्शन के लिए, Health Connect की रिलीज़ देखें.

तीसरा चरण: अपने ऐप्लिकेशन को कॉन्फ़िगर करना

यहां दिए गए सेक्शन में, Health Connect के साथ इंटिग्रेट करने के लिए, अपने ऐप्लिकेशन को कॉन्फ़िगर करने का तरीका बताया गया है.

अनुमतियों का एलान करना

सेहत और फ़िटनेस से जुड़ा डेटा संवेदनशील होता है. Health Connect, डेटा को पढ़ने और उसमें बदलाव करने के लिए, सुरक्षा की एक लेयर लागू करता है. इससे उपयोगकर्ता का भरोसा बना रहता है.

Play Console में, 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 ऐप्लिकेशन में डेटास्टोर का इस्तेमाल करने की अनुमति मिलती है. यह, डेटा स्टोर करने वाली लेयर से अपने कनेक्शन को अपने-आप मैनेज करता है. साथ ही, सभी आईपीसी और आउटगोइंग अनुरोधों और इनकमिंग रिस्पॉन्स को सीरियलाइज़ करता है.

क्लाइंट इंस्टेंस पाने के लिए, सबसे पहले अपने 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

चौथा चरण: उपयोगकर्ता से अनुमतियों का अनुरोध करना

क्लाइंट इंस्टेंस बनाने के बाद, आपके ऐप्लिकेशन को उपयोगकर्ता से अनुमतियों का अनुरोध करना होगा. उपयोगकर्ताओं को किसी भी समय अनुमतियां देने या अस्वीकार करने की अनुमति होनी चाहिए.

ऐसा करने के लिए, ज़रूरी डेटा टाइप के लिए अनुमतियों का सेट बनाएं. पक्का करें कि सेट की अनुमतियों का एलान आपके 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 का इस्तेमाल करें. इससे, 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)
  }
}

यह मत सोचें कि अनुमतियां हमेशा एक जैसी रहती हैं. उपयोगकर्ता, किसी भी समय उन्हें दे सकते हैं या वापस ले सकते हैं. आपके ऐप्लिकेशन को समय-समय पर यह देखना होगा कि अनुमतियां मिली हैं या नहीं. साथ ही, उन स्थितियों को मैनेज करना होगा जिनमें अनुमति नहीं मिलती.

पांचवां चरण: कार्रवाइयां करना

अब जब सब कुछ सेट हो गया है, तो अपने ऐप्लिकेशन में डेटा पढ़ने और उसमें डेटा सेव करने की कार्रवाइयां करें.

डेटा सेव करने की अनुमति दें

अपने डेटा को रिकॉर्ड में व्यवस्थित करें. 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 की सुविधाओं के बारे में ज़्यादा जानने के लिए, ये वीडियो देखें. साथ ही, इंटिग्रेशन को आसानी से पूरा करने के लिए, सबसे सही तरीकों के दिशा-निर्देश भी देखें:

संसाधन

यहां दिए गए संसाधन देखें, ताकि आपको बाद में ऐप्लिकेशन को डेवलप करने में मदद मिल सके.

  • Health Connect SDK (Jetpack पर उपलब्ध है): Health Connect API का इस्तेमाल करने के लिए, अपने ऐप्लिकेशन में इस SDK टूल को शामिल करें.
  • एपीआई का रेफ़रंस: Health Connect API के लिए, Jetpack का रेफ़रंस देखें.
  • डेटा टाइप के इस्तेमाल का एलान करना: Play Console में, Health Connect के उन डेटा टाइप के ऐक्सेस का एलान करें जिन्हें आपका ऐप्लिकेशन पढ़ता और सेव करता है.
  • GitHub पर मौजूद कोड का सैंपल और कोडलैब (ज़रूरी नहीं): शुरू करने के लिए, GitHub पर मौजूद कोड का सैंपल रिपॉज़िटरी और कोडलैब एक्सरसाइज़ देखें.

अगले चरण

Health Connect में काम करने के तरीके जानने के लिए, सामान्य वर्कफ़्लो देखें. जैसे: