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

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

Health Connect के 1.1.0-alpha12 या इसके बाद के वर्शन पर अपग्रेड करने वाले डेवलपर के लिए, मेटाडेटा में बदलाव किए गए हैं.

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

Google Maven Android Gradle प्लगिन आर्टफ़ैक्ट आईडी 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 कंस्ट्रक्टर में metadata शामिल नहीं है, तो आपको Constructor internal गड़बड़ी दिख सकती है.

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

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

Health Connect में डेटा सेव करते समय, आपको रिकॉर्डिंग के चार तरीकों में से कोई एक तरीका बताना होगा. इसके लिए, फ़ैक्ट्री के किसी एक तरीके का इस्तेमाल करें, ताकि Metadata को इंस्टैंशिएट किया जा सके:

रिकॉर्डिंग का तरीका ब्यौरा
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(),
    count = 10
)

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

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

डिवाइस का टाइप ब्यौरा
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
}
ज़्यादा जानने के लिए, सुविधा की उपलब्धता की जांच करना लेख पढ़ें.

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

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

// Phone
 val PHONE_DEVICE = Device(
    manufacturer = "Google",
    model = "Pixel 8",
    type = Device.TYPE_PHONE
)

// Ring
 val RING_DEVICE = Device(
    manufacturer = "Oura",
    model = "Ring Gen3",
    type = Device.TYPE_RING
)

// Scale
 val SCALE_DEVICE = Device(
    manufacturer = "Withings",
    model = "Body Comp",
    type = Device.TYPE_SCALE
)

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

मेटाडेटा की नई ज़रूरी शर्तों के मुताबिक, 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 देखें.

डेटा की जांच करना

मेटाडेटा की उम्मीद के मुताबिक वैल्यू को मॉक करने के लिए, टेस्टिंग लाइब्रेरी और MetadataTestHelper का इस्तेमाल करें:

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 बनाते समय, रिकॉर्डिंग का तरीका बताना ज़रूरी है. इसके लिए, फ़ैक्ट्री के किसी एक तरीके का इस्तेमाल करें जो Metadata में दिया गया है. जैसे, Metadata.manualEntry() या Metadata.activelyRecorded(device = Device(...)).
    • किसी डिवाइस से रिकॉर्ड किए गए डेटा के लिए, डिवाइस का टाइप बताना ज़रूरी है. जैसे, Device.TYPE_WATCH या Device.TYPE_PHONE.
  3. अगर आपका ऐप्लिकेशन, डिवाइस के ज़्यादा टाइप सेव करता है, तो उन्हें FEATURE_EXTENTED_DEVICE_TYPES के पीछे गेट करें. इससे उन डिवाइसों पर TYPE_UNKNOWN की गड़बड़ी नहीं दिखेगी जिन पर यह सुविधा उपलब्ध नहीं है.