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

১.১.০-আলফা১২ বা তার পরবর্তী সংস্করণে আপগ্রেড করা ডেভেলপারদের জন্য হেলথ কানেক্টের মেটাডেটাতে কিছু পরিবর্তন রয়েছে।

লাইব্রেরির তথ্য

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

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

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

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

রেকর্ডিং পদ্ধতি উল্লেখ করুন

যখনই কোনও 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.manualEntry(),
    Count = 10,
)

ডিভাইসের ধরণ

স্বয়ংক্রিয় এবং সক্রিয়ভাবে রেকর্ড করা সমস্ত ডেটার জন্য আপনাকে একটি ডিভাইসের ধরণ নির্দিষ্ট করতে হবে। যদিও manufacturer এবং model নির্দিষ্ট করা যেতে পারে, তবে সেগুলি ঐচ্ছিক। আরও বিস্তারিত জানার জন্য, জেটপ্যাক ডকুমেন্টেশনে 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
}
আরও জানতে বৈশিষ্ট্যের উপলব্ধতা পরীক্ষা করুন দেখুন।

সম্ভব হলে, ডিভাইসের ধরণ ছাড়াও ডিভাইসের প্রস্তুতকারক এবং মডেলের নামও উল্লেখ করুন। উদাহরণস্বরূপ:

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

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

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

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

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

  • 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. যদি আপনার অ্যাপটি এক্সটেন্ডেড ডিভাইস টাইপ লেখে, তাহলে যেসব ডিভাইসে এই বৈশিষ্ট্যটি উপলব্ধ নেই সেখানে অপ্রত্যাশিত TYPE_UNKNOWN এড়াতে FEATURE_EXTENTED_DEVICE_TYPES পিছনে সেগুলিকে গেট করুন।