1

我正在尝试制作一个可以测量检测到的 Wifi 信号强度的应用程序。

我正在使用此代码

for (int i=0; i<size; i++){
   ScanResult scanresult = wifi.getScanResults().get(i);
   int rssi = scanresult.level;
}

我想问的是,由于结果总是负数(-67、-88、-90 等),值是什么意思?是损耗还是接收信号电平?

感谢你的回答

4

3 回答 3

2

引用文档level

以 dBm 为单位的检测到的信号电平。至少这些是 TI 驱动程序使用的单位。

引用一个旧alt.internet.wireless帖子

您看到负值的原因是您在对数刻度上表示小而正的数字。在对数中,指示的值表示指数...例如,在 log 10 刻度下,-2 的值表示 10 的 -2 次方,等于 0.01。同样,负 dBm 意味着您在功率计算中应用了负指数。0 dBm 等于 1 mW 的功率,因此 -10 dBm 等于 0.1 mW,-20 dBm 等于 0.01 mW,依此类推。在某些计算中,将微弱信号描述为 -100 dBm 而不是 0.0000000001 mW 要容易得多,也更有用。

于 2013-09-07T13:28:23.257 回答
2

您可以像这样使用 WifiManager 形式的 calculateSignalLevel 方法:

int range = 5; //the range of integers you want to match the level (in this case it will be from 0 to 4)

int signalStrength = WifiManager.calculateSignalLevel(rssi, range);

您可以访问此来源。

于 2018-03-03T07:10:04.353 回答
0

-49, -47 表示信号非常好,就像基于 dBm 的文档说的那样。

于 2014-07-03T14:05:22.963 回答