有些时候我们需要在我们的应用上为用户展示当前手机的电量,这时候我们就需要用到广播了,我们都知道在动态注册广播的时候,我们需要传入一个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);
}

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

Android中获取手机电量信息的更多相关文章

  1. windowsphone中获取手机位置信息

    首先在界面中加入一个textblock控件以显示信息 using System; using System.Collections.Generic; using System.IO; using Sy ...

  2. Android中获取系统内存信息以及进程信息-----ActivityManager的使用(一)

    本节内容主要是讲解ActivityManager的使用,通过ActivityManager我们可以获得系统里正在运行的activities,包括 进程(Process)等.应用程序/包.服务(Serv ...

  3. android中获取屏幕的信息

    获取屏幕信息比较简单,可以通过android的sdk自带的工具类DisplayMetrics.话不多说,上代码: // 获取屏幕的信息 DisplayMetrics dm = new DisplayM ...

  4. Android中获取电池电量

    /** * * @author chrp * *显示当前电池电量 */ public class MainActivity extends Activity { private TextView tv ...

  5. 【转】android 安卓APP获取手机设备信息和手机号码的代码示例

    http://blog.csdn.net/changemyself/article/details/7421476 下面我从安卓开发的角度,简单写一下如何获取手机设备信息和手机号码 准备条件:一部安卓 ...

  6. android利用ContentResolver访问者获取手机联系人信息

    转载自:http://www.jb51.net/article/106379.htm 首先需要在AndroidManifest.xml文件中添加权限: <uses-permission andr ...

  7. android 安卓APP获取手机设备信息和手机号码的代码示例

    下面我从安卓开发的角度,简单写一下如何获取手机设备信息和手机号码 准备条件:一部安卓手机.手机SIM卡确保插入手机里.eclipse ADT和android-sdk开发环境 第一步:新建一个andro ...

  8. Android 获取手机信息,设置权限,申请权限,查询联系人,获取手机定位信息

    Android 获取手机信息,设置权限,申请权限,查询联系人,获取手机定位信息 本文目录: 获取手机信息 设置权限 申请权限 查询联系人 获取手机定位信息 调用高德地图,设置显示2个坐标点的位置,以及 ...

  9. Android中获取系统上安装的APP信息

    Version:0.9 StartHTML:-1 EndHTML:-1 StartFragment:00000099 EndFragment:00003259 Android中获取系统上安装的APP信 ...

随机推荐

  1. 支付宝app支付提示 系统繁忙,请稍后重试

    v2版本的支付宝支付,无论怎么调试返回的都是系统繁忙,请稍后重试提示.经过对给的示例代码的仔细研究,最后发现是由于老版本的sign_type 不加入签名计算,而新版本的支付签名它是加入签名计算的.供大 ...

  2. 解决EF6中表名变成复数的情况

    在用EF6 时,在进行数据调用的时候,总提示数据表名对象错误.. 解决此问题需要在继承DbContext的实体类中 加入: using System; using System.ComponentMo ...

  3. http://element.eleme.io/#/zh-CN/component/quickstart

    http://element.eleme.io/#/zh-CN/component/quickstart

  4. gunicorn

    https://blog.csdn.net/jailman/article/details/78496522 gunicorn工作原理 Gunicorn“绿色独角兽”是一个被广泛使用的高性能的Pyth ...

  5. Python菜鸟之路:Django 路由补充1:FBV和CBV - 补充2:url默认参数

    一.FBV和CBV 在Python菜鸟之路:Django 路由.模板.Model(ORM)一节中,已经介绍了几种路由的写法及对应关系,那种写法可以称之为FBV: function base view ...

  6. LinkedList基本用法

    https://blog.csdn.net/i_lovefish/article/details/8042883

  7. 从一个git仓库迁移到另外一个git仓库

    1 从原地址克隆一份裸版本库,比如原本托管于 GitHub. git clone --bare git://github.com/username/project.git git操作的结果会有一个XX ...

  8. Line---CodeForces 7C(扩展欧几里得算法)

    题目链接:http://codeforces.com/problemset/problem/7/C AX+BY=C已知 A B C 求 X Y: #include <iostream> # ...

  9. android studio中取消关联git

    Android studio取消关联Git 步骤如下 settings->version control 这里是已经取消关联的 如果关联 按住减号即可

  10. rtsp over udp

    #include <stdio.h> #include <netinet/in.h> #include <sys/socket.h> #include <st ...