Persyaratan metadata

Panduan ini kompatibel dengan Health Connect versi 1.2.0-alpha05 dan 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 Gradle Android Google Maven mengidentifikasi library Health Connect yang perlu Anda upgrade. Tambahkan dependensi Health Connect SDK ini ke file build.gradle level modul Anda:

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

Perubahan metadata

Dua perubahan metadata telah diperkenalkan ke Health Connect Jetpack SDK mulai dari 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 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 pabrik 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 merekam 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 di dokumentasi Jetpack. Jenis perangkat saat ini meliputi:

Jenis perangkat Deskripsi
TYPE_UNKNOWN Jenis perangkat tidak diketahui.
TYPE_WATCH Jenis perangkat adalah smartwatch.
TYPE_PHONE Jenis perangkat adalah ponsel.
TYPE_SCALE Jenis perangkat adalah timbangan.
TYPE_RING Jenis perangkat adalah cincin.
TYPE_HEAD_MOUNTED Jenis perangkat adalah perangkat yang dipasang di kepala.
TYPE_FITNESS_BAND Jenis perangkat adalah gelang kebugaran.
TYPE_CHEST_STRAP Jenis perangkatnya adalah tali dada.
TYPE_SMART_DISPLAY Jenis perangkat 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 diperlakukan sebagai Device.TYPE_UNKNOWN.

Jenis perangkat yang diperluas Deskripsi
TYPE_CONSUMER_MEDICAL_DEVICE Jenis perangkat adalah perangkat medis.
TYPE_GLASSES Jenis perangkat adalah sepasang kacamata pintar atau perangkat kacamata.
TYPE_HEARABLE Jenis perangkat adalah perangkat dengar.
TYPE_FITNESS_MACHINE Jenis perangkat adalah mesin stasioner.
TYPE_FITNESS_EQUIPMENT Jenis perangkat adalah peralatan kebugaran.
TYPE_PORTABLE_COMPUTER Jenis perangkat adalah komputer portabel.
TYPE_METER Jenis perangkat adalah alat pengukur.
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
)

Kode Identifikasi Perangkat Unik (UDI)

Untuk Health Connect di Android 17 (level API 37.1) atau ekstensi U 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 hilir (seperti platform telemedis atau portal klinis) mengidentifikasi pembacaan tingkat klinis dan membedakannya dari data umum perangkat wearable konsumen.

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 di manifes, tetapi Anda tidak perlu memintanya dari pengguna saat runtime. Izin ini diberikan secara otomatis ke aplikasi Anda pada waktu penginstalan.

Tulis hanya bagian ID Perangkat (DI)

UDI lengkap berisi 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 apa pun (seperti nomor seri atau nomor batch).

Contoh kode

Catatan: Anda dapat menyetel 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 transportasi dan tidak memvalidasi keaslian atau status pendaftaran UDI.

Untuk pembaca data, keberadaan UDI menunjukkan bahwa data berasal dari perangkat medis terdaftar. Aplikasi baca 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 mana pun cuplikan baru diperlukan untuk mematuhi persyaratan metadata baru. Untuk beberapa contoh, lihat halaman Menulis Data.

Metode metadata baru

Metadata tidak dapat lagi di-instantiate 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, memberikan 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.

Menguji data

Gunakan Testing Library dan MetadataTestHelper untuk meniru nilai metadata yang diharapkan:

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

Hal ini menyimulasikan perilaku penerapan 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 utama yang perlu Anda lakukan adalah:

  1. Upgrade library Anda ke 1.1.0-alpha12.

  2. Saat membangun 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, jenis perangkat harus ditentukan, 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 memiliki fitur tersebut.