我正在尝试使用Wifimanager来计算扫描期间找到的接入点的信号电平.
我使用以下方法:
WifiManager.calculateSignalLevel(int, int)
但无论RSSI级别如何,它似乎总是返回相同的int.
这是我的代码:
public int calculateQoS(int aRSSI){
signalLevel = WifiManager.calculateSignalLevel(RSSI, 5);
return signalLevel;
}
public void testCalculateQoS(){
Log.d("signal", "signal = : "
+ connMonitor.calculateQoS(-44)
+ " " + connMonitor.calculateQoS(-80)
+ " " + connMonitor.calculateQoS(-120)
+ " " + connMonitor.calculateQoS(-20));
}
对于calculateQoS(int)的所有测试用例,日志输出1.
我错过了一些简单的东西吗?为什么SignalLevel总是1?
解决方法:
似乎calculateSignalLevel以这种方式实现:
public static int calculateSignalLevel(int rssi, int numLevels) {
if (rssi <= MIN_RSSI) {
return 0;
} else if (rssi >= MAX_RSSI) {
return numLevels - 1;
} else {
int partitionSize = (MAX_RSSI - MIN_RSSI) / (numLevels - 1);
return (rssi - MIN_RSSI) / partitionSize;
}
}
也许这段代码可以解释你的问题.另请注意:
http://code.google.com/p/android/issues/detail?id=2555