电池状态发生改变的时候系统会发送ACTION_BATTERY_CHANGED广播,通过注册这个广播就可以获得电池的相关状态。
frameworks/base/core/java/android/content/Intent.java
/**
* Broadcast Action: This is a <em>sticky broadcast</em> containing the
* charging state, level, and other information about the battery.
* See {@link android.os.BatteryManager} for documentation on the
* contents of the Intent.
*
* <p class="note">
* You <em>cannot</em> receive this through components declared
* in manifests, only by explicitly registering for it with
* {@link Context#registerReceiver(BroadcastReceiver, IntentFilter)
* Context.registerReceiver()}. See {@link #ACTION_BATTERY_LOW},
* {@link #ACTION_BATTERY_OKAY}, {@link #ACTION_POWER_CONNECTED},
* and {@link #ACTION_POWER_DISCONNECTED} for distinct battery-related
* broadcasts that are sent and can be received through manifest
* receivers.
*
* <p class="note">This is a protected intent that can only be sent
* by the system.
*/
@SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
public static final String ACTION_BATTERY_CHANGED = "android.intent.action.BATTERY_CHANGED";
在frameworks/base/core/java/android/os/BatteryManager.java中定义了很多字段,通过这些预定义字段可以获得电池相关的各种状态信息,主要的状态如下:
字段 |
用途 |
EXTRA_STATUS |
获得电池状态 |
EXTRA_HEALTH |
获得电池健康状态 |
EXTRA_LEVEL |
获得电池电量 |
EXTRA_PLUGGED |
获得充电方式 |
EXTRA_VOLTAGE |
获得电池电压 |
EXTRA_TEMPERATURE |
获得电池温度 |
字段 |
含义 |
BATTERY_STATUS_UNKNOWN |
未知状态 |
BATTERY_STATUS_CHARGING |
充电状态 |
BATTERY_STATUS_DISCHARGING |
放电状态 |
BATTERY_STATUS_NOT_CHARGING |
未充电状态 |
BATTERY_STATUS_FULL |
满电量状态 |
字段 |
含义 |
BATTERY_HEALTH_UNKNOWN |
|
BATTERY_HEALTH_GOOD |
|
BATTERY_HEALTH_OVERHEAT |
|
BATTERY_HEALTH_DEAD |
|
BATTERY_HEALTH_OVER_VOLTAGE |
|
BATTERY_HEALTH_UNSPECIFIED_FAILURE |
|
BATTERY_HEALTH_COLD |
|
字段 |
含义 |
BATTERY_PLUGGED_AC |
充电器充电 |
BATTERY_PLUGGED_USB |
USB充电 |
BATTERY_PLUGGED_WIRELESS |
无线充电 |