activity_main.xml中
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:id="@+id/register_btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="StartListenerBattery"/>
<TextView
android:id="@+id/battery_value"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="20sp"
android:textColor="#FF0000"
android:gravity="center"/>
</LinearLayout>
MainActivity中
public class MainActivity extends Activity {
private BatteryChangedReceiver batteryChangedReceiver;
private IntentFilter intentFilter1;
private Button registerBtn;
private TextView batteryValue;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
batteryValue = (TextView) findViewById(R.id.battery_value);
registerBtn = (Button) findViewById(R.id.register_btn);
//电量变化的action拦截
batteryChangedReceiver = new BatteryChangedReceiver();
intentFilter1 = new IntentFilter();
intentFilter1.addAction(Intent.ACTION_BATTERY_CHANGED);
//绑定点击事件:实现点击后 在TextView上显示电量信息,
// 因为是点击后显示,所以要在onClick()中注册BroadCastReceiver
registerBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
registerReceiver(batteryChangedReceiver,intentFilter1);//注册
}
});
}
// 接收电量的BroadCastReceiver
class BatteryChangedReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
//获取当前电量
int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);
//获取最大电量
int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, 0);
//计算电量百分比并写到TextView中
batteryValue.setText("当前电量:"+level*100/scale+"%");
}
}
@Override
protected void onDestroy() {
super.onDestroy();
//取消注册
unregisterReceiver(batteryChangedReceiver);
}
}
结果(debug里)
版权声明:本文为qq_48457459原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。