我的应用使用BatteryManager.BATTERY_PROPERTY_CURRENT_NOW来获取设备的电池电流:
BatteryManager batteryManager = (BatteryManager) context.getSystemService(Context.BATTERY_SERVICE);
int current = batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CURRENT_NOW), context);
然而,例如在三星Galaxy Tab A上它不起作用。它只返回0。
其他应用甚至在该设备上显示当前的内容。他们是如何做到的呢?我的方法有哪些替代方案?
答案 0 :(得分:0)
从您的问题(“仅返回0”)开始,请查看有关getIntProperty的文档: https://developer.android.com/reference/android/os/BatteryManager#getIntProperty(int)
如果不支持该属性或出现任何其他错误,请返回
(a)如果targetSdkVersion
或
(b)如果targetSdkVersion> = VERSION_CODES.P,则为整数MIN_VALUE。
答案 1 :(得分:0)
使用此方法:
int getBatteryPercent(Context context) {
Intent intent = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
if (intent != null) {
int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
return level * 100 / scale;
}
return 0;
}
答案 2 :(得分:-3)
尝试一下:
BatteryManager batteryManager = (BatteryManager) context.getSystemService(Context.BATTERY_SERVICE);
int current = batteryManager.getIntProperty(BatteryManager.EXTRA_LEVEL), context)