برای توسعهدهندگانی که به نسخه ۱.۱.۰-alpha۱۲ یا بالاتر ارتقا مییابند، تغییراتی در فرادادههای Health Connect ایجاد شده است.
اطلاعات کتابخانه
شناسهی آرتیفکت افزونهی گرادل اندروید گوگل ماون، کتابخانهی Health Connect را که باید به آن ارتقا دهید، مشخص میکند. این وابستگی SDK مربوط به Health Connect را به فایل build.gradle
در سطح ماژول خود اضافه کنید:
dependencies {
implementation "androidx.health.connect:connect-client:1.1.0-alpha12"
}
تغییرات فراداده
دو تغییر در متادیتا از نسخه ۱.۱.۰-آلفا۱۲ به کیت توسعه نرمافزاری جتپک Health Connect اضافه شده است تا به تأیید وجود متادیتای مفید اضافی در اکوسیستم کمک کند.
روش ضبط را مشخص کنید
هر زمان که یک شیء از نوع 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_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 در مواردی که برای رعایت الزامات جدید فراداده، به قطعه کدهای جدیدی نیاز بوده، بهروزرسانی شدهاند. برای مشاهدهی برخی از نمونهها، به صفحهی «نوشتن دادهها» مراجعه کنید.
روشهای جدید فراداده
دیگر نمیتوان متادیتا را مستقیماً نمونهسازی کرد، بنابراین از یکی از متدهای factory برای دریافت یک نمونه جدید از متادیتا استفاده کنید. متدهای factory تأیید میکنند که اطلاعات دستگاه هنگام استفاده از دستگاه یا حسگر برای ثبت دادهها ارائه شده است. برای دادههای وارد شده دستی، ارائه اطلاعات دستگاه اختیاری است. هر تابع دارای سه نوع امضا است:
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")
این، رفتار پیادهسازی Health Connect را شبیهسازی میکند که بهطور خودکار این مقادیر را هنگام درج رکورد، پر میکند.
برای کتابخانه تست، باید این وابستگی Health Connect SDK را به فایل build.gradle
در سطح ماژول خود اضافه کنید:
dependencies {
testImplementation "androidx.health.connect:connect-testing:1.0.0-alpha02"
}
کتابخانه را ارتقا دهید
مراحل اصلی که باید انجام دهید عبارتند از:
کتابخانه خود را به ۱.۱.۰-alpha12 ارتقا دهید.
هنگام ساخت کتابخانه، خطاهای کامپایل در جایی که به متادیتای جدید نیاز است، رخ میدهند. برای رفع این خطاها و تکمیل مهاجرت، مطمئن شوید که تغییرات زیر را اعمال میکنید:
- هنگام ساخت یک
Record
، تعیین یک روش ضبط الزامی است. این کار با استفاده از یکی از متدهای کارخانهای ارائه شده درMetadata
، مانندMetadata.manualEntry()
یاMetadata.activelyRecorded(device = Device(...))
انجام میشود. - برای دادههای ثبتشده توسط یک دستگاه، مشخص کردن نوع دستگاه، مانند
Device.TYPE_WATCH
یاDevice.TYPE_PHONE
الزامی است.
- هنگام ساخت یک
اگر برنامه شما انواع دستگاههای توسعهیافته را مینویسد، آنها را پشت
FEATURE_EXTENTED_DEVICE_TYPES
قرار دهید تا ازTYPE_UNKNOWN
غیرمنتظره در دستگاههایی که این ویژگی در دسترس نیست، جلوگیری شود.