Android 獲取電池是否充電狀態、充電器型別
阿新 • • 發佈:2018-11-21
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;
}
}