本文转载自:http://blog.csdn.net/kris_fei/article/details/51789964

之前版本的电池电量低是通过发送 intent ACTION_BATTERY_LOW来实现的,而在android4.4
中,通过发送intent ACTION_BATTERY_CHANGED,也就是电池电量只要变化就检查是否需要
低电量告警,并且实现挪到了PowerUI中。

路径:

frameworks/base/packages/SystemUI/src/com/android/systemui/power/PowerUI.java

  1. public void start() {
  2. ......
  3. //注册intent, 主要关注的是ACTION_BATTERY_CHANGED消息。
  4. // Register for Intent broadcasts for...
  5. IntentFilter filter = new IntentFilter();
  6. filter.addAction(Intent.ACTION_BATTERY_CHANGED);
  7. filter.addAction(Intent.ACTION_SCREEN_OFF);
  8. filter.addAction(Intent.ACTION_SCREEN_ON);
  9. mContext.registerReceiver(mIntentReceiver, filter, null, mHandler);
  10. }

当电池电量发生变化的时候,BatteryService就会发送 ACTION_BATTERY_CHANGED的 intent.
接着如下函数就会被调用:

  1. private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
  2. @Override
  3. public void onReceive(Context context, Intent intent) {
  4. String action = intent.getAction();
  5. if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {
  6. ......
  7. mBatteryStatus = intent.getIntExtra(BatteryManager.EXTRA_STATUS,
  8. BatteryManager.BATTERY_STATUS_UNKNOWN);
  9. ......
  10. if (!plugged
  11. && (bucket < oldBucket || oldPlugged)
  12. && mBatteryStatus != BatteryManager.BATTERY_STATUS_UNKNOWN
  13. && bucket < 0) {
  14. showLowBatteryWarning();
  15. ......
  16. }
  17. }
  18. };

如果不想要显示低电量对话框, 只要不调用showLowBatteryWarning()即可。

我遇到的问题在于插上充电座之后开机仍然显示低电量告警,提示要插入充电器,出现这个问题的
原因在于: 电池是另外一块板子供的,所以没有插拔信息,并且battery status默认情况下也是
BATTERY_STATUS_UNKNOWN。

因此只要将status改成BATTERY_STATUS_CHARGING就能修复此问题了~

最新文章

  1. 《像计算机科学家一样思考Java》—— 读后总结
  2. 删除多个Safari书签
  3. opencv3.1 + opencv_contrib编译记事(win7下)
  4. IBInspectable / IBDesignable
  5. ASP.NET浏览器定义文件及IE兼容模式
  6. Retrofit – Java(Android) 的REST 接口封装类库
  7. json xmpp
  8. UI基本之UITextField相关方法属性
  9. GrideView合并列合并序号,隐藏某列按钮
  10. 如何使用银联卡充值美元到BTC-E以及比特币搬砖教程
  11. Jersey框架二:Jersey对JSON的支持
  12. 乐在其中设计模式(C#) - 中介者模式(Mediator Pattern)
  13. 02-2--数据库MySQL:DDL(Data Definition Language:数据库定义语言)操作数据库中的表(二)
  14. DataTable的Merge\COPY\AcceptChange使用说明
  15. C#设计模式之十七中介者模式(Mediator Pattern)【行为型】
  16. Git学习笔记05-撤销修改
  17. JSP内置对象——pageContext对象和config对象
  18. 【RFT】【环境配置】Mac
  19. Lucky Conversion(找规律)
  20. H5新增API和操作DOM

热门文章

  1. 活动预告丨易盾CTO朱浩齐将出席2018 AIIA大会,分享《人工智能在内容安全的应用实践》
  2. FZU-2148-Moon Game,,几何计算~~
  3. 洛谷P3973 - [TJOI2015]线性代数
  4. C# 通过HTTP代理访问Socket来获取邮件
  5. 【POJ3254】Corn Fields(状压DP)
  6. msp430入门编程47
  7. 前端学习之--CSS
  8. Iptables指南教程收集
  9. 前端开发数据mock神器 -- xl_mock
  10. [转] SQL SERVER 2008 R2 安装中的账户设置问题