我正在尝试制作一个可以测量检测到的 Wifi 信号强度的应用程序。
我正在使用此代码
for (int i=0; i<size; i++){
ScanResult scanresult = wifi.getScanResults().get(i);
int rssi = scanresult.level;
}
我想问的是,由于结果总是负数(-67、-88、-90 等),值是什么意思?是损耗还是接收信号电平?
感谢你的回答
引用文档level
:
以 dBm 为单位的检测到的信号电平。至少这些是 TI 驱动程序使用的单位。
您看到负值的原因是您在对数刻度上表示小而正的数字。在对数中,指示的值表示指数...例如,在 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 要容易得多,也更有用。
您可以像这样使用 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);
您可以访问此来源。
-49, -47 表示信号非常好,就像基于 dBm 的文档说的那样。