有些时候我们需要在我们的应用上为用户展示当前手机的电量,这时候我们就需要用到广播了,我们都知道在动态注册广播的时候,我们需要传入一个BroadcastReceiver类对象,还有一个意图过滤器IntentFilter,平时我们使用自定义广播的时候IntentFilter中的action可以自定义写成任意形式,但是如果我们要过去系统电量,就需要用到这个系统为我们提供好的action,Intent.ACTION_BATTERY_CHANGED。同样的,因为我们监听的是系统广播,所以广播的发送方是系统,我们只需要在需要接受到改广播的类中注册广播就可以了。

 IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);

然后我们自定义了一个BroadcastReceiver,用来处理广播中的获得电量的逻辑代码:

 package ggcomic.rabbit.lx.ggcomic.broadcastReceiver;

 import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.TextView; /**
* 监听获取手机系统剩余电量
* Created by Lx on 2016/9/17.
*/
public class BatteryReceiver extends BroadcastReceiver {
private TextView pow; public BatteryReceiver(TextView pow) {
this.pow = pow;
} @Override
public void onReceive(Context context, Intent intent) {
int current = intent.getExtras().getInt("level");// 获得当前电量
int total = intent.getExtras().getInt("scale");// 获得总电量
int percent = current * 100 / total;
pow.setText(percent + "%");
}
}

这里我们调用intent.getExtras()方法得到intent携带的Bundle集合,系统为我们写好了一些字段,如我们使用的"level","scale",分别是存储的当前电量和总电量信息。这是约定俗成的,Google的开发工程师为我们写好的,记住会用就可以。我们这里需要在一个控件上展示出来我们的当前电量,于是我在广播接收器的构造函数中传递进来了该控件的实例。得到当前电量和总电量之后,我们就可以计算出当前电量剩余的百分比,然后设置在控件上。自定义完广播接收器后,我们还需要在需要接受广播的类中注册广播,如下所示:

 IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
receiver = new BatteryReceiver(tvElectric);
registerReceiver(receiver, filter);

当然,由于我们是动态注册广播,所以不要忘了在生命周期的onDestroy()方法中取消注册广播:

 @Override
protected void onDestroy() {
super.onDestroy();
//销毁广播
unregisterReceiver(receiver);
}

这样,我们就成功获得了当前电量的百分比,是不是很简单呢~

最新文章

  1. Number of 1 Bits
  2. SQL复杂查询和视图(2)
  3. mysql 表字段不能使用type???
  4. 扒一扒JavaScript 预解释
  5. geeksforgeeks@ Minimum sum partition (Dynamic Programming)
  6. NYOJ-733 万圣节派对 AC 分类: NYOJ 2014-01-02 00:41 303人阅读 评论(0) 收藏
  7. dubbo + zookeeper 环境搭建
  8. poj2486 Apple Tree【区间dp】
  9. eclipse中代码格式化组合键失效了
  10. GUI(国际象棋棋盘)
  11. 六、VueJs 填坑日记之初识*.Vue文件
  12. Windows上C语言实现设置控制台的颜色
  13. 剖析height百分比和min-height百分比
  14. CentOS裸机环境下安装php-7.3.1
  15. 开发模型之V模型
  16. 修改ssh远程默认端口
  17. Java join & yield
  18. 常用的sass编译库
  19. Azure 中快速搭建 FTPS 服务
  20. spring的事务传播特性

热门文章

  1. CodeForces 670C Cinema(排序,离散化)
  2. Fluent Ribbon 第八步 其他控件
  3. MySQL 索引设计概要
  4. fun_action
  5. 常用的SQLalchemy 字段类型
  6. 搞懂head 和 tail 命令
  7. 简明python教程五----数据结构
  8. mysql增量恢复的一个实例操作
  9. delphi编程创建桌面快捷方式
  10. Node.js API学习笔记(一)