Android系统中实时的监听手机电量以及开机启动功能都是通过BroadcastReceiver组件实现的。我们可以动态注册这个类的一个实例通过Context.registerReceiver()方法或者静态注册,通过<Receiver>标记在androidmanifest . xml。注意:如果我们注册一个接收器在Activity.onResume()实现,我们应该注销Activity在Activity生命周期的onPause方法中。(这将减少不必要的系统开销)。切记不能注销Activity在onSaveInstanceState(),因为这个方法不会被启动直到用户回到历史堆栈。下面我们通过动态注册BroadcastReceiver来实现电量的监听。

(1)在清单文件添加权限

  <uses-permission android:name="android.permission.BATTERY_STATS"/>

(2)在Activity生命周期注册注销Receiver

 @Overrideprotected void onResume() {// TODO Auto-generated method stubsuper.onResume();reciver=new BatteryBroadcastReciver();//创建一个过滤器IntentFilter intentFilter=new IntentFilter(Intent.ACTION_BATTERY_CHANGED);registerReceiver(reciver, intentFilter);}@Overrideprotected void onPause() {// TODO Auto-generated method stubsuper.onPause();unregisterReceiver(reciver);}

(3)继承BroadcastReceiver接口

public class BatteryBroadcastReciver extends BroadcastReceiver{

@Override
        public void onReceive(Context context, Intent intent) {
            // TODO Auto-generated method stub
            if(intent.getAction().equals(Intent.ACTION_BATTERY_CHANGED)){
                //得到系统当前电量
                int level=intent.getIntExtra("level", 0);
                //取得系统总电量
                int total=intent.getIntExtra("scale", 100);
                textView.setText("当前电量:"+(level*100)/total+"%");
                //当电量小于15%时触发
                if(level<15){
                    Toast.makeText(MainActivity.this, "当前电量已小于15%",Toast.LENGTH_LONG).show();
                }
                
            }
        }
        
    }

Android开发之使用BroadcastReceiver实时监听电量(源代码分享)相关推荐

  1. Android开发之使用BroadcastReceiver实现开机自动启动(源代码分享)

    上一节已经介绍过BroadcastReceiver实现实时监听电量的功能,这节就来介绍一下如果实现开机自动启动的功能,这个比监听电量还简单不少 (1)在清单文件注册权限 <uses-permis ...

  2. Android事件的响应,Android 开发事件响应之基于监听的事件响应

    Android 开发事件响应之基于监听的事件响应 本文将介绍Android 操作系统如何通过监听来实现对事件的响应. Android 开发事件响应之基于监听的事件响应 背景介绍 Android 开发事 ...

  3. 使用Service和BroadcastReceiver实时监听网络状态

    很多时候我们都需要实时监听网络状态,当网络状态发生变化后通知程序实行不同的策略.  这里,我采用Service+BroadcastReceiver的形式实时监听网络变化. 原理是程序在背后启一个Ser ...

  4. Android 开发中的View事件监听机制

    在开发过程中,我们常常根据实际的需要绘制自己的应用组件,那么定制自己的监听事件,及相应的处理方法是必要的.我们都知道Android中,事件的监听是基于回调机制的,比如常用的OnClick事件,你了解它 ...

  5. Android开发之解决NestedScrollView滑动监听兼容低版本的方法

    NestedScrollView的滑动监听目前仅限api23及以上,为了兼容低版本如下自定义方法 可以自定义NestedScrollView即可如下: package cn.net.gfan.worl ...

  6. Android开发之手机拍照功能的实现(源代码分享)

    Android系统里调用手机拍照的功能有两种方法一种直接调用手机自带的相机另一种就是使用自己做的拍照应用.比如Camera360 一款于各操作系统都有的的功能强大的手机摄影软件:能拍摄出不同风格,不同 ...

  7. android控制手机拍照代码,Android开发之手机拍照功能的实现(源代码分享)

    Android系统里调用手机拍照的功能有两种方法一种直接调用手机自带的相机另一种就是使用自己做的拍照应用.比如Camera360 一款于各操作系统都有的的功能强大的手机摄影软件:能拍摄出不同风格,不同 ...

  8. Android实时监听短信并上传服务器

    短信监听 Android监听手机短信的方法有两种,分别为: 1.接受系统的短信广播:当手机收到新消息时,会发送一条广播,通过该广播就可以获取短信内容: 2.监听短信数据库:利用观察者模式监听短信数据库 ...

  9. Android实时监听网络状态

    Android开发实时监听网络状态变化一般有两种方法: 1. 新建一个基类BasicActivity.class,在基类中注册网络监听广播NetworkChangeReceiver.class,所有页 ...

最新文章

  1. 【数学专题】 筛质数、分解质因数和快速幂
  2. 堆木板问题——木板能堆无限远而不倒吗?
  3. 远洋整站下载器不能用https_这可能是最全最好的爆破百度文库下载指南了!
  4. js 中对象--属性相关操作
  5. 读写分离数据库之MyCat
  6. mongodb atlas_如何使用MongoDB Atlas将MERN应用程序部署到Heroku
  7. English trip -- VC(情景课)2 D Reading
  8. Python Pytest中fixture之yield唤醒teardown和终结函数addfinalizer
  9. 带你认识数据库视图对象,下次不要再认成“表”了
  10. 【Python】eval+random库+字符串转列表+列表转字符串
  11. conda 安装指定版本tensorflow cpu/gpu
  12. 贝叶斯决策(Bayesian Decision Theory)
  13. 韩立刚Linux基础入门,Linux入门基础笔记1(韩立刚课程)
  14. 维修系统php源码,v3.4.0智睿报修管理系统
  15. centos更新yum时遇到的问题
  16. 陈绮贞 《吉他手》 吉他谱子 图片+文字
  17. dijkstra标号法表格_狄克斯屈拉dijkstra标号算法.pptx
  18. vue提交表单数据到后端
  19. 国外lead教程—EMU之dating类offer分析
  20. (转)Unity MRTK语音输入

热门文章

  1. 电脑无线网络显示红叉_不能播放视频怎么办?小编教你电脑不能播放视频如何解决...
  2. 小程序promise封装post请求_微信小程序promise封装get/post请求
  3. android 正则表达式3,含有至少3个字符类型的android正则表达式
  4. Opencv深拷贝与浅拷贝
  5. python中split的用法取第二个分片_python中的split()函数的用法
  6. Sql Server中判断表或者数据库是否存在
  7. c# 可选参数与命名实参
  8. Fraunhofer ISE多结太阳能电池效率达30.2%
  9. CSS sprites
  10. HotSpotOverview.pdf