Android電池電量檢測
電池的信息,電壓,溫度,充電狀態等等,都是由BatteryService來提供的。電池的這些信息是BatteryService通過廣播 主動把數據傳送給所關心的應用程序。
應用如果想要接收到BatteryService發送出來的電池信息,則需要注冊一個Intent為Intent.ACTION_BATTERY_CHANGED的BroadcastReceiver。
代碼如下: IntentFilter mIntentFilter = new IntentFilter();
mIntentFilter.addAction(Intent.ACTION_BATTERY_CHANGED);
registerReceiver(mIntentReceiver, mIntentFilter);
private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
String action = intent.getAction();
if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {
// 電池狀態,返回是一個數字
// BatteryManager.BATTERY_STATUS_CHARGING 表示是充電狀態
// BatteryManager.BATTERY_STATUS_DISCHARGING 放電中
// BatteryManager.BATTERY_STATUS_NOT_CHARGING 未充電
// BatteryManager.BATTERY_STATUS_FULL 電池滿
int status = intent.getIntExtra("status", 0); // 電池狀態
// 電池健康情況,返回也是一個數字
// BatteryManager.BATTERY_HEALTH_GOOD 良好
// BatteryManager.BATTERY_HEALTH_OVERHEAT 過熱
// BatteryManager.BATTERY_HEALTH_DEAD 沒電
// BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE 過電壓
// BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE 未知錯誤
int health = intent.getIntExtra("health", 0); //電池健康情況
int scale = intent.getIntExtra("scale", 0); // 電池最大容量
int nVoltage = intent.getIntExtra("voltage", 0); // 電池的電壓
int level = intent.getIntExtra("level", 0); // 電池的電量,數字
int temperature = intent.getIntExtra("temperature", 0); // 電池的溫度
if (nVoltage != 0) {
tv_status.setText("電池電量:" + level + "%");
Log.i(TAG, "voltage = " + nVoltage + " level = " + level
+ " temperature = " + temperature + "...success");
} else {
Log.i(TAG, "voltage = " + nVoltage + "...failed");
}
}
}
};