美文网首页
Android Health(运行状况)

Android Health(运行状况)

作者: ben3726 | 来源:发表于2018-08-24 18:53 被阅读0次

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

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

  • Framework 和供应商代码之间更清晰的分离。
  • 弃用不必要的healthd守护进程。
  • 在Health信息报告中为供应商定制提供更大的自由度。
  • 比电池更多的设备Health信息。

要求

使用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 提供了以下功能:

  • 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 /无线,电流,电压等)
  • 电池信息(存在,电池电量,电流,电压,电量,技术等)
  • 存储信息(存储设备信息,磁盘统计信息)

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

相关文章

网友评论

      本文标题:Android Health(运行状况)

      本文链接:https://www.haomeiwen.com/subject/jknbiftx.html