MeasureClient
एपीआई की मदद से, आपका ऐप्लिकेशन कुछ समय के लिए डेटा पाने के लिए कॉलबैक रजिस्टर करता है.
यह सुविधा उन स्थितियों के लिए है जब आपका ऐप्लिकेशन इस्तेमाल किया जा रहा हो और उसे डेटा को तुरंत अपडेट करने की ज़रूरत हो. अगर मुमकिन हो, तो इसे फ़ोरग्राउंड यूज़र इंटरफ़ेस (यूआई) के साथ बनाएं, ताकि उपयोगकर्ता को इसकी जानकारी हो.
डिपेंडेंसी जोड़ें
Health Services पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी. ज़्यादा जानकारी के लिए, Google की Maven रिपॉज़िटरी देखें.
इसके बाद, मॉड्यूल-लेवल की build.gradle
फ़ाइल में, यह डिपेंडेंसी जोड़ें:
ग्रूवी
dependencies { implementation "androidx.health:health-services-client:1.1.0-alpha05" }
Kotlin
dependencies { implementation("androidx.health:health-services-client:1.1.0-alpha05") }
सुविधाओं के बारे में जानकारी
डेटा अपडेट के लिए रजिस्टर करने से पहले, यह देख लें कि डिवाइस, आपके ऐप्लिकेशन की ज़रूरत के हिसाब से डेटा उपलब्ध करा सकता है या नहीं. डिवाइस की क्षमताओं की जांच करके, कुछ सुविधाओं को चालू या बंद किया जा सकता है. इसके अलावा, उन क्षमताओं की कमी को पूरा करने के लिए, ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) में बदलाव किया जा सकता है जो उपलब्ध नहीं हैं.
यहां दिए गए उदाहरण में बताया गया है कि यह कैसे पता लगाया जाए कि कोई डिवाइस, HEART_RATE_BPM
डेटा टाइप उपलब्ध करा सकता है या नहीं:
val healthClient = HealthServices.getClient(this /*context*/)
val measureClient = healthClient.measureClient
lifecycleScope.launch {
val capabilities = measureClient.getCapabilitiesAsync().await()
supportsHeartRate = DataType.HEART_RATE_BPM in capabilities.supportedDataTypesMeasure
}
डेटा के लिए रजिस्टर करना
रजिस्टर किया गया हर कॉलबैक, एक डेटा टाइप के लिए होता है. ध्यान दें कि कुछ डेटा टाइप के लिए, उपलब्धता की स्थितियां अलग-अलग हो सकती हैं. उदाहरण के लिए, जब डिवाइस को कलाई पर सही तरीके से नहीं लगाया जाता है, तब हो सकता है कि दिल धड़कने की दर का डेटा उपलब्ध न हो.
यह ज़रूरी है कि आपका कॉलबैक कम से कम समय के लिए रजिस्टर हो. ऐसा इसलिए, क्योंकि कॉलबैक की वजह से सेंसर सैंपलिंग रेट बढ़ जाते हैं. इससे बैटरी की खपत भी बढ़ जाती है.
यहां दिए गए उदाहरण में, HEART_RATE_BPM
डेटा पाने के लिए, कॉलबैक को रजिस्टर और अनरजिस्टर करने का तरीका बताया गया है:
val heartRateCallback = object : MeasureCallback {
override fun onAvailabilityChanged(dataType: DeltaDataType<*, *>, availability: Availability) {
if (availability is DataTypeAvailability) {
// Handle availability change.
}
}
override fun onDataReceived(data: DataPointContainer) {
// Inspect data points.
}
}
val healthClient = HealthServices.getClient(this /*context*/)
val measureClient = healthClient.measureClient
// Register the callback.
measureClient.registerMeasureCallback(DataType.Companion.HEART_RATE_BPM, heartRateCallback)
// Unregister the callback.
awaitClose {
runBlocking {
measureClient.unregisterMeasureCallbackAsync(DataType.Companion.HEART_RATE_BPM, heartRateCallback)
}
}