মেটাডেটা প্রয়োজনীয়তা

এই নির্দেশিকাটি হেলথ কানেক্ট সংস্করণ 1.1.0-alpha12 এবং পরবর্তী সংস্করণগুলোর সাথে সামঞ্জস্যপূর্ণ।

যেসব ডেভেলপার রিলিজ 1.1.0-alpha12 বা তার পরবর্তী সংস্করণে আপগ্রেড করবেন, তাদের জন্য Health Connect-এর মেটাডেটাতে পরিবর্তন আনা হয়েছে।

গ্রন্থাগারের তথ্য

গুগল মেভেন অ্যান্ড্রয়েড গ্রেডল প্লাগইন আর্টিফ্যাক্ট আইডিটি সেই হেলথ কানেক্ট লাইব্রেরিটিকে শনাক্ত করে, যেটিতে আপনাকে আপগ্রেড করতে হবে। আপনার মডিউল-স্তরের build.gradle ফাইলে এই হেলথ কানেক্ট SDK ডিপেন্ডেন্সিটি যোগ করুন:

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

মেটাডেটা পরিবর্তন

হেলথ কানেক্ট জেটপ্যাক এসডিকে- এর 1.1.0-alpha12 সংস্করণ থেকে দুটি মেটাডেটা পরিবর্তন আনা হয়েছে, যা ইকোসিস্টেমে অতিরিক্ত দরকারি মেটাডেটা আছে কিনা তা যাচাই করতে সাহায্য করবে। যদি আপনার Record কনস্ট্রাক্টরে metadata অন্তর্ভুক্ত না থাকে, তাহলে আপনি একটি কনস্ট্রাক্টর ইন্টারনাল এরর দেখতে পারেন।

রেকর্ডিং পদ্ধতি নির্দিষ্ট করুন

যখনই একটি 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 ডিভাইসটির ধরন হলো একটি পরিমাপক মিটার।
কোনো ব্যবহারকারীর ডিভাইস হেলথ কানেক্ট-এ এক্সটেন্ডেড ডিভাইস টাইপস সমর্থন করে কিনা তা নির্ধারণ করতে, ক্লায়েন্টে 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
)

স্নিপেট আপডেট করা হয়েছে

নতুন মেটাডেটা প্রয়োজনীয়তা মেনে চলার জন্য যেখানেই নতুন স্নিপেটের প্রয়োজন হয়েছে, হেলথ কানেক্ট গাইডগুলো আপডেট করা হয়েছে। কিছু উদাহরণের জন্য, রাইট ডেটা পৃষ্ঠাটি দেখুন।

নতুন মেটাডেটা পদ্ধতি

মেটাডেটা এখন আর সরাসরি ইনস্ট্যানশিয়েট করা যায় না, তাই মেটাডেটার একটি নতুন ইনস্ট্যান্স পেতে ফ্যাক্টরি মেথডগুলোর মধ্যে একটি ব্যবহার করুন। যখন ডেটা রেকর্ড করার জন্য কোনো ডিভাইস বা সেন্সর ব্যবহার করা হয়, তখন ডিভাইসের তথ্য সরবরাহ করা হয়েছে কি না, তা ফ্যাক্টরি মেথডগুলো যাচাই করে। ম্যানুয়ালি প্রবেশ করানো ডেটার ক্ষেত্রে, ডিভাইসের তথ্য সরবরাহ করা ঐচ্ছিকই থাকে। প্রতিটি ফাংশনের তিনটি সিগনেচার ভ্যারিয়েন্ট রয়েছে:

  • 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

আরও তথ্যের জন্য অ্যান্ড্রয়েড ওপেন সোর্স প্রজেক্ট দেখুন।

পরীক্ষার ডেটা

প্রত্যাশিত মেটাডেটা মানগুলো মক করতে টেস্টিং লাইব্রেরি এবং MetadataTestHelper ব্যবহার করুন:

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

এটি হেলথ কানেক্ট বাস্তবায়নের আচরণকে অনুকরণ করে, যা রেকর্ড সন্নিবেশ করার সময় স্বয়ংক্রিয়ভাবে এই মানগুলি পূরণ করে।

টেস্টিং লাইব্রেরির জন্য, আপনাকে আপনার মডিউল-স্তরের 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 এড়ানো যায়।