Android之BroadcastReceiver监听手机电量

来源:互联网 发布:弱电安防预算软件 编辑:程序博客网 时间:2024/04/28 09:48

今天在做一个小项目,需要监听手机电量,然后就试着做了一下。

下面是主要代码和步骤:

<pre name="code" class="java">public class MainActivity extends Activity {private TextView textView;private BatteryBroadCastReceiver castReceiver;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);textView = (TextView) findViewById(R.id.textView1);}@Overrideprotected void onResume() {// TODO Auto-generated method stubsuper.onResume();castReceiver = new BatteryBroadCastReceiver();IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);registerReceiver(castReceiver, filter);}@Overrideprotected void onPause() {// TODO Auto-generated method stubsuper.onPause();unregisterReceiver(castReceiver);}private class BatteryBroadCastReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {// TODO Auto-generated method stubif (intent.getAction().equals(Intent.ACTION_BATTERY_CHANGED)) {// 获取当前电量int level = intent.getIntExtra("level", 0);// 获取总电量int scale = intent.getIntExtra("scale", 0);textView.setText("当前手机电量为:" + (level * 100) / scale + "%");}}}}

1、在onResume()方法中初始化广播对象,

castReceiver = new BatteryBroadCastReceiver();

并且动态添加监听手机电量的意图过滤,

IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);

然后绑定广播事件。

registerReceiver(castReceiver, filter);
2、在onPause()方法中解除绑定。

unregisterReceiver(castReceiver);
3、在类BatteryBroadCastReceiver的onReceive(Context context, Intent intent)方法中接收处理广播。

if (intent.getAction().equals(Intent.ACTION_BATTERY_CHANGED)) {// 获取当前电量int level = intent.getIntExtra("level", 0);// 获取总电量int scale = intent.getIntExtra("scale", 0);textView.setText("当前手机电量为:" + (level * 100) / scale + "%");}
4、需要用到的权限。

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







</pre><pre>

1 0
原创粉丝点击