美文网首页
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