BATTERY_PROPERTY_CURRENT_NOW无法在每台设备上运行。什么是替代品?

时间:2017-06-26 11:19:38

标签: java android

我的应用使用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。

其他应用甚至在该设备上显示当前的内容。他们是如何做到的呢?我的方法有哪些替代方案?

3 个答案:

答案 0 :(得分:0)

从您的问题(“仅返回0”)开始,请查看有关getIntProperty的文档: https://developer.android.com/reference/android/os/BatteryManager#getIntProperty(int)

如果不支持该属性或出现任何其他错误,请返回

(a)如果targetSdkVersion

为0

(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)