Android Health(运行状况)

2018-08-24  本文已影响0人  ben3726

原文:https://source.android.com/devices/tech/health

Android 9带来了health@1.0 HAL的主版本升级:android.hardware.healthHAL 2.0。这个新的HAL具有以下优点:

要求

使用Android 9启动的设备必须提供2.0 HAL(并且不得提供1.0 HAL)。未使用Android 9启动但计划更新供应商映像为Target Framework Compatibility Matrix Version 3(在Android 9中发布)的设备必须删除现有的1.0 HAL实现并提供2.0 HAL。

AOSP包含多个帮助库,旨在帮助您实现2.0 HAL和从旧的1.0 HAL过渡。

术语

health@1.0android.hardware.health@1.0的缩写。参考Android 8.0中发布的健康HIDL HAL 1.0版。
health@2.0android.hardware.health@2.0的缩写。参考Android 9中发布的健康HIDL HAL 2.0版。
charger:关机充电模式下运行的可执行文件,显示电话充电动画。
recovery:recovery模式下运行的可执行文件,必须检索电池信息
healthd:Android中运行的遗留守护程序,用于检索与健康相关的信息并将其提供给Framework 。
storaged:Android中运行的守护程序,用于检索存储信息并将其提供给Framework 。

Android 8.x中的Health

Android 8.x中的Health组件的工作原理,如下图所示:

health-component-1.png

在此图中:
binderhwbinder用于Framework 与硬件通信。
healthd静态链接到libhealthd_androidlibbatterymonitorlibbatteryservice
health@1.0-impl静态链接到libhealthd.BOARD

每块板子可以定制不同的libhealthd.BOARD; 它在编译时确定chargerhealth@1.0-implrecovery的指向链接。

对于其他模式:

health-1-charging-recovery.png

charger静态链接到libhealthd.BOARDlibhealthd_chargerlibbatterymonitor
recovery静态链接到libhealthd.BOARDlibbatterymonitor

Android 9中的Health

在Android 9中,Health组件的工作原理如下图所示:

health-component-2.png

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废弃

对于其他模式:

health-2-charging-recovery.png

HAL接口

health@2.0 HAL为Framework提供与旧的healthd守护程序相同的功能。它还提供类似于以前healthd提供的作为binder服务的API(即IBatteryPropertiesRegistrar)。

主要接口 IHealth 提供了以下功能:

此外,IHealth还提供以下新storaged API,以检索指定厂商存储相关的信息:

一个新的结构,@2.0::HealthInfo,通过回调和getHealthInfo返回。此结构包含通过health@2.0 HAL获取的所有设备Health信息,包括:

有关Health服务实现的信息,请参阅 Health实现

上一篇 下一篇

猜你喜欢

热点阅读