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:
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.
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.manualEntry(),
Count = 10,
)
Jenis perangkat
Anda wajib menentukan jenis perangkat untuk semua data yang direkam secara otomatis dan aktif. Meskipun manufacturer dan model
juga dapat ditentukan, keduanya bersifat opsional. 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 skala. |
TYPE_RING |
Jenis perangkat 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 perangkat 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 akan diperlakukan sebagai Device.TYPE_UNKNOWN.
| Jenis perangkat yang diperluas | Deskripsi |
|---|---|
TYPE_CONSUMER_MEDICAL_DEVICE |
Jenis perangkat adalah perangkat medis. |
TYPE_GLASSES |
Jenis perangkat adalah kacamata smart 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. |
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
}
Jika memungkinkan, berikan produsen dan model perangkat selain jenis perangkat. Contoh:
private val TEST_DEVICE = Device(
manufacturer = "Google",
model = "Pixel Watch",
type = Device.TYPE_WATCH
)
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 dibuat instance secara langsung, jadi gunakan salah satu metode factory untuk mendapatkan instance metadata baru. Metode pabrik 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:
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.
Menguji data
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")
Hal ini menyimulasikan perilaku penerapan Health Connect, yang otomatis mengisi nilai ini selama penyisipan 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:
Upgrade library Anda ke 1.1.0-alpha12.
Saat membangun library, error kompilasi akan muncul 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 memiliki fitur tersebut.