Persyaratan metadata

Panduan ini kompatibel dengan Health Connect versi 1.2.0-alpha05 atau yang lebih baru.

Ada perubahan pada metadata di Health Connect untuk developer yang mengupgrade ke rilis 1.1.0-alpha12 atau yang lebih baru.

Informasi perpustakaan

ID artefak plugin Android Gradle Google Maven mengidentifikasi library Health Connect yang perlu Anda upgrade. Tambahkan dependensi Health Connect SDK ini ke file build.gradle level modul:

dependencies {
  implementation "androidx.health.connect:connect-client:1.1.0-alpha12"
}

Perubahan metadata

Dua perubahan metadata telah diperkenalkan ke Health Connect Jetpack SDK mulai versi 1.1.0-alpha12 untuk membantu memverifikasi bahwa metadata tambahan yang berguna ada di ekosistem. Jika metadata tidak disertakan dalam konstruktor Record, Anda mungkin akan melihat error Constructor internal.

Menentukan metode perekaman

Anda harus menentukan detail metadata setiap kali objek jenis Record() dibuat instance-nya.

Saat menulis data ke Health Connect, Anda harus menentukan salah satu dari empat metode perekaman dengan menggunakan salah satu metode factory yang sesuai untuk membuat instance Metadata:

Metode perekaman Deskripsi
RECORDING_METHOD_UNKNOWN Metode perekaman tidak dapat diverifikasi.
RECORDING_METHOD_MANUAL_ENTRY Pengguna memasukkan data.
RECORDING_METHOD_AUTOMATICALLY_RECORDED Perangkat atau sensor mencatat data.
RECORDING_METHOD_ACTIVELY_RECORDED Pengguna memulai atau mengakhiri sesi perekaman di perangkat.

Contoh:

 StepsRecord(
    startTime = Instant.ofEpochMilli(1234L),
    startZoneOffset = null,
    endTime = Instant.ofEpochMilli(1236L),
    endZoneOffset = null,
    metadata = Metadata.activelyRecorded(device = Device(type = Device.TYPE_WATCH)),
    count = 10
)

Jenis perangkat

Anda harus menentukan jenis perangkat untuk semua data yang direkam secara otomatis dan aktif. Untuk mengetahui detail selengkapnya, lihat class Device dalam dokumentasi Jetpack. Jenis perangkat saat ini mencakup:

Jenis perangkat Deskripsi
TYPE_UNKNOWN Jenis perangkat tidak diketahui.
TYPE_WATCH Jenis perangkatnya adalah smartwatch.
TYPE_PHONE Jenis perangkat adalah ponsel.
TYPE_SCALE Jenis perangkatnya adalah timbangan.
TYPE_RING Jenis perangkatnya adalah cincin.
TYPE_HEAD_MOUNTED Jenis perangkat adalah perangkat yang dipasang di kepala.
TYPE_FITNESS_BAND Jenis perangkatnya adalah gelang kebugaran.
TYPE_CHEST_STRAP Jenis perangkatnya adalah tali dada.
TYPE_SMART_DISPLAY Jenis perangkatnya adalah layar smart.

Beberapa nilai Device.type hanya tersedia di Health Connect versi yang lebih baru. Jika fitur jenis perangkat yang diperluas tidak tersedia, jenis ini akan diperlakukan sebagai Device.TYPE_UNKNOWN.

Jenis perangkat yang diperluas Deskripsi
TYPE_CONSUMER_MEDICAL_DEVICE Jenis perangkat adalah perangkat medis.
TYPE_GLASSES Jenis perangkatnya adalah kacamata pintar atau kacamata.
TYPE_HEARABLE Jenis perangkat adalah perangkat audio.
TYPE_FITNESS_MACHINE Jenis perangkat adalah mesin stasioner.
TYPE_FITNESS_EQUIPMENT Jenis perangkatnya adalah alat kebugaran.
TYPE_PORTABLE_COMPUTER Jenis perangkatnya adalah komputer portabel.
TYPE_METER Jenis perangkat adalah meteran pengukuran.
Untuk menentukan apakah perangkat pengguna mendukung Jenis Perangkat yang Diperluas di Health Connect, periksa ketersediaan FEATURE_EXTENDED_DEVICE_TYPES di klien:

if (healthConnectClient
     .features
     .getFeatureStatus(
       HealthConnectFeatures.FEATURE_EXTENDED_DEVICE_TYPES
     ) == HealthConnectFeatures.FEATURE_STATUS_AVAILABLE) {

  // Feature is available
} else {
  // Feature isn't available
}
Lihat Memeriksa ketersediaan fitur untuk mempelajari lebih lanjut.

Contoh:

 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
)

ID Perangkat Unik (UDI)

Untuk Health Connect di Android 17 (level API 37.1) atau U extension 23 atau yang lebih baru, class Device menyertakan dukungan untuk ID Perangkat Unik (UDI). Mengaitkan detail model UDI terdaftar perangkat medis dengan catatan tertulis Anda memungkinkan aplikasi downstream (seperti platform telehealth atau portal klinis) mengidentifikasi pembacaan tingkat klinis dan membedakannya dari data perangkat wearable konsumen umum.

