यह गाइड, Health Connect के 1.1.0-alpha12 वर्शन के साथ काम करती है.
इस गाइड में, Health Connect में डेटा सेव करने या अपडेट करने की प्रोसेस के बारे में बताया गया है.
शून्य वैल्यू मैनेज करना
ऐसा हो सकता है कि कदमों, दूरी या कैलोरी जैसे कुछ डेटा टाइप की वैल्यू 0
हो.
सिर्फ़ तब शून्य वैल्यू लिखें, जब उपयोगकर्ता ने डिवाइस पहना हो और वह वाकई में कोई गतिविधि न कर रहा हो. अगर डिवाइस को पहना नहीं गया है, डेटा मौजूद नहीं है या बैटरी खत्म हो गई है, तो शून्य वैल्यू न लिखें. ऐसे मामलों में, रिकॉर्ड को शामिल न करें, ताकि गलत डेटा से बचा जा सके.
डेटा स्ट्रक्चर सेट अप करना
डेटा लिखने से पहले, हमें रिकॉर्ड सेट अप करने होंगे. 50 से ज़्यादा डेटा टाइप के लिए, हर डेटा टाइप का अपना स्ट्रक्चर होता है. उपलब्ध डेटा टाइप के बारे में ज़्यादा जानने के लिए, Jetpack का रेफ़रंस देखें.
बुनियादी रिकॉर्ड
Health Connect में कदम डेटा टाइप, यह जानकारी कैप्चर करता है कि किसी व्यक्ति ने दो रीडिंग के बीच कितने कदम चले. कदमों की संख्या, सेहत, फ़िटनेस, और वेलनेस प्लैटफ़ॉर्म पर एक सामान्य मेज़रमेंट के तौर पर दिखाई जाती है.
यहां दिए गए उदाहरण में, कदमों की संख्या का डेटा सेट करने का तरीका बताया गया है:
val endTime = Instant.now()
val startTime = endTime.minus(Duration.ofMinutes(15))
val stepsRecord = StepsRecord(
count = 120,
startTime = startTime,
endTime = endTime,
startZoneOffset = ZoneOffset.UTC,
endZoneOffset = ZoneOffset.UTC,
metadata = Metadata.autoRecorded(
device = Device(type = Device.TYPE_WATCH)
)
)
माप की इकाइयों वाले रिकॉर्ड
Health Connect, वैल्यू को माप की इकाइयों के साथ सेव कर सकता है, ताकि सटीक जानकारी दी जा सके. इसका एक उदाहरण, पोषण डेटा टाइप है, जो बहुत बड़ा और व्यापक है. इसमें पोषक तत्वों के कई फ़ील्ड शामिल होते हैं. इनमें कुल कार्बोहाइड्रेट से लेकर विटामिन तक शामिल हैं. हर डेटा पॉइंट, पोषक तत्वों को दिखाता है. ये पोषक तत्व, किसी खाने की चीज़ या भोजन के हिस्से के तौर पर लिए गए हो सकते हैं.
इस डेटा टाइप में, सभी पोषक तत्वों को Mass
की इकाइयों में दिखाया जाता है. वहीं, energy
को Energy
की इकाई में दिखाया जाता है.
यहां दिए गए उदाहरण में, केला खाने वाले व्यक्ति के लिए पोषण का डेटा सेट करने का तरीका बताया गया है:
val endTime = Instant.now()
val startTime = endTime.minus(Duration.ofMinutes(1))
val banana = NutritionRecord(
name = "banana",
energy = 105.0.kilocalories,
dietaryFiber = 3.1.grams,
potassium = 0.422.grams,
totalCarbohydrate = 27.0.grams,
totalFat = 0.4.grams,
saturatedFat = 0.1.grams,
sodium = 0.001.grams,
sugar = 14.0.grams,
vitaminB6 = 0.0005.grams,
vitaminC = 0.0103.grams,
startTime = startTime,
endTime = endTime,
startZoneOffset = ZoneOffset.UTC,
endZoneOffset = ZoneOffset.UTC,
metadata = Metadata.manualEntry(
device = Device(type = Device.TYPE_PHONE)
)
)
सीरीज़ के डेटा वाले रिकॉर्ड
Health Connect, सीरीज़ डेटा की सूची सेव कर सकता है. इसका एक उदाहरण, धड़कन की दर डेटा टाइप है. यह धड़कन के सैंपल की एक सीरीज़ को कैप्चर करता है. इन सैंपल का पता, रीडिंग के बीच लगाया जाता है.
इस डेटा टाइप में, पैरामीटर samples
को हार्ट रेट के सैंपल की सूची के तौर पर दिखाया जाता है. हर सैंपल में एक beatsPerMinute
वैल्यू और एक time
वैल्यू होती है.
यहां दिए गए उदाहरण में, धड़कन की दर के सीरीज़ डेटा को सेट करने का तरीका बताया गया है:
val endTime = Instant.now()
val startTime = endTime.minus(Duration.ofMinutes(5))
val heartRateRecord = HeartRateRecord(
startTime = startTime,
startZoneOffset = ZoneOffset.UTC,
endTime = endTime,
endZoneOffset = ZoneOffset.UTC,
// records 10 arbitrary data, to replace with actual data
samples = List(10) { index ->
HeartRateRecord.Sample(
time = startTime + Duration.ofSeconds(index.toLong()),
beatsPerMinute = 100 + index.toLong(),
)
},
metadata = Metadata.autoRecorded(
device = Device(type = Device.TYPE_WATCH)
))
उपयोगकर्ता से अनुमतियों का अनुरोध करना
क्लाइंट इंस्टेंस बनाने के बाद, आपके ऐप्लिकेशन को उपयोगकर्ता से अनुमतियों का अनुरोध करना होगा. उपयोगकर्ताओं को किसी भी समय अनुमतियां देने या अस्वीकार करने की अनुमति होनी चाहिए.
इसके लिए, ज़रूरी डेटा टाइप के लिए अनुमतियों का सेट बनाएं. पक्का करें कि सेट में मौजूद अनुमतियों का एलान, सबसे पहले आपके 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 में, डेटा सेव करना एक सामान्य वर्कफ़्लो है. रिकॉर्ड जोड़ने के लिए, insertRecords
का इस्तेमाल करें.
यहां दिए गए उदाहरण में, कदम गिनने की सुविधा से जुड़ा डेटा लिखने का तरीका बताया गया है:
suspend fun insertSteps(healthConnectClient: HealthConnectClient) {
val endTime = Instant.now()
val startTime = endTime.minus(Duration.ofMinutes(5))
try {
val stepsRecord = StepsRecord(
count = 120,
startTime = startTime,
endTime = endTime,
startZoneOffset = ZoneOffset.UTC,
endZoneOffset = ZoneOffset.UTC,
metadata = Metadata.autoRecorded(
device = Device(type = Device.TYPE_WATCH)
)
)
healthConnectClient.insertRecords(listOf(stepsRecord))
} catch (e: Exception) {
// Run error handling here
}
}
डेटा अपडेट करना
अगर आपको एक या उससे ज़्यादा रिकॉर्ड में बदलाव करना है, तो डेटा अपडेट किया जा सकता है. ऐसा खास तौर पर तब करें, जब आपको अपने ऐप्लिकेशन के डेटा स्टोर को Health Connect के डेटा के साथ सिंक करना हो. मौजूदा डेटा को अपडेट करने के दो तरीके हैं. ये तरीके, रिकॉर्ड ढूंढने के लिए इस्तेमाल किए गए आइडेंटिफ़ायर पर निर्भर करते हैं.
मेटाडेटा
सबसे पहले Metadata
क्लास की जांच करना ज़रूरी है, क्योंकि डेटा अपडेट करते समय इसकी ज़रूरत पड़ती है. Health Connect में हर Record
के लिए, metadata
फ़ील्ड होता है. सिंक करने के लिए, यहां दी गई प्रॉपर्टी काम की हैं:
प्रॉपर्टी | ब्यौरा |
---|---|
id
|
Health Connect में हर Record की id वैल्यू यूनीक होती है.नया रिकॉर्ड डालते समय, Health Connect इस फ़ील्ड में जानकारी अपने-आप भर देता है. |
lastModifiedTime
|
हर Record , रिकॉर्ड में पिछली बार बदलाव किए जाने का समय भी ट्रैक करता है.Health Connect इस जानकारी को अपने-आप भर देता है. |
clientRecordId
|
हर Record से एक यूनीक आईडी जुड़ा हो सकता है, ताकि आपके ऐप्लिकेशन के डेटास्टोर में उसे रेफ़रंस के तौर पर इस्तेमाल किया जा सके.
यह वैल्यू आपका ऐप्लिकेशन देता है. |
clientRecordVersion
|
जिस रिकॉर्ड में clientRecordId है उसमें clientRecordId का इस्तेमाल करके, डेटा को अपने ऐप्लिकेशन के डेटास्टोर में मौजूद वर्शन के साथ सिंक किया जा सकता है.clientRecordVersion यह वैल्यू आपका ऐप्लिकेशन देता है. |
समयसीमा के हिसाब से पढ़े गए लेखों के बाद अपडेट
डेटा अपडेट करने के लिए, सबसे पहले ज़रूरी रिकॉर्ड तैयार करें. अगर ज़रूरी हो, तो रिकॉर्ड में बदलाव करें. इसके बाद, बदलाव करने के लिए updateRecords
पर कॉल करें.
यहां दिए गए उदाहरण में, डेटा अपडेट करने का तरीका बताया गया है. इसके लिए, हर रिकॉर्ड की ज़ोन ऑफ़सेट वैल्यू को पीएसटी में अडजस्ट किया जाता है.
suspend fun updateSteps(
healthConnectClient: HealthConnectClient,
prevRecordStartTime: Instant,
prevRecordEndTime: Instant
) {
try {
val request = healthConnectClient.readRecords(
ReadRecordsRequest(
recordType = StepsRecord::class, timeRangeFilter = TimeRangeFilter.between(
prevRecordStartTime, prevRecordEndTime
)
)
)
val newStepsRecords = arrayListOf<StepsRecord>()
for (record in request.records) {
// Adjusted both offset values to reflect changes
val sr = StepsRecord(
count = record.count,
startTime = record.startTime,
startZoneOffset = record.startTime.atZone(ZoneId.of("PST")).offset,
endTime = record.endTime,
endZoneOffset = record.endTime.atZone(ZoneId.of("PST")).offset,
metadata = record.metadata
)
newStepsRecords.add(sr)
}
healthConnectClient.updateRecords(newStepsRecords)
} catch (e: Exception) {
// Run error handling here
}
}
क्लाइंट रिकॉर्ड आईडी के ज़रिए अपसर्ट करना
अगर आपने क्लाइंट रिकॉर्ड आईडी और क्लाइंट रिकॉर्ड वर्शन की वैकल्पिक वैल्यू का इस्तेमाल किया है, तो हमारा सुझाव है कि updateRecords
के बजाय insertRecords
का इस्तेमाल करें.
insertRecords
फ़ंक्शन में डेटा को अपसर्ट करने की सुविधा होती है.
अगर दिए गए क्लाइंट रिकॉर्ड आईडी के सेट के आधार पर, Health Connect में डेटा मौजूद है, तो वह ओवरराइट हो जाता है. अगर ऐसा नहीं है, तो इसे नए डेटा के तौर पर लिखा जाता है.
यह तरीका तब काम आता है, जब आपको अपने ऐप्लिकेशन के डेटास्टोर से Health Connect में डेटा सिंक करना हो.
यहां दिए गए उदाहरण में, ऐप्लिकेशन के डेटास्टोर से पुल किए गए डेटा पर अपसर्ट करने का तरीका बताया गया है:
suspend fun pullStepsFromDatastore() : ArrayList<StepsRecord> {
val appStepsRecords = arrayListOf<StepsRecord>()
// Pull data from app datastore
// ...
// Make changes to data if necessary
// ...
// Store data in appStepsRecords
// ...
var sr = StepsRecord(
metadata = Metadata.autoRecorded(
clientRecordId = "Your client record ID",
device = Device(type = Device.TYPE_WATCH)
),
// Assign more parameters for this record
)
appStepsRecords.add(sr)
// ...
return appStepsRecords
}
suspend fun upsertSteps(
healthConnectClient: HealthConnectClient,
newStepsRecords: ArrayList<StepsRecord>
) {
try {
healthConnectClient.insertRecords(newStepsRecords)
} catch (e: Exception) {
// Run error handling here
}
}
इसके बाद, इन फ़ंक्शन को अपनी मुख्य थ्रेड में कॉल किया जा सकता है.
upsertSteps(healthConnectClient, pullStepsFromDatastore())
क्लाइंट रिकॉर्ड वर्शन में वैल्यू की जांच करना
अगर डेटा को अपडेट करने की प्रोसेस में क्लाइंट रिकॉर्ड वर्शन शामिल है, तो Health Connect, clientRecordVersion
वैल्यू की तुलना करता है. अगर डाले गए डेटा का वर्शन, मौजूदा डेटा के वर्शन से ज़्यादा है, तो अपसर्ट होता है. ऐसा न होने पर, प्रोसेस में बदलाव को अनदेखा कर दिया जाता है और वैल्यू पहले जैसी ही रहती है.
अपने डेटा में वर्शनिंग शामिल करने के लिए, आपको Metadata.clientRecordVersion
एट्रिब्यूट की वैल्यू के तौर पर Long
एट्रिब्यूट की वैल्यू देनी होगी. यह वैल्यू, वर्शनिंग के लॉजिक पर आधारित होनी चाहिए.
val endTime = Instant.now()
val startTime = endTime.minus(Duration.ofMinutes(15))
val stepsRecord = StepsRecord(
count = 100L,
startTime = startTime,
startZoneOffset = ZoneOffset.UTC,
endTime = endTime,
endZoneOffset = ZoneOffset.UTC,
metadata = Metadata.manualEntry(
clientRecordId = "Your supplied record ID",
clientRecordVersion = 0L, // Your supplied record version
device = Device(type = Device.TYPE_WATCH)
)
)
अपसर्ट करने पर, बदलाव होने पर version
अपने-आप नहीं बढ़ता. इससे डेटा को अनचाहे तरीके से ओवरराइट होने से रोका जा सकता है. इसलिए, आपको मैन्युअल तरीके से इसकी वैल्यू बढ़ानी होगी.
डेटा लिखने के सबसे सही तरीके
ऐप्लिकेशन को सिर्फ़ अपने सोर्स से मिले डेटा को Health Connect में सेव करना चाहिए.
अगर आपके ऐप्लिकेशन में किसी दूसरे ऐप्लिकेशन से डेटा इंपोर्ट किया गया है, तो Health Connect में अपना डेटा सेव करने की ज़िम्मेदारी उस दूसरे ऐप्लिकेशन की होगी.
इसके अलावा, ऐसा लॉजिक लागू करना भी एक अच्छा तरीका है जो लिखने से जुड़ी गड़बड़ियों को ठीक कर सके. जैसे, डेटा का तय सीमा से बाहर होना या सिस्टम में कोई गड़बड़ी होना. जॉब शेड्यूल करने के मैकेनिज़्म पर, बैकऑफ़ और फिर से कोशिश करने की रणनीतियां लागू की जा सकती हैं. अगर Health Connect में डेटा सेव नहीं हो पाता है, तो पक्का करें कि आपका ऐप्लिकेशन, एक्सपोर्ट के उस पॉइंट से आगे बढ़ सके. डाइग्नोसिस में मदद पाने के लिए, गड़बड़ियों को लॉग करना और उनकी रिपोर्ट करना न भूलें.
डेटा ट्रैक करते समय, यहां दिए गए कुछ सुझावों का पालन किया जा सकता है. ये सुझाव, इस बात पर निर्भर करते हैं कि आपका ऐप्लिकेशन डेटा को कैसे सेव करता है.
टाइम ज़ोन मैनेज करना
समय के हिसाब से रिकॉर्ड लिखते समय, zoneOffset.UTC को डिफ़ॉल्ट रूप से सेट करने से बचें. इसकी वजह यह है कि जब उपयोगकर्ता अन्य ज़ोन में होते हैं, तो इससे टाइमस्टैंप गलत हो सकते हैं. इसके बजाय, डिवाइस की मौजूदा जगह की जानकारी के आधार पर ऑफ़सेट का हिसाब लगाएं.
ZoneId.systemDefault()
का इस्तेमाल करके, डिवाइस का टाइम ज़ोन वापस पाया जा सकता है.
val endTime = Instant.now()
val startTime = endTime.minus(java.time.Duration.ofDays(1))
val stepsRecords = mutableListOf<StepsRecord>()
var sampleTime = startTime
val minutesBetweenSamples = 15L
while (sampleTime < endTime) {
// Get the default ZoneId then convert it to an offset
val zoneOffset = ZoneOffset.systemDefault().rules.getOffset(sampleTime)
stepsRecords += StepsRecord(
startTime = sampleTime.minus(java.time.Duration.ofMinutes(minutesBetweenSamples)),
startZoneOffset = zoneOffset,
endTime = sampleTime,
endZoneOffset = zoneOffset,
count = Random.nextLong(1, 100),
metadata = Metadata.unknownRecordingMethod(),
)
sampleTime = sampleTime.plus(java.time.Duration.ofMinutes(minutesBetweenSamples))
}
healthConnectClient.insertRecords(
stepsRecords
)
ज़्यादा जानकारी के लिए, ZoneId
के लिए दस्तावेज़ देखें.
पैसिव ट्रैकिंग
इसमें ऐसे ऐप्लिकेशन शामिल हैं जो पैसिव फ़िटनेस या सेहत की ट्रैकिंग करते हैं. जैसे, बैकग्राउंड में लगातार कदमों या धड़कन की दर को रिकॉर्ड करना.
आपके ऐप्लिकेशन को Health Connect में समय-समय पर डेटा सेव करना होगा. इसके लिए, ये तरीके अपनाए जा सकते हैं:
- हर सिंक पर, सिर्फ़ नया डेटा और अपडेट किया गया वह डेटा लिखें जिसमें पिछले सिंक के बाद से बदलाव किया गया है.
- हर अनुरोध में ज़्यादा से ज़्यादा 1,000 रिकॉर्ड शामिल करें.
- बैकग्राउंड में समय-समय पर होने वाले टास्क शेड्यूल करने के लिए,
WorkManager
का इस्तेमाल करें. इसके लिए, कम से कम 15 मिनट की समयावधि तय करें. - टास्क सिर्फ़ तब चलाएं, जब डिवाइस कुछ समय से इस्तेमाल में न हो और बैटरी का लेवल कम न हो.
val constraints = Constraints.Builder()
.requiresBatteryNotLow()
.requiresDeviceIdle(true)
.build()
val writeDataWork = PeriodicWorkRequestBuilder<WriteDataToHealthConnectWorker>(
15,
TimeUnit.MINUTES,
5,
TimeUnit.MINUTES
)
.setConstraints(constraints)
.build()
ऐक्टिव ट्रैकिंग
इसमें ऐसे ऐप्लिकेशन शामिल हैं जो इवेंट के आधार पर ट्रैकिंग करते हैं. जैसे, कसरत और नींद. इसके अलावा, इसमें उपयोगकर्ता के मैन्युअल तरीके से डाले गए डेटा को भी ट्रैक किया जाता है. जैसे, पोषण. ये रिकॉर्ड तब बनाए जाते हैं, जब ऐप्लिकेशन फ़ोरग्राउंड में हो. इसके अलावा, ये रिकॉर्ड उन खास इवेंट के लिए भी बनाए जाते हैं जिनमें ऐप्लिकेशन का इस्तेमाल दिन में कुछ बार किया जाता है.
पक्का करें कि आपका ऐप्लिकेशन, इवेंट की पूरी अवधि के दौरान Health Connect को चालू न रखे.
डेटा को Health Connect में दो में से किसी एक तरीके से सेव किया जाना चाहिए:
- इवेंट पूरा होने के बाद, Health Connect में डेटा सिंक करें. उदाहरण के लिए, जब उपयोगकर्ता ट्रैक की गई कसरत का सेशन खत्म करता है, तब डेटा सिंक करें.
- डेटा को बाद में सिंक करने के लिए,
WorkManager
का इस्तेमाल करके, एक बार होने वाले टास्क को शेड्यूल करें.
डेटा लिखने की फ़्रीक्वेंसी और ग्रेन्यूलैरिटी के लिए सबसे सही तरीके
Health Connect में डेटा सेव करते समय, सही रिज़ॉल्यूशन का इस्तेमाल करें. सही रिज़ॉल्यूशन का इस्तेमाल करने से, स्टोरेज पर पड़ने वाला लोड कम हो जाता है. साथ ही, इससे सटीक और एक जैसा डेटा बनाए रखने में मदद मिलती है. डेटा रिज़ॉल्यूशन में दो चीज़ें शामिल होती हैं:
- डेटा लिखने की फ़्रीक्वेंसी: आपका ऐप्लिकेशन, Health Connect में कितनी बार नया डेटा भेजता है. उदाहरण के लिए, हर 15 मिनट में नया डेटा लिखें.
- लिखे गए डेटा की बारीकी: पुश किए गए डेटा को कितनी बार सैंपल किया गया. उदाहरण के लिए, हर पांच सेकंड में धड़कन की दर के सैंपल लिखो. हर डेटा टाइप के लिए, एक जैसा सैंपल रेट ज़रूरी नहीं होता. हर सेकंड में कदमों की संख्या का डेटा अपडेट करने से कोई खास फ़ायदा नहीं होता. इसके बजाय, इसे कम बार अपडेट किया जा सकता है. जैसे, हर 60 सेकंड में. हालांकि, सैंपल रेट ज़्यादा होने पर उपयोगकर्ताओं को सेहत और फ़िटनेस के डेटा के बारे में ज़्यादा जानकारी मिल सकती है. साथ ही, वे डेटा को ज़्यादा बारीकी से देख सकते हैं. सैंपल रेट फ़्रीक्वेंसी में, बारीकी से जानकारी और परफ़ॉर्मेंस के बीच संतुलन होना चाहिए.
पूरे दिन मॉनिटर किए गए डेटा को लिखने की अनुमति दें
अगर आपका ऐप्लिकेशन, लगातार डेटा इकट्ठा करता है, जैसे कि कदमों की संख्या, तो उसे दिन भर में कम से कम हर 15 मिनट में Health Connect में डेटा सेव करना चाहिए.
डेटा टाइप |
यूनिट |
अनुमानित |
उदाहरण |
कदम |
कदम |
हर 1 मिनट में |
23:14 - 23:15 - 5 कदम 23:16 - 23:17 - 22 कदम 23:17 - 23:18 - 8 कदम |
StepsCadence |
कदम/मिनट |
हर 1 मिनट में |
23:14 - 23:15 - 5 spm 23:16 - 23:17 - 22 एसपीएम 23:17 - 23:18 - 8 एसपीएम |
व्हीलचेयर पुश करने से जुड़ा डेटा |
पुश करता है |
हर 1 मिनट में |
23:14 - 23:15 - 5 पुश 23:16 - 23:17 - 22 पुश 23:17 - 23:18 - 8 पुश |
ActiveCaloriesBurned |
कैलोरी |
प्रत्येक 15 मिनट |
23:15 - 23:30 - 2 कैलोरी 23:30 - 23:45 - 25 कैलोरी 23:45 - 00:00 - 5 कैलोरी |
TotalCaloriesBurned |
कैलोरी |
प्रत्येक 15 मिनट |
23:15 - 23:30 - 16 कैलोरी 23:30 - 23:45 - 16 कैलोरी 23:45 - 00:00 - 16 कैलोरी |
तय की गई दूरी |
कि॰मी॰/मि॰ |
हर 1 मिनट में |
23:14-23:15 - 0.008 कि॰मी॰ 23:16 - 23:16 - 0.021 कि॰मी॰ 23:17 - 23:18 - 0.012 कि॰मी॰ |
ElevationGained |
m |
हर 1 मिनट में |
20:36 - 20:37 - 3.048 मीटर 20:39 - 20:40 - 3.048 मीटर 23:23 - 23:24 - 9.144 मीटर |
FloorsClimbed |
मंज़िल |
हर 1 मिनट में |
23:14 से 23:15 - 5 फ़्लोर 23:16 - 23:16 - 22 फ़्लोर 23:17 - 23:18 - 8 फ़्लोर |
HeartRate |
बीपीएम |
एक मिनट में चार बार |
सुबह 6:11:15 बजे - 55 बीपीएम सुबह 6:11:30 बजे - 56 बीपीएम सुबह 6:11:45 बजे - 56 बीपीएम सुबह 6:12:00 बजे - 55 बीपीएम |
HeartRateVariabilityRmssd |
ms |
हर 1 मिनट में |
सुबह 6:11 बजे - 23 मिलीसेकंड |
RespiratoryRate |
साँस/मिनट |
हर 1 मिनट में |
23:14 - 23:15 - 60 सांसें/मिनट 23:16 - 23:16 - 62 सांसें/मिनट 23:17 - 23:18 - 64 सांसें/मिनट |
OxygenSaturation |
% |
हर 1 घंटे में |
6:11 - 95.208% |
सेशन का डेटा सेव करने की अनुमति दें
कसरत या नींद के सेशन के खत्म होने के बाद, डेटा को Health Connect में सेव किया जाना चाहिए.
आपका आवेदन, कम से कम इस टेबल में अनुमानित कॉलम में दिए गए दिशा-निर्देशों के मुताबिक होना चाहिए. जहां भी हो सके, सबसे सही दिशा-निर्देशों का पालन करें.
कसरत और नींद के सेशन
नीचे दिए गए उदाहरण में, कसरत के दौरान डेटा लिखने का तरीका बताया गया है:
डेटा टाइप |
यूनिट |
अनुमानित |
धन्यवाद |
उदाहरण |
कदम |
कदम |
हर 1 मिनट में |
हर 1 सेकंड में |
23:14-23:15 - 5 चरण 23:16 - 23:17 - 22 कदम 23:17 - 23:18 - 8 कदम |
StepsCadence |
कदम/मिनट |
हर 1 मिनट में |
हर 1 सेकंड में |
रात 11:14 से 11:15 बजे तक - 35 एसपीएम 23:16 - 23:17 - 37 spm 23:17 - 23:18 - 40 spm |
व्हीलचेयर पुश करने से जुड़ा डेटा |
पुश करता है |
हर 1 मिनट में |
हर 1 सेकंड में |
23:14-23:15 - 5 पुश 23:16 - 23:17 - 22 पुश 23:17 - 23:18 - 8 पुश |
CyclingPedalingCadence |
आरपीएम |
हर 1 मिनट में |
हर 1 सेकंड में |
23:14-23:15 - 65 आरपीएम 23:16 - 23:17 - 70 आरपीएम 23:17 - 23:18 - 68 आरपीएम |
ताकत |
वॉट |
हर 1 मिनट में |
हर 1 सेकंड में |
23:14-23:15 - 250 वॉट 23:16 - 23:17 - 255 वॉट 23:17 - 23:18 - 245 वॉट |
स्पीड |
कि॰मी॰/मि॰ |
हर 1 मिनट में |
हर 1 सेकंड में |
23:14-23:15 - 0.3 कि॰मी॰/मिनट 23:16 - 23:17 - 0.4 कि॰मी॰/मिनट 23:17 - 23:18 -0.4 कि॰मी॰/मि॰ |
तय की गई दूरी |
कि॰मी॰/मी॰ |
हर 1 मिनट में |
हर 1 सेकंड में |
23:14-23:15 - 0.008 कि॰मी॰ 23:16 - 23:16 - 0.021 कि॰मी॰ 23:17 - 23:18 - 0.012 कि॰मी॰ |
ActiveCaloriesBurned |
कैलोरी |
हर 1 मिनट में |
हर 1 सेकंड में |
23:14-23:15 - 20 कैलोरी 23:16 - 23:17 - 20 कैलोरी 23:17 - 23:18 - 25 कैलोरी |
TotalCaloriesBurned |
कैलोरी |
हर 1 मिनट में |
हर 1 सेकंड में |
23:14-23:15 - 36 कैलोरी 23:16 - 23:17 - 36 कैलोरी 23:17 - 23:18 - 41 कैलोरी |
ElevationGained |
m |
हर 1 मिनट में |
हर 1 सेकंड में |
20:36 - 20:37 - 3.048 मीटर 20:39 - 20:40 - 3.048 मीटर 23:23 - 23:24 - 9.144 मीटर |
ExerciseRoutes |
lat/lng/alt |
हर तीन से पांच सेकंड में |
हर 1 सेकंड में |
|
HeartRate |
बीपीएम |
एक मिनट में चार बार |
हर 1 सेकंड में |
23:14-23:15 - 150 बीपीएम |
नीचे दिए गए उदाहरण में, नींद के सेशन के दौरान या बाद में डेटा लिखने का तरीका बताया गया है:
डेटा टाइप |
यूनिट |
अनुमानित सैंपल |
उदाहरण |
नींद के चरण का पता लगाना |
स्टेज |
नींद के हर चरण के हिसाब से समय की जानकारी |
23:46 - 23:50 - जगे रहना 23:50 - 23:56 - हल्की नींद 23:56 - 00:16 - गहरी नींद |
RestingHeartRate |
बीपीएम |
हर दिन की एक वैल्यू (सुबह सबसे पहले अपडेट होने की उम्मीद है) |
सुबह 6:11 बजे - 60 बीपीएम |
OxygenSaturation |
% |
हर दिन की एक वैल्यू (सुबह सबसे पहले अपडेट होने की उम्मीद है) |
6:11 - 95.208% |
मल्टी-स्पोर्ट इवेंट
इस तरीके में, मौजूदा डेटा टाइप और स्ट्रक्चर का इस्तेमाल किया जाता है. साथ ही, यह पुष्टि की जाती है कि यह तरीका, Health Connect के मौजूदा वर्शन और डेटा रीडर के साथ काम करता है. फ़िटनेस प्लैटफ़ॉर्म, आम तौर पर इसी तरीके का इस्तेमाल करते हैं.
यहां दिए गए उदाहरण में, ट्रायथलॉन के लिए डेटा लिखने का तरीका बताया गया है:
val swimStartTime = Instant.parse("2024-08-22T08:00:00Z")
val swimEndTime = Instant.parse("2024-08-22T08:30:00Z")
val bikeStartTime = Instant.parse("2024-08-22T08:40:00Z")
val bikeEndTime = Instant.parse("2024-08-22T09:40:00Z")
val runStartTime = Instant.parse("2024-08-22T09:50:00Z")
val runEndTime = Instant.parse("2024-08-22T10:20:00Z")
val swimSession = ExerciseSessionRecord(
startTime = swimStartTime,
endTime = swimEndTime,
exerciseType = ExerciseSessionRecord.EXERCISE_TYPE_SWIMMING_OPEN_WATER,
metadata = Metadata.autoRecorded(
device = Device(type = Device.TYPE_WATCH)
)
)
val bikeSession = ExerciseSessionRecord(
startTime = bikeStartTime,
endTime = bikeEndTime,
exerciseType = ExerciseSessionRecord.EXERCISE_TYPE_BIKING,
metadata = Metadata.autoRecorded(
device = Device(type = Device.TYPE_WATCH)
)
)
val runSession = ExerciseSessionRecord(
startTime = runStartTime,
endTime = runEndTime,
exerciseType = ExerciseSessionRecord.EXERCISE_TYPE_RUNNING,
metadata = Metadata.autoRecorded(
device = Device(type = Device.TYPE_WATCH)
)
)
healthConnectClient.insertRecords(listOf(swimSession, bikeSession, runSession))