این راهنما با Health Connect نسخه 1.2.0-alpha05 و نسخههای جدیدتر سازگار است.
برای توسعهدهندگانی که به نسخه 1.1.0-alpha12 یا نسخههای جدیدتر ارتقا میدهند، تغییراتی در فراداده Health Connect وجود دارد.
اطلاعات کتابخانه
شناسه آرتیفکت افزایه Google Maven Android gradle
کتابخانه Health Connect را که باید به آن ارتقا دهید شناسایی میکند.
این وابستگی «کیت توسعه نرمافزار Health Connect» را به فایل
build.gradle سطح واحد خود اضافه کنید:
dependencies {
implementation "androidx.health.connect:connect-client:1.1.0-alpha12"
}
تغییرات فراداده
از نسخه 1.1.0-alpha12، دو تغییر فراداده به کیت توسعه نرمافزار Health Connect Jetpack
معرفی شده است تا به تأیید وجود فراداده مفید اضافی در
اکوسیستم کمک کند. اگر 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 extension 23 یا نسخههای جدیدتر، کلاس Device شامل پشتیبانی از «شناسه دستگاه یکتا» (UDI) میشود. مرتبط کردن جزئیات مدل UDI ثبتشده دستگاه پزشکی با سوابق نوشتاری شما به برنامههای پاییندستی (مثل پلاتفرمهای سلامت از دور یا درگاههای بالینی) امکان میدهد قرائتهای درجه بالینی را شناسایی کنند و آنها را از دادههای عمومی مصرفکننده-پوشیدنی متمایز کنند.
اعلام اجازه
برای نوشتن جزئیات 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 تکمیل کنید. هیچیک از مشخصههای شناسه تولید (مثل شماره سریال یا شماره دستهای) را اضافه نکنید.
نمونه کد
توجه: هنگام ساختن نمونه Device میتوانید UDI را تنظیم کنید.
کیت توسعه نرمافزار Jetpack
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()
اگر دادههایی را با UDI بدون اعلام اجازه WRITE_DEVICE_UDI
بنویسید، Health Connect در زمان نوشتن SecurityException را پرتاب میکند.
از UDI برای تأیید مجوز دستگاه استفاده کنید
Health Connect بهعنوان لایه انتقال عمل میکند و اصالت یا وضعیت ثبت UDI را تأیید نمیکند.
برای خوانندگان داده، وجود «شناسه یکتا» نشان میدهد که دادهها از یک دستگاه پزشکی ثبتشده منشأ میگیرد. برنامههای خواندن باید پایگاههای داده نظارتی مثل «پایگاه داده جهانی شناسایی دستگاه یکتا» (GUDID) متعلق به «سازمان غذا و دارو» یا 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 را ببینید.
درحال آزمایش دادهها
از کتابخانه آزمایش و
MetadataTestHelper برای شبیهسازی مقادیر فراداده موردانتظار استفاده کنید:
private val TEST_METADATA =
Metadata.unknownRecordingMethod(
clientRecordId = "clientId",
clientRecordVersion = 1L,
device = Device(type = Device.TYPE_UNKNOWN),
).populatedWithTestValues(id = "test")
این کار عملکرد پیادهسازی Health Connect را شبیهسازی میکند، که این مقادیر را درطول درج کردن سوابق بهطور خودکار پر میکند.
برای کتابخانه آزمایش، باید این وابستگی «کیت توسعه نرمافزار Health Connect» را به فایل 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غیرمنتظره در دستگاههایی که ویژگی در آنها دردسترس نیست جلوگیری کنید.