यह गाइड, Health Connect के 1.1.0-alpha12 वर्शन के साथ काम करती है.
Health Connect, शरीर के बाहरी हिस्से का तापमान मेज़र करने के लिए, त्वचा के तापमान का डेटा टाइप उपलब्ध कराता है. यह मेज़रमेंट, नींद की क्वालिटी, प्रजनन से जुड़ी सेहत, और बीमारी के शुरू होने की संभावना का पता लगाने के लिए, खास तौर पर मददगार सिग्नल है.
ज़रूरी अनुमतियां
Health Connect में मौजूद किसी भी डेटा टाइप की तरह, त्वचा के तापमान को ऐक्सेस करने के लिए, दो अनुमतियां लेनी पड़ती हैं: READ_SKIN_TEMPERATURE
और
WRITE_SKIN_TEMPERATURE
.
उपयोगकर्ता से अनुमतियों का अनुरोध करना
क्लाइंट इंस्टेंस बनाने के बाद, आपके ऐप्लिकेशन को उपयोगकर्ता से अनुमतियों का अनुरोध करना होगा. उपयोगकर्ताओं को किसी भी समय अनुमतियां देने या अस्वीकार करने की अनुमति होनी चाहिए.
ऐसा करने के लिए, ज़रूरी डेटा टाइप के लिए अनुमतियों का सेट बनाएं. पक्का करें कि सेट में मौजूद अनुमतियां, पहले आपके 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)
}
}
उपयोगकर्ता किसी भी समय अनुमतियां दे सकते हैं या उन्हें रद्द कर सकते हैं. इसलिए, आपके ऐप्लिकेशन को समय-समय पर यह देखना होगा कि उपयोगकर्ता ने कौनसी अनुमतियां दी हैं. साथ ही, उन स्थितियों को मैनेज करना होगा जिनमें अनुमति रद्द हो जाती है.
त्वचा के तापमान के रिकॉर्ड में शामिल जानकारी
त्वचा के तापमान की मेज़रमेंट को रिकॉर्ड में व्यवस्थित किया जाता है. हर रिकॉर्ड में यह जानकारी होती है:
- बेसलाइन तापमान, डिग्री सेल्सियस या डिग्री फ़ैरनहाइट में. यह वैल्यू डालना ज़रूरी नहीं है. हालांकि, यह आपके ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) में विज़ुअलाइज़ेशन के लिए सबसे ज़्यादा काम की है.
- त्वचा के तापमान में हुए बदलावों की सूची. इसमें हर बदलाव, पिछली बार किए गए मेज़रमेंट के बाद से त्वचा के तापमान में हुए बदलाव को दिखाता है. अगर बेसलाइन तापमान दिया गया है, तो इन डेल्टा में तापमान की एक ही यूनिट का इस्तेमाल किया जाना चाहिए.
- उपयोगकर्ता के शरीर पर वह जगह जहां तापमान को मेज़र किया गया था: उंगली, पैर की उंगली या कलाई.
इस्तेमाल किए जा सकने वाले एग्रीगेशन
Health Connect की मदद से, डेल्टा की किसी सूची के लिए ये एग्रीगेट वैल्यू मिल सकती हैं:
- कम से कम वैल्यू
- ज़्यादा से ज़्यादा वैल्यू
- औसत वैल्यू
त्वचा के तापमान से जुड़ी जानकारी देखें
नीचे दिए गए कोड स्निपेट में, 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)
),
)
)
)
}