यह गाइड, Health Connect के 1.1.0-alpha12 वर्शन के साथ काम करती है.
इस गाइड में, Health Connect में डेटा सेव करने या अपडेट करने की प्रोसेस के बारे में बताया गया है.
डेटा स्ट्रक्चर सेट अप करना
डेटा लिखने से पहले, हमें रिकॉर्ड सेट अप करने होंगे. डेटा के 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 है, तो 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 में डेटा सेव करने में समस्या आ रही है, तो पक्का करें कि आपका ऐप्लिकेशन उस समस्या को हल कर सके. समस्या का पता लगाने में मदद पाने के लिए, गड़बड़ियों को लॉग करना और उनकी शिकायत करना न भूलें.
डेटा ट्रैक करते समय, कुछ सुझावों का पालन किया जा सकता है. ये सुझाव, इस बात पर निर्भर करते हैं कि आपका ऐप्लिकेशन डेटा को कैसे सेव करता है.
पैसिव ट्रैकिंग
इसमें ऐसे ऐप्लिकेशन भी शामिल हैं जो बैकग्राउंड में लगातार चरणों या दिल की धड़कन की दर को रिकॉर्ड करते हैं.
आपके ऐप्लिकेशन को 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 - पांच चरण 23:16 - 23:17 - 22 चरण 23:17 - 23:18 - आठ चरण |
StepsCadence |
कदम/मिनट |
हर 1 मिनट में |
23:14 - 23:15 - 5 स्पीड प्रति मिनट 23:16 - 23:17 - 22 स्पीड प्रति मिनट 23:17 - 23:18 - 8 स्पीड प्रति मिनट |
व्हीलचेयर पुश करने से जुड़ा डेटा |
पुश |
हर 1 मिनट में |
23:14 - 23:15 - पांच पुश 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.048m 20:39 - 20:40 - 3.048m 23:23 - 23:24 - 9.144m |
FloorsClimbed |
मंज़िल |
हर 1 मिनट में |
23:14 से 23:15 - पांच फ़्लोर 23:16 - 23:16 - 22 फ़्लोर 23:17 - 23:18 - 8 फ़्लोर |
HeartRate |
बीपीएम |
हर 1 मिनट में |
सुबह 6:11 बजे - 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 में सेव किया जाना चाहिए.
सबसे सही तरीका यह है कि नींद या कसरत के किसी भी सेशन को रिकॉर्ड करने वाले डिवाइस और सही मेटाडेटा के साथ लिखा जाना चाहिए. इसमें RecordingMethod
भी शामिल है.
कम से कम, आपका ऐप्लिकेशन नीचे दिए गए "ज़रूरी" कॉलम में दिए गए दिशा-निर्देशों का पालन करना चाहिए. जहां भी हो सके, "सबसे सही" दिशा-निर्देशों का पालन करें.
कसरत के दौरान ट्रैक किया गया डेटा
डेटा टाइप |
यूनिट |
अनुमानित |
धन्यवाद |
उदाहरण |
कदम |
कदम |
हर 1 मिनट में |
हर 1 सेकंड में |
23:14-23:15 - पांच चरण 23:16 - 23:17 - 22 चरण 23:17 - 23:18 - आठ चरण |
StepsCadence |
कदम/मिनट |
हर 1 मिनट में |
हर 1 सेकंड में |
23:14-23:15 - 35 स्पीड प्रति मिनट 23:16 - 23:17 - 37 स्पीड प्रति मिनट 23:17 - 23:18 - 40 स्पीड प्रति मिनट |
व्हीलचेयर पुश करने से जुड़ा डेटा |
पुश |
हर 1 मिनट में |
हर 1 सेकंड में |
23:14-23:15 - पांच पुश 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.048m 20:39 - 20:40 - 3.048m 23:23 - 23:24 - 9.144m |
ExerciseRoutes |
lat/lng/alt |
हर 3 से 5 सेकंड में |
हर 1 सेकंड में |
|
HeartRate |
बीपीएम |
हर 1 मिनट में |
हर 1 सेकंड में |
23:14-23:15 - 150 बीपीएम 23:16 - 23:17 -152 बीपीएम 23:17 - 23:18 - 155 बीपीएम |
सोने के दौरान ट्रैक किया गया डेटा
डेटा टाइप |
यूनिट |
सैंपल के लिए ज़रूरी शर्तें |
उदाहरण |
नींद के चरण |
स्टेज |
नींद के हर चरण में बिताया गया समय |
23:46 - 23:50 - जाग रहा/रही है 23:50 - 23:56 - हल्की नींद 23:56 - 00:16 - गहरी नींद |
RestingHeartRate |
बीपीएम |
हर दिन की एक वैल्यू (सुबह सबसे पहले मिलने वाली वैल्यू) |
सुबह 6:11 बजे - 60 बीपीएम |
OxygenSaturation |
% |
हर दिन की एक वैल्यू (सुबह सबसे पहले मिलने वाली वैल्यू) |
6:11 - 95.208% |