0. demo 下載
https://github.com/sufadi/BatteryInfo
1. 電池廣播獲取充電狀態
// 電池狀態
import static android.os.BatteryManager.EXTRA_STATUS;
// 未知
import static android.os.BatteryManager.BATTERY_STATUS_UNKNOWN;
// 充電中
import static android.os.BatteryManager.BATTERY_STATUS_CHARGING;
// 放電中
import static android.os.BatteryManager.BATTERY_STATUS_DISCHARGING;
// 未充電
import static android.os.BatteryManager.BATTERY_STATUS_NOT_CHARGING;
// 電池滿
import static android.os.BatteryManager.BATTERY_STATUS_FULL;
private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (null == intent) {
return;
}
String action = intent.getAction();
if (Intent.ACTION_BATTERY_CHANGED.equals(action)) {
int status = intent.getIntExtra(EXTRA_STATUS, BATTERY_STATUS_UNKNOWN);
...
private String getStatus(int status) {
String result = getString(R.string.battery_status_unknown);
switch (status) {
case BATTERY_STATUS_FULL:
result = getString(R.string.battery_status_full);// 充滿電
break;
case BATTERY_STATUS_NOT_CHARGING:
result = getString(R.string.battery_status_not_charging); // 未充電
break;
case BATTERY_STATUS_DISCHARGING:
result = getString(R.string.battery_status_discharging);// 放電中
break;
case BATTERY_STATUS_CHARGING:
result = getString(R.string.battery_status_charging);// 充電中
break;
case BATTERY_STATUS_UNKNOWN:// 未知
break;
}
return result;
}
2. 充電器類型
// 充電器類型
import static android.os.BatteryManager.EXTRA_PLUGGED;
// 充電器
import static android.os.BatteryManager.BATTERY_PLUGGED_AC;
// 其他
import static android.os.BatteryManager.BATTERY_PLUGGED_ANY;
// USB
import static android.os.BatteryManager.BATTERY_PLUGGED_USB;
// 無線充電
import static android.os.BatteryManager.BATTERY_PLUGGED_WIRELESS;
private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (null == intent) {
return;
}
String action = intent.getAction();
if (Intent.ACTION_BATTERY_CHANGED.equals(action)) {
int plugged = intent.getIntExtra(EXTRA_PLUGGED, BATTERY_PLUGGED_ANY);
...
private String getPlugged(int plugged) {
String result = getString(R.string.battery_plugged_any);
switch (plugged) {
case BATTERY_PLUGGED_ANY:
// 其他
break;
case BATTERY_PLUGGED_AC:
// 充電器
result = getString(R.string.battery_plugged_ac);
break;
case BATTERY_PLUGGED_USB:
// USB
result = getString(R.string.battery_plugged_usb);
break;
case BATTERY_PLUGGED_WIRELESS:
// 無線充電
result = getString(R.string.battery_plugged_wireless);
break;
}
return result;
}
具體鍵值
// values of the "plugged" field in the ACTION_BATTERY_CHANGED intent.
// These must be powers of 2.
/** Power source is an AC charger. */
public static final int BATTERY_PLUGGED_AC = 1;
/** Power source is a USB port. */
public static final int BATTERY_PLUGGED_USB = 2;
/** Power source is wireless. */
public static final int BATTERY_PLUGGED_WIRELESS = 4;
/** @hide */
public static final int BATTERY_PLUGGED_ANY =
BATTERY_PLUGGED_AC | BATTERY_PLUGGED_USB | BATTERY_PLUGGED_WIRELESS;
3. 獲取電池是否充電接口
package com.android.settings.fuelgauge;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.BatteryManager;
import android.util.Log;
public class InonePowerSaveUtil {
public static final boolean IS_CHARGE_DISABLE = true;
public static boolean isChargingDisable(Context context) {
return IS_CHARGE_DISABLE && isCharging(context);
}
public static boolean isCharging(Context context) {
Intent batteryBroadcast = context.registerReceiver(null,
new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
// 0 means we are discharging, anything else means charging
boolean isCharging = batteryBroadcast.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1) != 0;
Log.d(InonePowerSaveUtil.class.getSimpleName(),"isCharging = " + isCharging );
return isCharging;
}
}