在android中计算电池电量的两种方法有什么区别?

时间:2013-07-10 15:18:56

标签: android batterylevel

在我的应用程序中我显示电池电量..我以这种方式获得电池电量:

int level = battery.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);

没关系,我可以看到百分比..但在线我找到了另一种方式:

int level = battery.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
int scale = battery.getIntExtra(BatteryManager.EXTRA_SCALE, -1);

float batteryPct = level / (float)scale;

有什么区别?为什么我会用水平划分水平?感谢

2 个答案:

答案 0 :(得分:1)

根据Android docs,SCALE是最大值:

  

public static final String EXTRA_SCALE

     

在API级别5中添加额外的ACTION_BATTERY_CHANGED:整数   包含最大电池电量。

     

常数值:“比例”

LEVEL是当前级别:

  

public static final String EXTRA_LEVEL

     

在API级别5中添加额外的ACTION_BATTERY_CHANGED:整数字段   包含当前电池电量,从0到EXTRA_SCALE。

     

常数值:“等级”

所以基本上,第一个给你一个绝对数字,第二个给你一个百分比。

答案 1 :(得分:1)

嗯,你得到不同的数字:)

比例是integer containing the maximum battery level.因此,使用第二种方法,您可以获得剩余的百分比(因此称为batteryPct)。首先,你得到电池电量的绝对值。它被定义为integer field containing the current battery level, from 0 to EXTRA_SCALE.