Android 13 menyertakan android.hardware.health
AIDL HAL,
konversi dari health@2.1 HAL. HAL baru ini memiliki keunggulan sebagai berikut:
- Menghapus API terkait pengisi daya yang tidak digunakan
- Menghapus
StorageAttribute
yang tidak digunakan dan kolom terkait - Mendukung pengisian daya melalui dok.
Android 11 menyertakan HAL 2.1,
upgrade versi kecil dari health@2.0 HAL.android.hardware.health
HAL baru ini memiliki keunggulan sebagai berikut:
- Pemisahan yang lebih bersih antara kode framework dan vendor.
- Derajat kebebasan yang lebih besar untuk penyesuaian vendor dalam laporan informasi kesehatan.
- Informasi kesehatan perangkat yang lebih banyak daripada sekadar baterai.
Dokumentasi untuk mengimplementasikan HAL Health 2.1 ada di halaman ini sebagai referensi.
Persyaratan
Bagian ini berisi persyaratan untuk Android 11, 12, dan 13 atau yang lebih tinggi.
Perangkat yang menjalankan Android 11 dan Android 12
Perangkat yang diluncurkan dengan Android 11 dan 12 harus menyediakan HAL 2.1 atau HAL AIDL. Perangkat yang tidak diluncurkan dengan Android 11 atau 12, tetapi berencana mengupdate image vendor ke Matriks Kompatibilitas Framework Target Versi 5 (dirilis di Android 11) atau 6 (dirilis di Android 12) harus menghapus implementasi HAL 2.0 yang ada dan menyediakan HAL 2.1 atau HAL AIDL. Perangkat yang tidak diluncurkan dengan Android 11 dan tidak berencana mengupdate image vendor juga direkomendasikan untuk menyediakan HAL 2.1 atau AIDL.
AOSP menyertakan beberapa library helper yang dirancang untuk membantu Anda mengimplementasikan HAL 2.1 dan bertransisi dari HAL HIDL lama.
Perangkat yang menjalankan Android 13 dan yang lebih baru
Perangkat yang diluncurkan dengan Android 13 harus menyediakan HAL AIDL (dan tidak boleh menyediakan HAL HIDL). Perangkat yang tidak diluncurkan dengan Android 13, tetapi berencana mengupdate image vendor ke Target Framework Compatibility Matrix Versi 7 (dirilis di Android 13) harus menghapus implementasi HIDL HAL yang ada dan menyediakan AIDL HAL. Perangkat yang tidak diluncurkan dengan Android 13 dan tidak berencana mengupdate image vendor juga direkomendasikan untuk menyediakan HAL AIDL.
AOSP menyertakan beberapa library helper yang dirancang untuk membantu Anda mengimplementasikan AIDL HAL dan transisi dari HIDL HAL lama.
Terminologi
Berikut adalah istilah yang harus Anda ketahui sebelum membaca dokumentasi kesehatan sistem Android lainnya:
- health@2.1
- Singkatan dari
android.hardware.health@2.1
. Versi 1 HIDL kesehatan dirilis di Android 11. - HAL AIDL health
- Singkatan dari
android.hardware.health
. HAL AIDL kesehatan versi 1 dirilis di Android 13. - charger
- Dapat dieksekusi yang berjalan dalam pengisian daya mode nonaktif yang menampilkan animasi pengisian daya ponsel.
- pemulihan
- Dapat dieksekusi yang berjalan dalam mode pemulihan yang harus mengambil informasi baterai.
- storaged Daemon
- yang mengambil informasi penyimpanan dan memberikannya ke framework.
Kesehatan di Android 11 dan 12
Di Android 11 dan 12, komponen kesehatan berfungsi seperti yang dijelaskan dalam diagram berikut:
[system]
| getService()
V
[health@2.1-service]
| getService(stub=true)
V
[ health@2.0-impl-2.1-<device>.so ]
| | (device-dependent linkage)
V V
+---------Helper libs for impl--------+ [libhealthd.device]
| [libhealthloop (uevent, wakealarm)] |
| [libhealth2impl (IHealth impl) ] |
| [libbatterymonitor (battery) ] |
+-------------------------------------+
Untuk mode lainnya:
[ charger ]
| getService() | (legacy code path)
V +-------------------------------------------------+
[health@2.1-service] |
| getService(stub=true) |
V |
[ health@2.0-impl-2.1-<device>.so ] |
| | (device-dependent linkage) |
V V |
+---------Helper libs for impl--------+ [libhealthd.device] |
| [libhealthloop (uevent, wakealarm)] | |
| [libhealth2impl (IHealth impl) ] | <---------------------------------+
| [libbatterymonitor (battery) ] |
+-------------------------------------+
[recovery]
| getService() w/o hwservicemanager
V
[ health@2.0-impl-2.1-<device>.so ]
| | (device-dependent linkage)
V V
+---------Helper libs for impl--------+ [libhealthd.device]
| [libhealthloop (uevent, wakealarm)] |
| [libhealth2impl (IHealth impl) ] |
| [libbatterymonitor (battery) ] |
+-------------------------------------+
Lihat diagram sederhana berikut untuk berbagai mode:
Gambar 1. Infrastruktur Health HIDL HAL 2.1.
Kesehatan di Android 13
Di Android 13, HAL AIDL health diperkenalkan. Gambar 2 menjelaskan cara kerja komponen kesehatan:
Gambar 2. Infrastruktur HAL AIDL Kesehatan.
Antarmuka HIDL HAL 2.1
HAL health@2.1 mendukung pengisian daya dalam mode nonaktif dan memberikan informasi selengkapnya tentang baterai.
Antarmuka utama, IHealth, menyediakan fungsi tambahan berikut
getHealthConfig
: untuk mengambil konfigurasi HAL inigetHealthInfo_2_1
: upgrade versi minor kegetHealthInfo
shouldKeepScreenOn
: untuk menentukan apakah layar harus tetap aktif dalam mode pengisi daya
Selain itu, penerapan @2.1::IHealth
diperlukan untuk mendukung
@2.1::IHealthInfoCallback
untuk fungsi registerCallback
dan
unregisterCallback
yang diwariskan. Antarmuka callback baru menampilkan informasi kualitas
kualitas ke klien menggunakan fungsi healthInfoChanged_2_1
, bukan
fungsi healthInfoChanged
yang diwariskan.
Struct baru, @2.1::HealthInfo
, ditampilkan menggunakan callback dan
getHealthInfo_2_1
. Struktur ini berisi informasi kesehatan perangkat tambahan yang tersedia melalui HAL health@2.0, termasuk:
- Tingkat kapasitas baterai
- Waktu pengisian daya baterai hingga penuh sekarang (dalam detik)
- Kapasitas desain pengisian penuh baterai (dalam μAh)
Gambar 3 menunjukkan diagram UML class yang berguna untuk penerapan HAL kesehatan:
Gambar 3. Diagram UML Health HAL 2.1.
Untuk mengetahui informasi tentang penerapan layanan Kesehatan 2.1, lihat Menerapkan Health 2.1.
Versi 1 antarmuka AIDL HAL
Bagian ini berisi informasi tentang antarmuka AIDL HAL versi 1.
Perubahan API
HAL AIDL versi 1 mendukung API serupa dengan HAL HIDL 2.1. Dibandingkan dengan antarmuka HIDL 2.1, berikut perubahan dalam API:
- API terkait pengisi daya yang diperkenalkan di HIDL HAL 2.1 tidak di-porting ke AIDL HAL. Karena fungsi pengisian daya mode nonaktif hanya ada di partisi
/vendor
, API di Vendor Interface tidak diperlukan. Untuk menerapkan pengisian daya mode nonaktif dengan benar, lihat pengisi daya. - Kolom Jenis
StorageAttribute
dan kolom terkait dihapus karena tidak digunakan. chargerDockOnline
ditambahkan keHealthInfo
untuk mendukung pengisian daya melalui dok.
Implementasi
Gambar 4 menunjukkan diagram UML class yang berguna untuk penerapan HAL AIDL health:
Gambar 4. Diagram UML HAL AIDL Kesehatan.
Untuk mengetahui informasi tentang penerapan layanan AIDL kesehatan, lihat Menerapkan HAL AIDL Kesehatan.
Pemulihan
Android 13 mendukung binder dalam pemulihan. Menginstal layanan AIDL Health ke pemulihan memungkinkan layanan tersebut berjalan dalam mode pemulihan.
Untuk mengetahui informasi tentang cara menginstal layanan AIDL kesehatan ke pemulihan, lihat berikut ini:
Pengisi daya
Fungsi pengisian daya mode nonaktif dipindahkan dari /system
ke /vendor
. Untuk
perangkat yang diluncurkan dengan Android 13, jika perangkat tersebut mendukung
pengisian daya mode nonaktif, biner layanan HAL harus mendukung mode pengisi daya. Untuk melakukannya, lihat mengimplementasikan pengisi daya.
Properti sistem pengisi daya
Properti ro.charger.*
tidak lagi dapat dibaca oleh biner charger
di
/vendor
. Jika perangkat Anda telah menyetel salah satu properti sistem ro.charger.*
, lihat properti sistem untuk pengisi daya.