এই নির্দেশিকা Health Connect-এর 1.2.0-alpha05 ভার্সন ও পরবর্তী ভার্সনের সাথে মানানসই।
যেসব ডেভেলপার রিলিজ 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 কনস্ট্রাক্টরে 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.activelyRecorded(device = Device(type = Device.TYPE_WATCH)), 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 )
অনন্য ডিভাইস শনাক্তকারী (UDI)
Android 17 (API লেভেল 37.1) বা
U এক্সটেনশন 23 বা এর পরবর্তী যেকোনও ভার্সনে Health Connect-এর জন্য, Device ক্লাসে অনন্য
ডিভাইস শনাক্তকারী (UDI)-এর জন্য সহায়তা অন্তর্ভুক্ত থাকে। আপনার লিখিত রেকর্ড
সহ কোনও মেডিকেল ডিভাইসের রেজিস্টার করা UDI মডেলের
বিস্তারিত তথ্য অ্যাসোসিয়েট করলে, ডাউনস্ট্রিম অ্যাপ্লিকেশন (যেমন
টেলিহেলথ প্ল্যাটফর্ম বা ক্লিনিক্যাল পোর্টাল) ক্লিনিক্যাল-গ্রেড রিডিং
শনাক্ত করতে এবং সেগুলিকে সাধারণ কনজিউমার-ওয়্যারেবল ডেটা থেকে আলাদা করতে পারে।
অনুমতি ঘোষণা করা
Health Connect-এ UDI বিবরণ লেখার জন্য, আপনার অ্যাপের AndroidManifest.xml ফাইলে আপনাকে অবশ্যই
WRITE_DEVICE_UDI অনুমতি ঘোষণা করতে হবে:
<uses-permission android:name="android.permission.health.WRITE_DEVICE_UDI" />
মনে রাখবেন, WRITE_DEVICE_UDI হল একটি সাধারণ অনুমতি। আপনাকে এটি
ম্যানিফেস্টে ঘোষণা করতে হবে, তবে রানটাইমে ব্যবহারকারীর থেকে এটি অনুরোধ করার প্রয়োজন নেই। ইনস্টল করার সময় এটি আপনার অ্যাপকে
অটোমেটিক দেওয়া হয়।
শুধুমাত্র ডিভাইস শনাক্তকারী (DI) অংশটি লিখুন
সম্পূর্ণ UDI-তে দুটি অংশ থাকে:
- ডিভাইস শনাক্তকারী (UDI-DI): ইস্যুকারী এজেন্সি (যেমন, GS1) দ্বারা কোনও নির্দিষ্ট ডিভাইস মডেলে অ্যাসাইন করা বিশ্বব্যাপী স্বীকৃত শনাক্তকারী।
- প্রোডাকশন আইডেন্টিফায়ার (UDI-PI): ইউনিট-নির্দিষ্ট অ্যাট্রিবিউট, যেমন ক্রমিক সংখ্যা, ব্যাচ নম্বর, তৈরির তারিখ বা মেয়াদ শেষ হওয়ার তারিখ।
ব্যবহারকারীর গোপনীয়তা সুরক্ষিত রাখতে, Health Connect-এ কোডের শুধুমাত্র UDI-DI অংশটি পূরণ করুন। কোনও প্রোডাকশন আইডেন্টিফায়ার অ্যাট্রিবিউট (যেমন সিরিয়াল নম্বর বা ব্যাচ নম্বর) যোগ করবেন না।
কোডের উদাহরণ
মনে রাখবেন: Device ইনস্ট্যান্স তৈরি করার সময় আপনি UDI সেট করতে পারবেন।
Jetpack SDK
val device = Device( type = Device.TYPE_CONSUMER_MEDICAL_DEVICE, manufacturer = "Omron", model = "HEM-7121", udi = "04015674011832" // Device Identifier (UDI-DI) portion only )
Platform API
val device = Device.Builder() .setType(Device.DEVICE_TYPE_CONSUMER_MEDICAL_DEVICE) .setManufacturer("Omron") .setModel("HEM-7121") .setUdi("04015674011832") // Device Identifier (UDI-DI) portion only .build()
আপনি যদি WRITE_DEVICE_UDI
অনুমতি ঘোষণা না করে UDI সহ ডেটা লেখেন, তাহলে Health Connect লেখার সময় একটি SecurityException দেখাবে।
ডিভাইস ক্লিয়ারেন্স যাচাই করতে UDI ব্যবহার করা
Health Connect একটি ট্রান্সপোর্ট লেয়ার হিসেবে কাজ করে এবং UDI-এর প্রামাণ্যতা বা রেজিস্ট্রেশন স্ট্যাটাস যাচাই করে না।
ডেটা রিডারদের জন্য, UDI-এর উপস্থিতি ইঙ্গিত করে যে ডেটা একটি রেজিস্টার করা মেডিকেল ডিভাইস থেকে আসে। ডিভাইস ক্লাসিফিকেশন, রেগুলেটরি ক্লিয়ারেন্স স্ট্যাটাস (যেমন, ক্লাস I, II বা III) বা নির্দিষ্ট উদ্দেশ্যমূলক ব্যবহার যাচাই করতে, রিডিং অ্যাপগুলিকে FDA-এর গ্লোবাল অনন্য ডিভাইস শনাক্তকরণ ডেটাবেস (GUDID) বা EU-এর EUDAMED-এর মতো রেগুলেটরি ডেটাবেস কোয়েরি করা উচিত।
স্নিপেট আপডেট করা হয়েছে
নতুন মেটাডেটা সংক্রান্ত প্রয়োজনীয়তা মেনে চলার জন্য যেখানেই নতুন স্নিপেট প্রয়োজন হয়েছে, Health Connect নির্দেশিকা আপডেট করা হয়েছে । কিছু উদাহরণের জন্য, ডেটা লেখা পৃষ্ঠা দেখুন।
মেটাডেটা সংক্রান্ত নতুন পদ্ধতি
মেটাডেটা আর সরাসরি ইনস্ট্যানশিয়েট করা যাবে না, তাই মেটাডেটার নতুন ইনস্ট্যান্স পেতে ফ্যাক্টরি পদ্ধতির মধ্যে একটি ব্যবহার করুন। ফ্যাক্টরি মেথড যাচাই করে দেখে যে ডিভাইস বা সেন্সর ব্যবহার করে ডেটা রেকর্ড করার সময় ডিভাইস সংক্রান্ত তথ্য প্রদান করা হয়েছে কিনা। ম্যানুয়ালি লেখা ডেটার ক্ষেত্রে, ডিভাইসের তথ্য প্রদান করা ঐচ্ছিক। প্রতিটি ফাংশনের তিনটি সিগনেচার ভেরিয়েন্ট আছে:
activelyRecordedfun activelyRecorded(device: Device): Metadata.fun activelyRecorded(clientRecordId: String, clientRecordVersion: Long = 0, device: Device): Metadatafun activelyRecordedWithId(id: String, device: Device): Metadata
autoRecordedfun autoRecorded(device: Device): Metadatafun autoRecorded(clientRecordId: String, clientRecordVersion: Long = 0, device: Device): Metadatafun autoRecordedWithId(id: String, device: Device): Metadata
manualEntryfun manualEntry(device: Device? = null): Metadatafun manualEntry(clientRecordId: String, clientRecordVersion: Long = 0, device: Device? = null): Metadatafun manualEntryWithId(id: String, device: Device? = null): Metadata
unknownRecordingMethodfun unknownRecordingMethod(device: Device? = null): Metadatafun unknownRecordingMethod(clientRecordId: String, clientRecordVersion: Long = 0, device: Device? = null): Metadatafun unknownRecordingMethodWithId(id: String, device: Device? = null): Metadata
আরও তথ্যের জন্য, Android ওপেন সোর্স প্রজেক্ট দেখুন।
টেস্টিং ডেটা
প্রত্যাশিত মেটাডেটা
ভ্যালু মক করতে Testing Library ও
MetadataTestHelper ব্যবহার করুন:
private val TEST_METADATA =
Metadata.unknownRecordingMethod(
clientRecordId = "clientId",
clientRecordVersion = 1L,
device = Device(type = Device.TYPE_UNKNOWN),
).populatedWithTestValues(id = "test")
এটি Health Connect ইমপ্লিমেন্টেশনের আচরণকে সিমুলেট করে, যা রেকর্ড ইনসার্শনের সময় অটোমেটিক এইসব ভ্যালু পপুলেট করে।
টেস্টিং লাইব্রেরির জন্য, আপনাকে এই Health Connect SDK ডিপেন্ডেন্সি
আপনার মডিউল-লেভেল build.gradle ফাইলে যোগ করতে হবে:
dependencies {
testImplementation "androidx.health.connect:connect-testing:1.0.0-alpha02"
}
লাইব্রেরি আপগ্রেড করা
আপনাকে যেসব প্রধান ধাপ অনুসরণ করতে হবে সেগুলি হল:
আপনার লাইব্রেরি 1.1.0-alpha12 ভার্সনে আপগ্রেড করুন।
লাইব্রেরি তৈরি করার সময়, যেখানে নতুন মেটাডেটা প্রয়োজন সেখানে কম্পাইলেশন সংক্রান্ত সমস্যা হবে। এইসব সমস্যার সমাধান করতে এবং মাইগ্রেশন সম্পূর্ণ করতে, নিচে উল্লেখ করা পরিবর্তনগুলি করেছেন কিনা তা যাচাই করুন:
- কোনও
Recordতৈরি করার সময় রেকর্ডিং পদ্ধতি উল্লেখ করা বাধ্যতামূলক। এটিMetadata-এ দেওয়া ফ্যাক্টরি পদ্ধতির মধ্যে একটি ব্যবহার করে করা হয়, যেমনMetadata.manualEntry()বাMetadata.activelyRecorded(device = Device(...))। - ডিভাইস দ্বারা রেকর্ড করা ডেটার জন্য,
Device.TYPE_WATCHবাDevice.TYPE_PHONE-এর মতো ডিভাইসের ধরন উল্লেখ করা বাধ্যতামূলক।
- কোনও
আপনার অ্যাপ যদি ডিভাইসের বর্ধিত ধরন লেখে, তাহলে ফিচার উপলভ্য নেই এমন ডিভাইসে অপ্রত্যাশিত
TYPE_UNKNOWNএড়াতেFEATURE_EXTENTED_DEVICE_TYPES-এর পিছনে সেগুলি গেট করুন।