यह गाइड, Health Connect के 1.1.0-alpha12 वर्शन के साथ काम करती है.
इस गाइड में बताया गया है कि अपने ऐप्लिकेशन पर 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 को सेटिंग से खोला जा सकता है. हालांकि, 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-alpha04"
...
}
नए वर्शन के लिए, Health Connect की रिलीज़ देखें.
कैनरी रिलीज़ चैनल की सुविधाओं का इस्तेमाल करना
Canary रिलीज़ चैनल में मौजूद सुविधाओं का इस्तेमाल करने के लिए, मॉड्यूल-लेवल की build.gradle फ़ाइल में compileSdk का वर्शन बदलें:
android {
compileSdkPreview = "CANARY"
}
तीसरा चरण: ऐप्लिकेशन को कॉन्फ़िगर करना
यहां दिए गए सेक्शन में, Health Connect के साथ इंटिग्रेट करने के लिए, अपने ऐप्लिकेशन को कॉन्फ़िगर करने का तरीका बताया गया है.
सुविधा की उपलब्धता देखें
Health Connect में नई सुविधाएं जोड़े जाने पर, हो सकता है कि उपयोगकर्ता हमेशा Health Connect का नया वर्शन अपडेट न करें. सुविधा की उपलब्धता से जुड़ा एपीआई, यह पता लगाने का एक तरीका है कि Health Connect की कोई सुविधा, उपयोगकर्ता के डिवाइस पर उपलब्ध है या नहीं. इससे यह तय किया जा सकता है कि क्या कार्रवाई करनी है.
सुविधा की उपलब्धता की जांच करने के लिए, मुख्य फ़ंक्शन 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 ) } }
अनुमतियों की जानकारी देना
सेहत और फ़िटनेस से जुड़े डेटा को ऐक्सेस करना संवेदनशील होता है. 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 मेनिफ़ेस्ट में एक ऐसी ऐक्टिविटी होनी चाहिए जो आपके ऐप्लिकेशन की निजता नीति को दिखाए. इस नीति में, अनुरोध की गई अनुमतियों के लिए आपके ऐप्लिकेशन की वजह बताई गई हो. साथ ही, यह बताया गया हो कि उपयोगकर्ता के डेटा का इस्तेमाल और उसे मैनेज कैसे किया जाता है.
इस गतिविधि का एलान करें, ताकि 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>
...
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) 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 के साथ डेटा सिंक करने के लिए सेट अप नहीं किया है, तो Matchmaking 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( 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 }
वीडियो ट्यूटोरियल
इन वीडियो को देखें. इनमें Health Connect की सुविधाओं के बारे में ज़्यादा जानकारी दी गई है. साथ ही, इंटिग्रेशन को आसानी से पूरा करने के लिए, सबसे सही तरीकों के दिशा-निर्देश भी दिए गए हैं:
- Health Connect में अनुमतियां मैनेज करना
- Health Connect में डेटा को पढ़ना और लिखना
- Health Connect को बेहतर तरीके से इंटिग्रेट करने के लिए सलाह
संसाधन
यहां दिए गए संसाधनों को देखें. इनसे आपको बाद में डेवलपमेंट में मदद मिलेगी.
- Health Connect SDK (Jetpack पर उपलब्ध है): Health Connect API का इस्तेमाल करने के लिए, अपने ऐप्लिकेशन में इस SDK को शामिल करें.
- एपीआई का संदर्भ: Health Connect API के लिए, Jetpack का संदर्भ देखें.
- डेटा टाइप के इस्तेमाल का एलान करें: Play Console में जाकर, Health Connect के उन डेटा टाइप को ऐक्सेस करने का एलान करें जिन्हें आपका ऐप्लिकेशन पढ़ता और सेव करता है.
- GitHub का कोड सैंपल और कोडलैब (ज़रूरी नहीं): शुरू करने में आपकी मदद करने के लिए, GitHub का कोड सैंपल डेटा स्टोर और कोड लैब की एक्सरसाइज़ देखें.
अगले चरण
Health Connect में ये कार्रवाइयां करने का तरीका जानने के लिए, सामान्य वर्कफ़्लो देखें: