मेटाडेटा से जुड़ी ज़रूरी शर्तें

यह गाइड, Health Connect के 1.1.0-alpha12 वर्शन के साथ काम करती है.

रिलीज़ 1.1.0-alpha12 पर अपग्रेड करने का विकल्प चुनने वाले डेवलपर के लिए, Health Connect में मेटाडेटा से जुड़े बदलाव किए गए हैं.

लाइब्रेरी की जानकारी

Google Maven Android gradle plugin का आर्टफ़ैक्ट आईडी, उस Health Connect लाइब्रेरी की पहचान करता है जिसे आपको अपग्रेड करना होगा. अपने मॉड्यूल-लेवल की build.gradle फ़ाइल में, Health Connect SDK की यह डिपेंडेंसी जोड़ें:

dependencies {
  implementation "androidx.health.connect:connect-client:1.1.0-alpha12"
}

मेटाडेटा में बदलाव

Health Connect Jetpack SDK के वर्शन 1.1.0-alpha12 में, मेटाडेटा से जुड़े दो बदलाव किए गए हैं. इससे यह पक्का किया जा सकेगा कि इकोसिस्टम में काम का अतिरिक्त मेटाडेटा मौजूद हो.

रिकॉर्डिंग का तरीका बताना

जब भी Record() टाइप ऑब्जेक्ट इंस्टैंटिएट किया जाता है, तब आपको मेटाडेटा की जानकारी देनी होती है.

Health Connect में डेटा सेव करते समय, आपको रिकॉर्डिंग के चार तरीकों में से किसी एक के बारे में बताना होगा:

रिकॉर्डिंग का तरीका ब्यौरा
RECORDING_METHOD_UNKNOWN रिकॉर्डिंग के तरीके की पुष्टि नहीं की जा सकती.
RECORDING_METHOD_MANUAL_ENTRY उपयोगकर्ता ने डेटा डाला है.
RECORDING_METHOD_AUTOMATICALLY_RECORDED किसी डिवाइस या सेंसर ने डेटा रिकॉर्ड किया हो.
RECORDING_METHOD_ACTIVELY_RECORDED उपयोगकर्ता ने किसी डिवाइस पर रिकॉर्डिंग सेशन शुरू या खत्म किया.

उदाहरण के लिए:

StepsRecord(
    startTime \= Instant.ofEpochMilli(1234L),
    startZoneOffset \= null,
    endTime \= Instant.ofEpochMilli(1236L),
    endZoneOffset \= null,
    metadata \= Metadata.manualEntry(),
    Count \= 10,
)

डिवाइस का टाइप

अपने-आप और ऐक्टिव तौर पर रिकॉर्ड किए गए सभी डेटा के लिए, आपको डिवाइस का टाइप बताना होगा. मौजूदा डिवाइस टाइप में ये शामिल हैं:

डिवाइस का टाइप ब्यौरा
TYPE_UNKNOWN डिवाइस के टाइप की जानकारी नहीं है.
TYPE_WATCH डिवाइस का टाइप घड़ी है.
TYPE_PHONE डिवाइस का टाइप फ़ोन है.
TYPE_SCALE डिवाइस का टाइप स्केल है.
TYPE_RING डिवाइस का टाइप रिंग है.
TYPE_HEAD_MOUNTED डिवाइस का टाइप, सिर पर पहनने वाला डिवाइस है.
TYPE_FITNESS_BAND डिवाइस का टाइप फ़िटनेस बैंड है.
TYPE_CHEST_STRAP डिवाइस टाइप, चेस्ट स्ट्रैप है.
TYPE_SMART_DISPLAY डिवाइस का टाइप स्मार्ट डिसप्ले है.

Device.type की कुछ वैल्यू, Health Connect के नए वर्शन पर ही उपलब्ध हैं. डिवाइस टाइप की ज़्यादा जानकारी देने वाली सुविधा उपलब्ध न होने पर, इन टाइप को Device.TYPE_UNKNOWN के तौर पर माना जाता है.

डिवाइस के अन्य टाइप ब्यौरा
TYPE_CONSUMER_MEDICAL_DEVICE डिवाइस का टाइप मेडिकल डिवाइस है.
TYPE_GLASSES डिवाइस टाइप, स्मार्ट चश्मे या आईवियर का एक पेयर है.
TYPE_HEARABLE डिवाइस का टाइप, सुनने में मदद करने वाला डिवाइस है.
TYPE_FITNESS_MACHINE डिवाइस का टाइप, स्टेशनरी मशीन है.
TYPE_FITNESS_EQUIPMENT डिवाइस का टाइप फ़िटनेस का सामान है.
TYPE_PORTABLE_COMPUTER डिवाइस का टाइप पोर्टेबल कंप्यूटर है.
TYPE_METER डिवाइस टाइप, मेज़रमेंट मीटर है.
यह पता लगाने के लिए कि उपयोगकर्ता के डिवाइस पर Health Connect के साथ काम करने वाले एक्सटेंडेड डिवाइस टाइप की सुविधा काम करती है या नहीं, क्लाइंट पर FEATURE_EXTENDED_DEVICE_TYPES की उपलब्धता देखें:

