电池灯的Java代码在batteryservice.java中

电池的状态电量等信息由驱动获得,但驱动不会主动做这些事情,因此肯定有个App调用驱动程序读取电池信息,称这个App为A应用。

还有个App应用B,根据电量低的情况提示对话框:提示充电、对话框:将在30S内自动关机,应用A会发出一些通知

说明:

(1)APP0:读取驱动,当驱动检测到电池事件发生,唤醒APP0

(2)APP1,2,3......  注册通知响应函数

(3)APP0发出通知

(4)APP1,2,3.....执行对应的函数

Ctrl+Shift+N 输入batteryservice.java打卡

//首先在onStart()函数中注册一个监听事件,在BatteryListener类中,如果电池属性发生改变,batteryPropertiesChanged方法会被调用

a. batteryPropertiesRegistrar.registerListener(new BatteryListener());

//batteryPropertiesChanged方法会调用update方法,在update中广播消息,消息属性是Intent.ACTION_BATTERY_CHANGED,在android源码中搜索,其在很多地方被用到,比如PowerManagerService.java中,其会注册一个接受者
b. sendIntentLocked();

//App0发出广播消息后会继续调用灯光的updateLightsLocked函数
c. mLed.updateLightsLocked();

//App1/2/3注册接受者,等待消息,收到感兴趣的Intent后,调用BatteryReceiver类中的onReceive函数
d.
// Register for broadcasts from other components of the system.
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_BATTERY_CHANGED);
filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
mContext.registerReceiver(new BatteryReceiver(), filter, null, mHandler);

//App1/2/3收到消息后调用如下内容

e.
onReceive
  handleBatteryStateChangedLocked
    updatePowerStateLocked

参考文章
Android4.4电池管理
http://blog.csdn.net/wlwl0071986/article/details/38778897

最新文章

  1. javascript中的递归函数
  2. 浅谈python中得import xxx,from xxx import xxx, from xxx import *
  3. 关于Hellas和Greece
  4. nginx location配置
  5. tensorflow 运行成功!
  6. 每日学习心得:找不到类型{0},它在 ServiceHost 指令中提供为 Service 特性值,或在配置元素...中提供,cellspacing、rowspacing属性
  7. 文件(夹)比较 Beyond Compare, Diff
  8. 通过ctypes获得python windows process的内存使用情况
  9. USB系列之六:基于DOSUSB的简单U盘驱动程序
  10. ActiveX异步回调JavaScript
  11. Eclipse上GIT插件EGIT使用
  12. title:EL表达式获取Map里面的数值失败的问题
  13. Android目录结构介绍&Android学习之hello world
  14. Unix时代的开创者Ken Thompson
  15. Linux 学习 (一) Linux简介
  16. django 增加自定义权限的一个博客,讲的很详细
  17. java面试题:数据库mysql
  18. 【转载】深入浅出REST
  19. 使用three.js开发3d地图初探
  20. QThread 的使用方法及函数解析

热门文章

  1. js插件---markdown如何使用
  2. 小白算法之路-非确定性多项式(non-deterministic polynomial,缩写NP)
  3. IOS打包发布APP的所有详细流程
  4. C/C++(基础-常量,类型转换)
  5. read---读取变量值
  6. 【习题 8-15 UVA - 1617】Laptop
  7. Android屏幕分辨率获取方法--源码剖析
  8. 洛谷 P1255 数楼梯
  9. Qt样式表之盒子模型(以QSS来讲解,而不是CSS)
  10. affix附加导航插件