首页 > 代码库 > Android BroadcastReceiver实时监听电量
Android BroadcastReceiver实时监听电量
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
@Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); reciver=new BatteryBroadcastReciver(); //创建一个过滤器 IntentFilter intentFilter=new IntentFilter(Intent.ACTION_BATTERY_CHANGED); registerReceiver(reciver, intentFilter); } @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); unregisterReceiver(reciver); }
(3)继承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实时监听电量
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。