电池的电量是手机用户为关心问题之一,而在Android系统中,专门提供了一个取得电池电量信息的Action——ACTION_BATTERY_CHANGED,在此Action中定义了许多附加信息的名称和作用,如下表
下面通过一个程序来观察如何获取电池电量信息,该程序采用广播的形式取得电池的剩余电量
package com.cjl.android_36_getbatteryinfo;
import android.app.Activity; import android.app.AlertDialog.Builder; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener;
public class MainActivity extends Activity implements OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.button1).setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// 注册广播接收器,当系统电量改变时或第一次注册时,收到广播,获取电池电量信息
registerReceiver(batteryReceiver, new IntentFilter(
Intent.ACTION_BATTERY_CHANGED));
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
unregisterReceiver(batteryReceiver);
}
private BroadcastReceiver batteryReceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent) {
//取得电池剩余容量
int level = intent.getIntExtra("level", 0);
//取得电池总容量
int scale = intent.getIntExtra("scale", 100);
//创建对话框,显示电池信息
Builder builder = new Builder(MainActivity.this);
builder.setTitle("电池电量");
builder.setMessage("电量:" + (level*100)/scale + "%");
builder.setNeutralButton("确定", null);
builder.create();
builder.show();
}
};
}
程序的运行结果,如下图所示