电池
检测设备相关硬件数据。
Battery
获取电池信息,需要注册 Intent.ACTION_BATTERY_CHANGED
获取系统电池状态。
是否有电池
通过Intent.ACTION_BATTERY_CHANGED
方式获取。返回值是boolean
值,判断是有有电池。
boolan isPresent = intent.getBooleanExtra(BatteryManager.EXTRA_PRESENT);
充电状态
通过Intent.ACTION_BATTERY_CHANGED
方式获取。可以是以下值中的一个:
BATTERY_STATUS_CHARGING
正在充电。BATTERY_STATUS_DISCHARGING
放电。BATTERY_STATUS_FULL
电充满。BATTERY_STATUS_NOT_CHARGING
不在充电。BATTERY_STATUS_UNKNOWN
未知。
电池状态值。
// 可以获取当前电池是否正在充电,或已经充满,均属于充电状态。
int state = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
充电方式
获取电池plugged信息。目前官方提供的充电方式,总的有4中:
BatteryManager.BATTERY_PLUGGED_AC
BatteryManager.BATTERY_PLUGGED_USB
BatteryManager.BATTERY_PLUGGED_WIRELESS
BatteryManager.BATTERY_PLUGGED_DOCK
最后一个是高版本 Api Level 33中新增。
// 获取充电方式,可以是usb,ac充电,无线充电(wireless)等。
int plugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0);
电量
获取电池电量。
获取剩余电量,没有小数部分的数值。
// Android 5.0以上
BatteryManager bm = (BatteryManager) context.getSystemService(Context.BATTERY_SERVICE);
int remaining = bm.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY);
另外获取电量的方式。
通过Intent.ACTION_BATTERY_CHANGED
方式获取,从intent中读取 EXTRA_LEVEL
, EXTRA_SCALE
值进行计算。
int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
float batteryPercent = level * 100 * 1.0f/ scale;
温度
获取电池温度。通过接收Intent.ACTION_BATTERY_CHANGED
广播获取温度信息。
int temperature = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE);
电压
电池电压信息。通过接收Intent.ACTION_BATTERY_CHANGED
广播获取温度信息。
int voltage = intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE);
电池健康状况
获取电池状态信息。通过接收Intent.ACTION_BATTERY_CHANGED
广播获取温度信息。
通过常量key BatteryManager.EXTRA_HEALTH
获取int值。可以是下列几个之一:
BATTERY_HEALTH_UNKNOWN
未知。BATTERY_HEALTH_GOOD
良好。BATTERY_HEALTH_OVERHEAT
过热。BATTERY_HEALTH_DEAD
死机。BATTERY_HEALTH_OVER_VOLTAGE
电压过载。BATTERY_HEALTH_UNSPECIFIED_FAILURE
未知失败。BATTERY_HEALTH_COLD
低温。
int health = intent.getIntExtra(BatteryManager.EXTRA_HEALTH);