今天在做一个小项目,需要监听手机电量,然后就试着做了一下。
下面是主要代码和步骤:
<pre name="code" class="java">public class MainActivity extends Activity {
private TextView textView;
private BatteryBroadCastReceiver castReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.textView1);
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
castReceiver = new BatteryBroadCastReceiver();
IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
registerReceiver(castReceiver, filter);
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
unregisterReceiver(castReceiver);
}
private class BatteryBroadCastReceiver 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 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>