این راهنما با Health Connect نسخه 1.1.0-alpha12 و جدیدتر سازگار است.
برای توسعه دهندگانی که نسخه 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"
}
متادیتا تغییر می کند
دو تغییر ابرداده در نسخه 1.1.0-alpha12 به Health Connect Jetpack SDK معرفی شده است تا به تأیید وجود فراداده مفید اضافی در اکوسیستم کمک کند.
روش ضبط را مشخص کنید
هر زمان که یک شی از نوع 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
در مستندات 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_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
)
قطعه ها به روز شدند
راهنماهای Health Connect در هر جا که برای پایبندی به الزامات فراداده جدید به قطعههای جدید نیاز باشد، بهروزرسانی شدهاند. برای چند نمونه به صفحه 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
-
برای اطلاعات بیشتر، به پروژه متن باز 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
غیرمنتظره در دستگاه هایی که این ویژگی در دسترس نیست جلوگیری کنید.