[电池简易流程图片在附件中]
java代码:
frameworks/frameworks/base/services/java/com/android/server/Ba
tteryService.java
JNI代码:
frameworks/base/services/jni/com_android_server_BatteryService.
cpp
kernel driver代码
drivers/power/xx_battery.c
2、BatteryService
BatteryService作为电池及充电相关的服务: 监听Uevent、读取sysfs
里中的状态 、广播Intent.ACTION_BATTERY_CHANGED。
(1)、mUEventObserver
BatteryService实现了一个UevenObserver mUEventObserver。
uevent是Linux内核用来向用户空间主动上报事件的机制,对于JAVA程
序来说,只实现UEventObserver的虚函数onUEvent,然后注册即可。
private UEventObserver mUEventObserver = new UEventObserver(){
@Override
public void onUEvent(UEventObserver.UEvent event){
update();
}
}
BatteryService只关注power_supply的事件,所以在构造函数注册:
public BatteryService(Context context){
mContext = context;
mBatteryStats = BatteryStatsService.getService();
mUEventObserver.startObserving("SUBSYSTEM=power_supply");
//set initial status
update();
}
(2)、update()
update读取sysfs文件做到同步取得电池信息, 然后根据读到的状态更新
BatteryService的成员变量,并广播一个Intent来通知其它关注电源状态的
组件。
当kernel 有power_supply 事件上报时,mUEventObserver 调用
update()函数,然后update 调用native_update 从sysfs 中读取相关状态
(com_android_server_BatteryService.cpp):
private synchronized final void update(){
native_update();
}
(3)、sysfs
Linux驱动driver维护着保存电池信息的一组文件sysfs,供应用程序获
取电源相关状态:
#define AC_ONLINE_PATH "/sys/class/power_supply/ac/online" AC 电源连接
状态
#define USB_ONLINE_PATH "/sys/class/power_supply/usb/online" USB 电源
连接状态
#define BATTERY_STATUS_PATH
"/sys/class/power_supply/battery/status"充电状态
#define BATTERY_HEALTH_PATH
"/sys/class/power_supply/battery/health"电池状态
#define BATTERY_PRESENT_PATH
"/sys/class/power_supply/battery/present"使用状态
#define BATTERY_CAPACITY_PATH
"/sys/class/power_supply/battery/capacity"电池level
#define BATTERY_VOLTAGE_PATH
"/sys/class/power_supply/battery/batt_vol"电池电压
#define BATTERY_TEMPERATURE_PATH
"/sys/class/power_supply/battery/batt_temp"电池温度
#define BATTERY_TECHNOLOGY_PATH
"/sys/class/power_supply/battery/technology"电池技术
当电池状态发生变化时,driver会更新这些文件。
- 大小: 48.1 KB
分享到:
相关推荐
android 电池管理 源码android 电池管理 源码
android framework 电池管理
Android电池服务,用来监听内核上报的电池事件,并将最新的电池数据上报给系统,系统收到新数据后会去更新电池显示状态、剩余电量等信息。如果收到过温报警和低电报警,系统会自动触发关机流程,保护电池和机器不受...
实现一个电池属性实时监听器。这些属性包括温度,电池电量....等等。而且,使用Service,Broadcast,以及Thread的方式来实现。MyBatteryService后台获取Battery属性值,然后,在Activity中进行相关数据的显示。
Android-statuabar电池管理--电池信息获取实例
此外,Android系统还有一些常见的问题,如应用崩溃、电池耗电过快、Wi-Fi连接问题、存储空间不足、更新问题等。针对这些问题,用户可以尝试一些基本的解决方法,如清除应用缓存和数据、降低屏幕亮度、关闭没有使用的...
是android平台的资源管理软件。名叫省电精灵,工具如其名,是为节约电池而生
NULL 博文链接:https://l540151663.iteye.com/blog/2026435
Android 电池监控,已经是实现了,电池的监控和哪一些应用用电量如何,还是也已经实现了,手机的省电管理模式,也可以开始省电模式(管理),让您的手机app,可以使用的更久.rar,太多无法一一验证是否可用,程序如果...
android打开应用权限设置页(国内各大手机厂商适配终极工具类)
程序说明 -----------------------------... 小安任务助手是一款简单易用的任务管理软件,它可以使用户更方便的关闭正在运行的程序,显示手机CPU、内存、SD卡和电池状态等系统信息,还可用来卸载用户已安装的应用软件。
Battery监控程序是一个专为Android设备设计的应用程序,用于实时监控和管理设备的电池状态。通过该程序,用户可以轻松查看电池的健康状况、电量百分比、电压、温度等关键参数。此外,它还提供了详细的电池使用报告,...
与电池电量管理相关的外国文献,以软件为主,包含了一点硬件知识,属于较基本的android开发参考资料。
OssSystem(OA系统图书管理简单版).rar Phonegap+HTML5+CSS3+jQuer简单界面模板示例及源码.rar ProgressBar 几乎全部的用法.rar QQ_UI之分类菜单DEMO.zip QQ的登录界面 源代码 .zip quitesleep手机电话功能软件.rar...
这时候希望重新去打开该权限,那么问题来了,Android厂家定制的room五花八门,很多时候却发现找不到权限管理的入口。为了解决这一问题,如果我们应用中直接提供权限管理入口给用户,是不是会很方便的解决用户这一...
Android 版本检测与管理.rar Android 电子杂志(带翻页效果)源码.rar Android 电量显示Widgets插件实现.zip Android 程序启动界面Demo.zip Android 精仿QQ登录界面源码.rar Android 网络监视器源码.zip android ...
电池记录仪使用警报管理器的Android电池记录器