我正在构建一个应用程序来收集我周围的AP的RSSI级别,并根据它进行一些计算。
问题是即使设备静止,读数也不稳定。例如,来自接入点的信号在-71,-68,-75之间波动等等......
有没有办法稳定信号?
答案 0 :(得分:2)
在电信领域,接收信号强度指示器(RSSI)是对接收到的无线电信号中存在的功率的测量。
我认为你能做到的最好的事情就是将它们统计在一起并在经过x倍的测量时间之后将它们分开。 (因为各种组件,你永远不会得到100%准确的访问点)。
源: http://en.wikipedia.org/wiki/Received_signal_strength_indication
答案 1 :(得分:1)
“问题是即使设备静止,读数也不稳定。例如,来自接入点的信号在-71,-68,-75之间波动等等......”
这是无线信号的本质。即使设备静止,环境也在“移动”,因此,信号受到小规模衰落的影响,主要是由于环境散射体。因此,在器件测量中获得这些波动是正常的。
每个Android设备Wi-Fi测量的准确性都是另一回事。
此外,请记住,返回的值以dBm为单位,这意味着以mWatt为单位,但以对数刻度表示。因此,正如Thealon提出的平均值,你必须要小心,因为你不能忽略dBm值。
一种解决方案是将dBm值转换回mWatt,然后执行平均。如下所示
Convert dBm to mWatt: mWatt = 10^(dBm/10)
答案 2 :(得分:0)
获得RSSI时,Google建议:
Use calculateSignalLevel(int, int) to convert this number into an absolute signal level which can be displayed to a user.