您的位置:首页 > 移动开发 > Android开发

Android4.4电池管理

2016-02-15 15:28 267 查看
http://blog.csdn.net/wlwl0071986/article/details/38778897

一、概述

Android4.4的电池管理功能用于管理电池的充、放电功能。整个电池管理的部分包括Linux电池驱动、Android电池服务、电池属性和参数、电池曲线优化四个部分。

Linux电池驱动用于和PMIC交互、负责监听电池产生的相关事件,例如低电报警、电量发生变化、高温报警、USB插拔等等。

Android电池服务,用来监听内核上报的电池事件,并将最新的电池数据上报给系统,系统收到新数据后会去更新电池显示状态、剩余电量等信息。如果收到过温报警和低电报警,系统会自动触发关机流程,保护电池和机器不受到危害。

研究电池属性和参数对提高电池子系统的性能也是很重要的,电池的性能越好,上报的数据越准确,因此研发人员也需对此有深入的了解。电池曲线优化是很重要的,电池曲线优化得越好,显示的电量比越准确,放电曲线的线性度也越好,因此对放电曲线的优化是重中之重。

二、Android电池服务

1. Android电池服务的启动和运行流程



2. Android电池服务的源码结构

   

Framework\base\services\java\com\android\server

├── SystemServer.java

创建BatteryServices、PowerManagerService、ActivityManagerService

├── BatterySevices.java

监听底层上报的battery事件,广播电池发生改变的消息

Framework\base\services\java\com\android\server\am

├── ActivityManagerService.java

创建BatteryStatsService

├── BatteryStatsService.java

统计和记录电池参数的信息

Framework\base\services\java\com\android\server\power

├── PowerManagerService.java

监听电池发生变化的广播消息,并调节系统的电源状态,例如亮屏

Framework\base\core\java\com\internal\os\

├── BatteryStatsImpl.java

统计和记录电池参数的信息,并通知其他模块

System\core\healthd

├── healthd.cpp

创建uevent socket,监听内核上报的内核事件

├── BatteryMonitor.cpp

初始化本地电池数据结构,将power_supply路径下属性节点路径填充进去,

├── BatteryMonitor.h

├── BatteryPropertiesRegistrar.cpp

创建电池属性监听器,并将其注册到Android的系统服务中

├── BatteryPropertiesRegistrar.h

3. 电池系统从底层向Framework层上报数据的流程

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: