zoukankan      html  css  js  c++  java
  • Android中获取手机电量信息

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

    1 IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);

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

     1 package ggcomic.rabbit.lx.ggcomic.broadcastReceiver;
     2 
     3 import android.content.BroadcastReceiver;
     4 import android.content.Context;
     5 import android.content.Intent;
     6 import android.widget.TextView;
     7 
     8 /**
     9  * 监听获取手机系统剩余电量
    10  * Created by Lx on 2016/9/17.
    11  */
    12 public class BatteryReceiver extends BroadcastReceiver {
    13     private TextView pow;
    14 
    15     public BatteryReceiver(TextView pow) {
    16         this.pow = pow;
    17     }
    18 
    19     @Override
    20     public void onReceive(Context context, Intent intent) {
    21         int current = intent.getExtras().getInt("level");// 获得当前电量
    22         int total = intent.getExtras().getInt("scale");// 获得总电量
    23         int percent = current * 100 / total;
    24         pow.setText(percent + "%");
    25     }
    26 }

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

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

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

    1 @Override
    2     protected void onDestroy() {
    3         super.onDestroy();
    4         //销毁广播
    5         unregisterReceiver(receiver);
    6     }

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

  • 相关阅读:
    Jdk 1.6 在线 API 中文版
    数据库的最简单实现
    互联网公司GitHub repo 语言使用情况
    Chrome浏览器查看 iframe信息 OpenFrame
    PostgreSQL 保存json,jsonb类型
    修改PS1变量
    postgres json
    PostgreSQL PL/Python 和 PL/Postgres 函数互相调用
    转:CentOS 6.x 挂载读写NTFS分区(fuse-ntfs-3g)
    CentOS 7 设置静态IP
  • 原文地址:https://www.cnblogs.com/RabbitLx/p/5886637.html
Copyright © 2011-2022 走看看