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(); } } } }
时间: 2024-10-27 01:03:15