我的任务是编写一个应用程序,详细说明不同应用程序消耗的功率。我正在查看PowerProfile类,我不确定它究竟用于什么。类
中有这种方法Returns the average current in mA consumed by the subsystem
Parameters:
type the subsystem type
Returns:
the average current in milliAmps.
public double getAveragePower(String type) {
if (sPowerMap.containsKey(type)) {
Object data = sPowerMap.get(type);
if (data instanceof Double[]) {
return ((Double[])data)[0];
} else {
return (Double) sPowerMap.get(type);
}
} else {
return 0;
}
}
如果我按如下方式测试它:
String POWER_BLUETOOTH_ACTIVE = "bluetooth.active";
String POWER_PROFILE = "com.android.internal.os.PowerProfile";
try{
Constructor[] constructors = Class.forName(POWER_PROFILE).getConstructors();
Constructor c = constructors[0];
Class[] paramTypes = c.getParameterTypes();
Object params = (Object) this.getActivity().getBaseContext();
Object filledObject = c.newInstance(params);
Method batteryMeth1 = Class.forName(POWER_PROFILE).getMethod("getAveragePower", String.class);
Object barglist1[] = new Object[1];
barglist1[0] = new Object[1];
barglist1[0] = POWER_BLUETOOTH_ACTIVE;
double btlife = (Double) btMeth1.invoke(filledObject, barglist1);
Log.d("BatteryLog", "average BT active mAH " + btlife);
btInfo.setText("avg bt mAH is " + btlife);
}
catch (Exception e)
{
Log.d("BTLOg", "average BT active mAH " + btlife);
}
然后我总是得到38.8的蓝牙mAH使用,即使我在运行之间使用我的蓝牙一堆。这是正常的,为什么我总能获得相同的mAH值?
答案 0 :(得分:0)
蓝牙在与其他设备或发送/接收模式配对时消耗功率。配对模式负责发现附近的有源蓝牙,然后第一次建立连接以获得MAC地址&蓝牙的名字。这就像你要打电话给一个美丽的陌生人(配对),它需要很大的勇气,不是吗?然后你可以进行对话(发送/接收模式)。无论是否有数据流,配对模式下的功耗都比蓝牙传输/接收模式更大(更勇气)。但对于嵌入在您设备中的某些蓝牙模块,有一些蓝牙支持的睡眠模式。睡眠模式下的功耗很小。
所以在你的情况下,也许蓝牙已经处于配对模式,所以消耗相同的量。尝试配对蓝牙或发现bluetooth in Android它可能消耗更多的电力