if (healthConnectClient
     .features
     .getFeatureStatus(
       HealthConnectFeatures.FEATURE_EXTENDED_DEVICE_TYPES
     ) == HealthConnectFeatures.FEATURE_STATUS_AVAILABLE) {

  // Feature is available
} else {
  // Feature isn't available
}
ज़्यादा जानने के लिए, सुविधा की उपलब्धता की जांच करना लेख पढ़ें.

अगर हो सके, तो डिवाइस के टाइप के साथ-साथ, डिवाइस बनाने वाली कंपनी और डिवाइस का मॉडल भी बताएं. उदाहरण के लिए:

private val TEST_DEVICE = Device(
    manufacturer = "Google",
    model = "Pixel Watch",
    type = Device.TYPE_WATCH
)

स्निपेट अपडेट किए गए

मेटाडेटा से जुड़ी नई ज़रूरी शर्तों का पालन करने के लिए, Health Connect की गाइड को अपडेट किया गया है. इनमें नए स्निपेट जोड़े गए हैं. कुछ उदाहरणों के लिए, डेटा लिखना पेज देखें.

मेटाडेटा के नए तरीके

मेटाडेटा को अब सीधे तौर पर इंस्टैंशिएट नहीं किया जा सकता. इसलिए, मेटाडेटा का नया इंस्टेंस पाने के लिए, फ़ैक्ट्री के किसी एक तरीके का इस्तेमाल करें. हर फ़ंक्शन के तीन सिग्नेचर वैरिएंट होते हैं:

  • activelyRecorded

    • fun activelyRecorded(device: Device): Metadata.
    • fun activelyRecorded(clientRecordId: String, clientRecordVersion: Long = 0, device: Device): Metadata
    • fun activelyRecordedWithId(id: String, device: Device): Metadata
  • autoRecorded

    • fun autoRecorded(device: Device): Metadata
    • fun autoRecorded(clientRecordId: String, clientRecordVersion: Long = 0, device: Device): Metadata
    • fun autoRecordedWithId(id: String, device: Device): Metadata
  • manualEntry

    • fun manualEntry(device: Device? = null): Metadata
    • fun manualEntry(clientRecordId: String, clientRecordVersion: Long = 0, device: Device? = null): Metadata
    • fun manualEntryWithId(id: String, device: Device? = null): Metadata
  • unknownRecordingMethod

    • fun unknownRecordingMethod(device: Device? = null): Metadata
    • fun unknownRecordingMethod(clientRecordId: String, clientRecordVersion: Long = 0, device: Device? = null): Metadata
    • fun unknownRecordingMethodWithId(id: String, device: Device? = null): Metadata

ज़्यादा जानकारी के लिए, Android Open Source Project देखें.

टेस्टिंग डेटा

मेटाडेटा की अनुमानित वैल्यू को मॉक करने के लिए, Testing Library का इस्तेमाल करें:

private val TEST_METADATA =
    Metadata.unknownRecordingMethod(
        clientRecordId = "clientId",
        clientRecordVersion = 1L,
        device = Device(type = Device.TYPE_UNKNOWN),
    ).populatedWithTestValues(id = "test")

इससे Health Connect के इंटिग्रेशन के व्यवहार का पता चलता है. यह रिकॉर्ड डालने के दौरान, इन वैल्यू को अपने-आप भर देता है.

टेस्टिंग लाइब्रेरी के लिए, आपको अपने मॉड्यूल-लेवल की build.gradle फ़ाइल में, Health Connect SDK टूल की यह डिपेंडेंसी जोड़नी होगी:

dependencies {
  testImplementation "androidx.health.connect:connect-testing:1.0.0-alpha02"
}

लाइब्रेरी को अपग्रेड करना

आपको ये मुख्य चरण पूरे करने होंगे:

  1. अपनी लाइब्रेरी को 1.1.0-alpha12 पर अपग्रेड करें.

  2. लाइब्रेरी बनाते समय, जहां नए मेटाडेटा की ज़रूरत होती है वहां कंपाइलेशन से जुड़ी गड़बड़ियां दिखेंगी. इसलिए, जब भी Record() टाइप का ऑब्जेक्ट इंस्टैंटिएट किया जाता है, तब ज़रूरी मेटाडेटा में बदलाव करना न भूलें. इससे माइग्रेशन पूरा हो जाना चाहिए.

  3. अगर आपका ऐप्लिकेशन, डिवाइस के टाइप की ज़्यादा जानकारी लिखता है, तो उसे FEATURE_EXTENTED_DEVICE_TYPES के पीछे छिपाएं. इससे उन डिवाइसों पर अनचाहे TYPE_UNKNOWN से बचा जा सकेगा जिन पर यह सुविधा उपलब्ध नहीं है.