این راهنما با Health Connect نسخه 1.2.0-alpha05 یا بالاتر سازگار است.
برای توسعهدهندگانی که به نسخه 1.1.0-alpha12 یا جدیدتر ارتقا میدهند، تغییراتی در فراداده Health Connect ایجاد شده است.
اطلاعات کتابخانه
شناسه محصول افزایه Google Maven Android gradle
کتابخانه Health Connect را که باید به آن ارتقا دهید شناسایی میکند.
این وابستگی Health Connect SDK را به فایل build.gradle سطح واحدتان اضافه کنید:
dependencies {
implementation "androidx.health.connect:connect-client:1.1.0-alpha12"
}
تغییرات فراداده
دو تغییر فراداده در Health Connect Jetpack SDK
از نسخه 1.1.0-alpha12 معرفی شده است تا به تأیید وجود فراداده مفید تکمیلی
در بومسازگان کمک کند. اگر metadata در سازنده
Record شما گنجانده نشده باشد، ممکن است خطای داخلی سازنده را ببینید.
مشخص کردن روش ضبط
هرگاه شیء نوع 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 )
نوع دستگاه
باید نوع دستگاه را برای همه دادههای ضبطشده بهطور خودکار و فعال مشخص کنید. برای جزئیات بیشتر،
کلاس Device را در اسناد Jetpack ببینید. انواع دستگاههای فعلی
عبارتاند از:
| نوع دستگاه | شرح |
|---|---|
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)
برای Health Connect در Android 17 (سطح میانای برنامهسازی کاربردی ۳۷.۱) یا
افزونه U نسخه ۲۳ یا بالاتر، کلاس Device شامل پشتیبانی از «شناسه یکتای
دستگاه» (UDI) است. مرتبط کردن جزئیات مدل «شناسه یکتای دستگاه» ثبتشده برای دستگاه پزشکی با سوابق کتبی شما به برنامههای پاییندستی (مانند پلاتفرمهای دوربهداشتی یا درگاههای بالینی) امکان میدهد خوانشهای درجه بالینی را شناسایی کنند و آنها را از دادههای عمومی پوشیدنیهای مصرفکننده متمایز کنند.
اعلام کردن اجازه
برای نوشتن جزئیات «شناسه یکتای دستگاه» در Health Connect، باید
اجازه WRITE_DEVICE_UDI را در فایل AndroidManifest.xml برنامهتان اعلام کنید:
<uses-permission android:name="android.permission.health.WRITE_DEVICE_UDI" />
توجه داشته باشید که WRITE_DEVICE_UDI یک اجازه معمول است. باید آن را در مانیفست خود اعلام کنید، اما نیازی نیست آن را در زمان اجرا از کاربر درخواست کنید. این اجازه
بهطور خودکار در زمان نصب به برنامه شما اعطا میشود.
فقط بخش «شناسه دستگاه» (DI) را بنویسید
یک شناسه دستگاه منحصربهفرد کامل شامل دو بخش است:
- شناسه دستگاه (UDI-DI): شناسهای که در سطح جهانی شناخته میشود و توسط یک سازمان صادرکننده (برای مثال، GS1) به مدل دستگاه خاصی اختصاص داده میشود.
- شناسه تولید (UDI-PI): مشخصههای مختص واحد، مثل شماره سریال، شماره دسته، تاریخ تولید، یا تاریخ انقضا.
برای محافظت از حریم خصوصی کاربر، فقط بخش UDI-DI کد را در Health Connect وارد کنید. هیچگونه مشخصه شناسه تولید (مانند شماره سریال یا شماره دسته) را اضافه نکنید.
نمونه کد
توجه: میتوانید UDI را هنگام ساختن نمونه Device تنظیم کنید.
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 بنویسید، Health Connect در زمان نوشتن SecurityException را نشان میدهد.
استفاده از شناسه دستگاه منحصربهفرد برای تأیید مجوز دستگاه
Health Connect بهعنوان لایه انتقال عمل میکند و اصالت یا وضعیت ثبت UDI را اعتبارسنجی نمیکند.
برای خوانندگان داده، وجود «شناسه یکتای دستگاه» نشان میدهد که دادهها از یک دستگاه پزشکی ثبتشده منشأ میگیرند. برنامههای خواندن باید پایگاههای داده نظارتی مانند «پایگاه داده جهانی شناسایی منحصربهفرد دستگاه» (GUDID) متعلق به FDA یا EUDAMED متعلق به اتحادیه اروپا را جستجو کنند تا طبقهبندیهای دستگاه، وضعیت مجوز نظارتی (برای مثال، کلاس I، II، یا III)، یا کاربرد خاص موردنظر را تأیید کنند.
گزیدهها بهروز شد
راهنماهای 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، الزامی است.
- هنگام ساختن
اگر برنامهتان انواع دستگاههای گسترشیافته را مینویسد، آنها را پشت
FEATURE_EXTENTED_DEVICE_TYPESقرار دهید تا ازTYPE_UNKNOWNغیرمنتظره در دستگاههایی که این ویژگی دردسترس نیست جلوگیری شود.