Mendeklarasikan izin

Untuk menulis detail UDI ke Health Connect, Anda harus mendeklarasikan izin WRITE_DEVICE_UDI dalam file AndroidManifest.xml aplikasi Anda:

<uses-permission android:name="android.permission.health.WRITE_DEVICE_UDI" />

Perhatikan bahwa WRITE_DEVICE_UDI adalah izin normal. Anda harus mendeklarasikannya dalam manifes, tetapi Anda tidak perlu memintanya dari pengguna saat runtime. Izin ini otomatis diberikan ke aplikasi Anda pada waktu penginstalan.

Tulis hanya bagian ID Perangkat (DI)

UDI lengkap terdiri dari dua bagian:

  • ID Perangkat (UDI-DI): ID yang diakui secara global yang ditetapkan ke model perangkat tertentu oleh lembaga penerbit (misalnya, GS1).
  • ID Produksi (UDI-PI): Atribut khusus unit, seperti nomor seri, nomor batch, tanggal pembuatan, atau tanggal habis masa berlaku.

Untuk melindungi privasi pengguna, hanya isi bagian UDI-DI kode di Health Connect. Jangan sertakan atribut ID produksi (seperti nomor seri atau nomor batch).

Contoh kode

Catatan: Anda dapat menetapkan UDI saat membuat instance 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()

Jika Anda menulis data dengan UDI tanpa mendeklarasikan izin WRITE_DEVICE_UDI, Health Connect akan menampilkan SecurityException pada waktu penulisan.

Menggunakan UDI untuk memverifikasi izin perangkat

Health Connect berfungsi sebagai lapisan transpor dan tidak memvalidasi keaslian atau status pendaftaran UDI.

Bagi pembaca data, keberadaan UDI menunjukkan bahwa data berasal dari perangkat medis terdaftar. Aplikasi pembaca harus mengkueri database peraturan seperti Global Unique Device Identification Database (GUDID) FDA atau EUDAMED Uni Eropa untuk memverifikasi klasifikasi perangkat, status izin peraturan (misalnya, Kelas I, II, atau III), atau penggunaan khusus yang dimaksudkan.

Cuplikan diperbarui

Panduan Health Connect telah diperbarui di bagian yang memerlukan cuplikan baru untuk mematuhi persyaratan metadata baru. Untuk beberapa contoh, lihat halaman Menulis Data.

Metode metadata baru

Metadata tidak dapat lagi dibuat instance-nya secara langsung, jadi gunakan salah satu metode factory untuk mendapatkan instance metadata baru. Metode factory memverifikasi bahwa informasi perangkat diberikan saat perangkat atau sensor digunakan untuk merekam data. Untuk data yang dimasukkan secara manual, pemberian informasi perangkat tetap bersifat opsional. Setiap fungsi memiliki tiga varian tanda tangan:

  • 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

Untuk mengetahui informasi selengkapnya, lihat Project Open Source Android.

Data pengujian

Gunakan Testing Library dan MetadataTestHelper untuk membuat tiruan nilai metadata yang diharapkan:

private val TEST_METADATA =
    Metadata.unknownRecordingMethod(
        clientRecordId = "clientId",
        clientRecordVersion = 1L,
        device = Device(type = Device.TYPE_UNKNOWN),
    ).populatedWithTestValues(id = "test")

Tindakan ini menyimulasikan perilaku implementasi Health Connect, yang otomatis mengisi nilai ini selama penyisipan kumpulan data.

Untuk library pengujian, Anda perlu menambahkan dependensi Health Connect SDK ini ke file build.gradle level modul:

dependencies {
  testImplementation "androidx.health.connect:connect-testing:1.0.0-alpha02"
}

Mengupgrade library

Langkah-langkah utama yang perlu Anda lakukan adalah:

  1. Upgrade library Anda ke 1.1.0-alpha12.

  2. Saat mem-build library, error kompilasi akan ditampilkan jika metadata baru diperlukan. Untuk mengatasi error ini dan menyelesaikan migrasi, pastikan Anda melakukan perubahan berikut:

    • Anda wajib menentukan metode perekaman saat membuat Record. Hal ini dilakukan dengan menggunakan salah satu metode factory yang disediakan di Metadata, seperti Metadata.manualEntry() atau Metadata.activelyRecorded(device = Device(...)).
    • Untuk data yang direkam oleh perangkat, Anda wajib menentukan jenis perangkat, seperti Device.TYPE_WATCH atau Device.TYPE_PHONE.
  3. Jika aplikasi Anda menulis jenis perangkat yang diperluas, batasi dengan FEATURE_EXTENTED_DEVICE_TYPES untuk menghindari TYPE_UNKNOWN yang tidak terduga di perangkat yang tidak menyediakan fitur tersebut.