方法一只能查看
方法二可以在代码中直接获取
方法三让系统主动告诉你, 及时获取无延迟
方法一: 使用adb直接查看
如果不需要在程序中使用电量信息只是要查看一下电量的话(你直接看显示不好吗? 话说有些智能设备没有屏幕的)
可以使用命令查看
adb shell dumpsys battery
一般结果如下
Current Battery Service state:
AC powered: false //是否正在使用交流电充电
USB powered: true //是否正在使用其他设备USB接口充电
Wireless powered: false //是否是无线充电
status: 2 //状态
health: 2 //电池健康程度
present: true //当前量是否为百分比
level: 77 //当前量
scale: 100 //总量
voltage: 4130000 //电压
temperature: 389 //温度
technology: Li-ion //电池类型
方法二:使用电池服务
安卓6及以上
batteryManager = getSystemService(BatteryManager.class);
安卓6以下
batteryManager = (BatteryManager) getSystemService(Context.BATTERY_SERVICE);
方法三: 注册接收器
新建一个类, 使用该类继承于BroadcastReceiver, 实现onReceive方法.
在Activity, Service或AndroidManifest.xml中注册接收器
final BroadcastReceiver mBatteryReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
//当前电量
final int level = intent.getIntExtra("level", 0);
//总电量
final int scale = intent.getIntExtra("scale", 100);
//电量百分比
mPower = level * 100 / scale;
}
};
在代码中注册
registerReceiver(mBatteryReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
在AndroidManifest.xml文件中注册
<application>
...
<receiver>
<intent-filter>
<action>
/<intent-filter>
/<receiver>
...
/<application>
当前电池电量发生变量的时候会系统会回调接收器的onReceive方法, 在onReceive方法中可以获取当前电量
因为这种方法是系统在电量变化主动通知应用程序,所有这种方法是非常及时的