यह गाइड, Health Connect के 1.1.0-alpha12 वर्शन के साथ काम करती है.
Health Connect, त्वचा के तापमान का डेटा टाइप उपलब्ध कराता है. इससे शरीर के बाहरी हिस्से का तापमान मापा जाता है. यह मेज़रमेंट, नींद की क्वालिटी, प्रजनन स्वास्थ्य, और बीमारी की शुरुआत का पता लगाने के लिए खास तौर पर मददगार सिग्नल है.
देखें कि Health Connect उपलब्ध है या नहीं
Health Connect का इस्तेमाल करने से पहले, आपके ऐप्लिकेशन को यह पुष्टि करनी चाहिए कि Health Connect, उपयोगकर्ता के डिवाइस पर उपलब्ध है. ऐसा हो सकता है कि Health Connect, सभी डिवाइसों पर पहले से इंस्टॉल न हो या इसे बंद कर दिया गया हो.
HealthConnectClient.getSdkStatus()
तरीके का इस्तेमाल करके, यह देखा जा सकता है कि कोई सुविधा उपलब्ध है या नहीं.
Health Connect की उपलब्धता की जांच करने का तरीका
fun checkHealthConnectAvailability(context: Context) { val providerPackageName = "com.google.android.apps.healthdata" // Or get from HealthConnectClient.DEFAULT_PROVIDER_PACKAGE_NAME val availabilityStatus = HealthConnectClient.getSdkStatus(context, providerPackageName) if (availabilityStatus == HealthConnectClient.SDK_UNAVAILABLE) { // Health Connect is not available. Guide the user to install/enable it. // For example, show a dialog. return // early return as there is no viable integration } if (availabilityStatus == HealthConnectClient.SDK_UNAVAILABLE_PROVIDER_UPDATE_REQUIRED) { // Health Connect is available but requires an update. // 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 } // Health Connect is available, obtain a HealthConnectClient instance val healthConnectClient = HealthConnectClient.getOrCreate(context) // Issue operations with healthConnectClient }
getSdkStatus()
से मिले स्टेटस के आधार पर, उपयोगकर्ता को Google Play Store से Health Connect इंस्टॉल या अपडेट करने के लिए कहा जा सकता है.
सुविधा की उपलब्धता
यह पता लगाने के लिए कि किसी उपयोगकर्ता के डिवाइस पर, Health Connect में त्वचा के तापमान की सुविधा काम करती है या नहीं, क्लाइंट परFEATURE_SKIN_TEMPERATURE
की उपलब्धता देखें:
if (healthConnectClient
.features
.getFeatureStatus(
HealthConnectFeatures.FEATURE_SKIN_TEMPERATURE
) == HealthConnectFeatures.FEATURE_STATUS_AVAILABLE) {
// Feature is available
} else {
// Feature isn't available
}
ज़रूरी अनुमतियां
त्वचा के तापमान की जानकारी को ऐक्सेस करने के लिए, इन अनुमतियों का इस्तेमाल किया जाता है:
android.permission.health.READ_SKIN_TEMPERATURE
android.permission.health.WRITE_SKIN_TEMPERATURE
अपने ऐप्लिकेशन में स्किन के तापमान की जानकारी देने की सुविधा जोड़ने के लिए, SkinTemperature
डेटा टाइप के लिए लिखने की अनुमतियों का अनुरोध करें.
स्किन के तापमान की जानकारी लिखने के लिए, आपको यह अनुमति ज़ाहिर करनी होगी:
<application>
<uses-permission
android:name="android.permission.health.WRITE_SKIN_TEMPERATURE" />
...
</application>
त्वचा के तापमान से जुड़ी जानकारी देखने के लिए, आपको ये अनुमतियां मांगनी होंगी:
<application>
<uses-permission
android:name="android.permission.health.READ_SKIN_TEMPERATURE" />
...
</application>
उपयोगकर्ता से अनुमतियों का अनुरोध करना
क्लाइंट इंस्टेंस बनाने के बाद, आपके ऐप्लिकेशन को उपयोगकर्ता से अनुमतियों का अनुरोध करना होगा. उपयोगकर्ताओं को किसी भी समय अनुमतियां देने या अस्वीकार करने की अनुमति होनी चाहिए.
इसके लिए, ज़रूरी डेटा टाइप के लिए अनुमतियों का सेट बनाएं. पक्का करें कि सेट में मौजूद अनुमतियों का एलान, सबसे पहले आपके Android मेनिफ़ेस्ट में किया गया हो.
// Create a set of permissions for required data types
val PERMISSIONS =
setOf(
HealthPermission.getReadPermission(SkinTemperatureRecord::class),
HealthPermission.getWritePermission(SkinTemperatureRecord::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)
}
}
उपयोगकर्ता किसी भी समय अनुमतियां दे सकते हैं या उन्हें रद्द कर सकते हैं. इसलिए, आपके ऐप्लिकेशन को समय-समय पर यह जांच करनी चाहिए कि कौनसी अनुमतियां दी गई हैं. साथ ही, उन स्थितियों को मैनेज करना चाहिए जिनमें अनुमति नहीं दी गई है.
त्वचा के तापमान के रिकॉर्ड में शामिल जानकारी
त्वचा के तापमान को मापने से जुड़े डेटा को रिकॉर्ड में व्यवस्थित किया जाता है. हर रिकॉर्ड में यह जानकारी शामिल होती है:
- बेसलाइन तापमान, डिग्री सेल्सियस या डिग्री फ़ैरनहाइट में. यह एक वैकल्पिक वैल्यू है. यह आपके ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) में विज़ुअलाइज़ेशन के लिए सबसे ज़्यादा काम की होती है.
- त्वचा के तापमान में हुए बदलाव की डेल्टा की सूची. इसमें हर डेल्टा, पिछली बार मेज़रमेंट के बाद से त्वचा के तापमान में हुए बदलाव को दिखाता है. अगर बेसलाइन तापमान दिया गया है, तो इन डेल्टा में तापमान की एक ही यूनिट का इस्तेमाल किया जाना चाहिए.
- उपयोगकर्ता के शरीर का वह हिस्सा जहां से माप लिया गया था: उंगली, पैर की उंगली या कलाई.
इस्तेमाल किए जा सकने वाले एग्रीगेशन
SkinTemperatureRecord
के लिए, ये एग्रीगेट वैल्यू उपलब्ध हैं:
इस्तेमाल का उदाहरण
यहां दिए गए कोड स्निपेट में, त्वचा के तापमान को पढ़ने और लिखने का तरीका बताया गया है.
त्वचा के तापमान का रिकॉर्ड देखने की अनुमति दें
नीचे दिए गए कोड स्निपेट में, Jetpack लाइब्रेरी का इस्तेमाल करके, त्वचा के तापमान को मेज़र करने का तरीका बताया गया है:
suspend fun readSkinTemperatures() {
// Error handling, permission check, and feature availability check
// aren't included.
// Record includes measurements during the past hour.
val recordEndTime = Instant.now()
val recordStartTime = recordEndTime.minusSeconds(60 * 60)
val response = healthConnectClient.readRecords(
ReadRecordsRequest<SkinTemperatureRecord>(
timeRangeFilter = TimeRangeFilter.between(
recordStartTime, recordEndTime
)
)
)
for (skinTemperatureRecord in response.records) {
// Process each skin temperature record here.
}
}
त्वचा के तापमान का रिकॉर्ड सेव करने की अनुमति दें
यहां दिए गए कोड स्निपेट में, Jetpack लाइब्रेरी का इस्तेमाल करके, त्वचा के तापमान को मेज़र करने का तरीका बताया गया है:
suspend fun writeSkinTemperatures(): InsertRecordsResponse {
// Error handling, permission check, and feature availability check
// aren't included.
// Record includes measurements during the past hour.
val recordEndTime: ZonedDateTime = now()
val recordStartTime: ZonedDateTime = recordEndTime.minusHours(1)
healthConnectClient.insertRecords(
// For this example, there's only one skin temperature record.
listOf(
SkinTemperatureRecord(
baseline = Temperature.celsius(37.0),
startTime = recordStartTime.toInstant(),
startZoneOffset = recordStartTime.offset,
endTime = recordEndTime.toInstant(),
endZoneOffset = recordEndTime.offset,
deltas = listOf(
SkinTemperatureRecord.Delta(
recordEndTime.minusMinutes(50).toInstant(), celsius(0.5)
), SkinTemperatureRecord.Delta(
recordEndTime.minusMinutes(30).toInstant(), celsius(-0.7)
)
),
measurementLocation = SkinTemperatureRecord.MEASUREMENT_LOCATION_FINGER,
metadata = Metadata.autoRecorded(
device = Device(type = Device.TYPE_RING)
),
)
)
)
}