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. |
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
}
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:
activelyRecordedfun activelyRecorded(device: Device): Metadata.fun activelyRecorded(clientRecordId: String, clientRecordVersion: Long = 0, device: Device): Metadatafun activelyRecordedWithId(id: String, device: Device): Metadata
autoRecordedfun autoRecorded(device: Device): Metadatafun autoRecorded(clientRecordId: String, clientRecordVersion: Long = 0, device: Device): Metadatafun autoRecordedWithId(id: String, device: Device): Metadata
manualEntryfun manualEntry(device: Device? = null): Metadatafun manualEntry(clientRecordId: String, clientRecordVersion: Long = 0, device: Device? = null): Metadatafun manualEntryWithId(id: String, device: Device? = null): Metadata
unknownRecordingMethodfun unknownRecordingMethod(device: Device? = null): Metadatafun unknownRecordingMethod(clientRecordId: String, clientRecordVersion: Long = 0, device: Device? = null): Metadatafun 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:
Upgrade library Anda ke 1.1.0-alpha12.
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 diMetadata, sepertiMetadata.manualEntry()atauMetadata.activelyRecorded(device = Device(...)). - Untuk data yang direkam oleh perangkat, Anda wajib menentukan jenis perangkat,
seperti
Device.TYPE_WATCHatauDevice.TYPE_PHONE.
- Anda wajib menentukan metode perekaman saat membuat
Jika aplikasi Anda menulis jenis perangkat yang diperluas, batasi dengan
FEATURE_EXTENTED_DEVICE_TYPESuntuk menghindariTYPE_UNKNOWNyang tidak terduga di perangkat yang tidak menyediakan fitur tersebut.