Android 13 menyertakan android.hardware.health
AIDL HAL,
konversi dari health@2.1 HAL. HAL baru ini memiliki
keunggulan berikut:
- Menghapus API terkait pengisi daya yang tidak digunakan
- Menghapus
StorageAttribute
yang tidak digunakan dan kolom terkait - Mendukung pengisian daya dok.
Android 11 menyertakan android.hardware.health
HAL 2.1,
upgrade versi minor dari health@2.0 HAL. HAL baru ini memiliki
keunggulan berikut:
- Pemisahan yang lebih bersih antara kode framework dan vendor.
- Tingkat kebebasan yang lebih besar untuk penyesuaian vendor dalam laporan informasi kesehatan.
- Informasi kesehatan perangkat yang lebih lengkap, bukan hanya baterai.
Dokumentasi untuk menerapkan 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 Target Framework Compatibility Matrix 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 menerapkan HAL 2.1 dan melakukan transisi 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 Matriks Kompatibilitas Framework Target Versi 7 (dirilis di Android 13) harus menghapus implementasi HAL HIDL yang ada dan menyediakan HAL AIDL. 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 HAL AIDL dan transisi dari HAL HIDL 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
. HIDL kesehatan versi 1 dirilis di Android 11. - HAL AIDL kesehatan
- Singkatan dari
android.hardware.health
. Versi 1 HAL AIDL kesehatan dirilis di Android 13. - charger
- File yang dapat dieksekusi yang berjalan dalam pengisian daya mode nonaktif yang menampilkan animasi pengisian daya ponsel.
- pemulihan
- File yang 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 kesehatan diperkenalkan. Gambar 2 menjelaskan cara kerja komponen kesehatan:
Gambar 2. Infrastruktur HAL Health AIDL.
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, implementasi @2.1::IHealth
diperlukan untuk mendukung
@2.1::IHealthInfoCallback
untuk fungsi registerCallback
dan
unregisterCallback
yang diwarisi. Antarmuka callback baru menampilkan informasi kesehatan
ke klien menggunakan fungsi healthInfoChanged_2_1
, bukan
fungsi healthInfoChanged
yang diwarisi.
Struktur 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:
- Level 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 informasi tentang cara menerapkan layanan Kesehatan 2.1, lihat Menerapkan Kesehatan 2.1.
Antarmuka AIDL HAL versi 1
Bagian ini berisi informasi tentang antarmuka AIDL HAL versi 1.
Perubahan API
HAL AIDL versi 1 mendukung API yang serupa dengan HAL HIDL 2.1. Dibandingkan dengan antarmuka HIDL 2.1, hal berikut diubah di 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 Antarmuka Vendor tidak diperlukan. Untuk menerapkan pengisian daya dalam mode nonaktif dengan benar, lihat pengisi daya. - Jenis
StorageAttribute
dan kolom terkait dihapus karena tidak digunakan. chargerDockOnline
ditambahkan keHealthInfo
untuk mendukung pengisian daya dok.
Implementasi
Gambar 4 menunjukkan diagram UML class yang berguna untuk penerapan HAL AIDL kesehatan:
Gambar 4. Diagram UML HAL AIDL Kesehatan.
Untuk informasi tentang cara menerapkan layanan AIDL kesehatan, lihat Menerapkan Health AIDL HAL.
Pemulihan
Android 13 mendukung binder dalam pemulihan. Menginstal layanan AIDL Kesehatan ke pemulihan memungkinkannya berjalan dalam mode pemulihan.
Untuk mengetahui informasi tentang cara menginstal layanan AIDL kesehatan ke pemulihan, lihat hal berikut:
Pengisi daya
Fungsi pengisian daya mode nonaktif dipindahkan dari /system
ke /vendor
. Untuk
perangkat yang diluncurkan dengan Android 13, jika mendukung
pengisian daya dalam 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 memiliki salah satu properti sistem ro.charger.*
yang ditetapkan,
lihat
properti sistem untuk pengisi daya.