1.獲取Android設備的電池信息需要注冊一個Action為Intent.ACTION_BATTERY_CHANGED的BroadCastReceiver。
2.在BroadcastReceiver的onReceive()事件,接收到的Intent.ACTION_BATTERY_CHANGED,包括下面的信息:
"present" (boolean) ...
"level" (int) …電池剩余容量
"scale" (int) …電池最大值,通常為100。
"icon-small" (int) …圖標ID。
"voltage" (int) …電池的電壓(伏特)
"temperature" (int) …電池的溫度,0.1度單位。例如 表示197的時候,意思為19.7度。
"technology" (String) …電池類型,例如,Li-ion等等。
"plugged" (int) …充電方式:
BatteryManager.BATTERY_PLUGGED_AC:AC充電。
BatteryManager.BATTERY_PLUGGED_USB:USB充電。
"status" (int) …電池狀態:
BatteryManager.BATTERY_STATUS_CHARGING:充電狀態。
BatteryManager.BATTERY_STATUS_DISCHARGING:放電狀態。
BatteryManager.BATTERY_STATUS_NOT_CHARGING:未充滿。
BatteryManager.BATTERY_STATUS_FULL:充滿電。
BatteryManager.BATTERY_STATUS_UNKNOWN:未知狀態。
"health" (int) …健康狀態:
BatteryManager.BATTERY_HEALTH_GOOD:狀態良好。
BatteryManager.BATTERY_HEALTH_DEAD:電池沒有電。
BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE:電池電壓過高。
BatteryManager.BATTERY_HEALTH_OVERHEAT:電池過熱。
BatteryManager.BATTERY_HEALTH_UNKNOWN:未知狀態。
public class BatteryActivity extends Activity{ private BatteryReceiver batteryReceiver; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.battary);
batteryReceiver = new BatteryReceiver(); IntentFilter batteryFilter = new IntentFilter(); batteryFilter.addAction(Intent.ACTION_BATTERY_CHANGED); registerReceiver(batteryReceiver, batteryFilter); } private class BatteryReceiver extends BroadcastReceiver{ @Override public void onReceive(Context arg0, Intent arg1) { int level = arg1.getIntExtra("level", 0); Log.i("Battery", "當前電池的剩余電量為:" + level + "%"); } } @Override protected void onDestroy() { unregisterReceiver(batteryReceiver); super.onDestroy(); } }