Android 获取电池电量(广播获取和BatteryManager获取和执行命令获取)
方法一:注册广播(被动接受)
IntentFilter filter2 = new IntentFilter();
filter2.addAction(Intent.ACTION_BATTERY_CHANGED);
registerReceiver(filter2,receiver);
接收到广播后,用getIntExtra("level")和getIntExtra("scale")获得相应值
intent.getIntExtra("level", 0);
intent.getIntExtra("scale", 0);
intent.getStringExtra("technology");
intent.getIntExtra("status",BatteryManager.BATTERY_STATUS_UNKNOWN);
intent.getIntExtra("plugged", 0);
intent.getIntExtra("health",BatteryManager.BATTERY_HEALTH_UNKNOWN);
intent.getIntExtra("voltage", 0);
intent.getIntExtra("temperature", 0);
方法二:通过执行命令(不需要root)
通过 adb shell dumpsys battery,返回结果后有电池的各种信息,其中就包括level(百分比)
C:\Users\ShawnXia>adb shell dumpsys battery
Current Battery Service state:
AC powered: false
USB powered: true
Wireless powered: false
Max charging current: 500000
Max charging voltage: 5000000
Charge counter: 4149000
status: 2
health: 2
present: true
level: 95
scale: 100
voltage: 4244
temperature: 250
technology: Li-ion
方法三:通过 BatteryManager
API >= 21 (5.0,L)
BatteryManager manager = (BatteryManager) getSystemService(BATTERY_SERVICE);
manager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CHARGE_COUNTER);
manager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CURRENT_AVERAGE);
manager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CURRENT_NOW);
manager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY);
API >= 26 (8.0,O)
manager.getIntProperty(BatteryManager.BATTERY_PROPERTY_STATUS);