原文:https://source.android.com/devices/tech/health
Android 9帶來了health@1.0 HAL
的主版本升級:android.hardware.healthHAL 2.0
捷雕。這個新的HAL具有以下優(yōu)點:
- Framework 和供應商代碼之間更清晰的分離乌企。
- 棄用不必要的
healthd
守護進程彼宠。 - 在Health信息報告中為供應商定制提供更大的自由度。
- 比電池更多的設備Health信息询枚。
要求
使用Android 9啟動的設備必須提供2.0 HAL(并且不得提供1.0 HAL)。未使用Android 9啟動但計劃更新供應商映像為Target Framework Compatibility Matrix Version 3(在Android 9中發(fā)布)的設備必須刪除現(xiàn)有的1.0 HAL實現(xiàn)并提供2.0 HAL。
AOSP包含多個幫助庫尚骄,旨在幫助您實現(xiàn)2.0 HAL和從舊的1.0 HAL過渡户辫。
術語
health@1.0
:android.hardware.health@1.0
的縮寫珠移。參考Android 8.0中發(fā)布的健康HIDL HAL 1.0版。
health@2.0
:android.hardware.health@2.0
的縮寫扼倘。參考Android 9中發(fā)布的健康HIDL HAL 2.0版状蜗。
charger
:關機充電模式下運行的可執(zhí)行文件需五,顯示電話充電動畫。
recovery
:recovery模式下運行的可執(zhí)行文件轧坎,必須檢索電池信息
healthd
:Android中運行的遺留守護程序宏邮,用于檢索與健康相關的信息并將其提供給Framework 。
storaged
:Android中運行的守護程序,用于檢索存儲信息并將其提供給Framework 蜜氨。
Android 8.x中的Health
Android 8.x中的Health組件的工作原理械筛,如下圖所示:
在此圖中:
binder
和hwbinder
用于Framework 與硬件通信。
healthd
靜態(tài)鏈接到libhealthd_android
飒炎,libbatterymonitor
和libbatteryservice
埋哟。
health@1.0-impl
靜態(tài)鏈接到libhealthd.BOARD
。
每塊板子可以定制不同的libhealthd.BOARD
; 它在編譯時確定charger
郎汪、health@1.0-impl
和recovery
的指向鏈接赤赊。
對于其他模式:
charger
靜態(tài)鏈接到libhealthd.BOARD
、libhealthd_charger
和libbatterymonitor
煞赢。
recovery
靜態(tài)鏈接到libhealthd.BOARD
和libbatterymonitor
抛计。
Android 9中的Health
在Android 9中,Health組件的工作原理如下圖所示:
Framework嘗試從hwservicemanager
中檢索health@2.0
服務照筑。如果失敗吹截,則調用health@1.0
(在Android 8.x中)。遺留代碼路徑仍然保留朦肘,以便Android 9system
鏡像與Android 8.x vendor
鏡像兼容饭弓。Framework不會從兩個HAL檢索信息,因為設備上只能存在一個服務版本(1.0或2.0)媒抠。
注意:對于遺留代碼路徑弟断,將保留處理邏輯/庫直到
health@1.0
廢棄 。
對于其他模式:
HAL接口
health@2.0
HAL為Framework提供與舊的healthd
守護程序相同的功能趴生。它還提供類似于以前healthd
提供的作為binder
服務的API(即IBatteryPropertiesRegistrar)阀趴。
主要接口 IHealth 提供了以下功能:
-
registerCallback
, 取代IBatteryPropertiesRegistrar.registerListener
-
unregisterCallback
苍匆, 取代IBatteryPropertiesRegistrar.unregisterListener
-
update
刘急, 取代IBatteryPropertiesRegistrar.scheduleUpdate
-
IBatteryPropertiesRegistrar.getProperties
被以下內容取代:getChargeCounter
getCurrentNow
getCurrentAverage
getCapacity
getEnergyCounter
getChargeStatus
getHealthInfo
此外,IHealth
還提供以下新storaged
API浸踩,以檢索指定廠商存儲相關的信息:
getStorageInfo
getDiskStats
一個新的結構叔汁,@2.0::HealthInfo
,通過回調和getHealthInfo
返回检碗。此結構包含通過health@2.0 HAL
獲取的所有設備Health信息据块,包括:
- 充電信息(AC / USB /無線,電流折剃,電壓等)
- 電池信息(存在另假,電池電量,電流怕犁,電壓边篮,電量己莺,技術等)
- 存儲信息(存儲設備信息,磁盤統(tǒng)計信息)
有關Health服務實現(xiàn)的信息戈轿,請參閱 Health實現(xiàn)凌受。