2021-12-22 AndroidR 电池信息 简单分析记录

一、应用接口层 frameworks\base\core\java\android\os\BatteryManager.java

 二、服务层 frameworks\bfase\services\core\java\com\android\server\BatteryService.java ,onStart将电池监听注册到底层。

 三、frameworks\bfase\services\core\java\com\android\server\BatteryService.java

通过 HIDL服务调用HAL。

 四、hidl服务在 \hardware\interfaces\health\2.1\default\service.cpp

 五、到这里从log上看就打开一个android.hardware.health@2.1-service服务了。

     1、查看log看服务。

    2、绑定模式的服务代码流程

hardware\interfaces\health\2.1\default\service.cpp

StartLoop()

hardware\interfaces\health\utils\libhealthloop\HealthLoop.cpp

StartLoop()  >InitInternal()  >   Init(&healthd_config_)

hardware\interfaces\health\utils\libhealth2impl\BinderHealth.cpp

Init(struct healthd_config* config)

 六、涉及的代码比较多,这里就简单分析一下后面的过程,从log上一直会打印下面的跟电池有关的信息,我这里就分析这些信息是怎么来,简单跟踪一下过程。

     1、电池检测的log。 

     2、跟踪得到上面的大概流程如下,最后的打印在BatteryMonitor.cpp 里面的logValues。

hardware\interfaces\health\2.1\default\service.cpp
binder->StartLoop();

hardware\interfaces\health\utils\libhealthloop\HealthLoop.cpp
StartLoop()->MainLoop->  PeriodicChores    ->  ScheduleBatteryUpdate();  ->

hardware\interfaces\health\utils\libhealth2impl\HalHealthLoop.cpp
ScheduleBatteryUpdate() _>update();

\hardware\interfaces\health\utils\libhealth2impl\Health.cpp
update() >logValues()

\system\core\healthd\BatteryMonitor.cpp
logValues

     3、在system\core\healthd\BatteryMonitor.cpp里面通过/sys/class/power_supply/battery/ 读底层的电池信息。

 

七、参考文章

Android Battery 架构_shichaog的专栏-CSDN博客_android battery

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值