الزامات فراداده

این راهنما با 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 نوع دستگاه اندازه گیری است.
برای تعیین اینکه آیا دستگاه کاربر از «انواع دستگاه توسعه‌یافته» در Health Connect پشتیبانی می‌کند یا خیر، در دسترس بودن 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.1.0-alpha12 ارتقا دهید.

  2. هنگام ساخت کتابخانه، خطاهای کامپایل در جایی که به ابرداده جدید نیاز است پرتاب می شود. برای رفع این خطاها و انتقال کامل، بررسی کنید که تغییرات زیر را انجام داده اید:

    • تعیین یک روش ضبط هنگام ساخت Record الزامی است. این کار با استفاده از یکی از متدهای کارخانه ای ارائه شده در Metadata ، مانند Metadata.manualEntry() یا Metadata.activelyRecorded(device = Device(...)) انجام می شود.
    • برای داده های ضبط شده توسط دستگاه، تعیین نوع دستگاه مانند Device.TYPE_WATCH یا Device.TYPE_PHONE الزامی است.
  3. اگر برنامه شما انواع دستگاه های توسعه یافته را می نویسد، آنها را پشت سر FEATURE_EXTENTED_DEVICE_TYPES قرار دهید تا از TYPE_UNKNOWN غیرمنتظره در دستگاه هایی که این ویژگی در دسترس نیست جلوگیری کنید.