2017-08-09 92 views
1

         我想实现一个应用程序,它可以测量室内环境中的WiFi信号的质量。从我的研究中,我发现获得精确测量的最佳方法不是只获得RSSI,而是使用SNR(信噪比)。如何获得Android的WiFi噪音水平?

如何从Android SDK获取噪音级别?据我所知,这里没有可用的API。但是,我发现了一个method,它提供了SNR(getEvdoSnr())。不幸的是,这只适用于GSM/CDMA信号,而不适用于WiFi连接。

是否有可能计算Android中的信噪比?我相信这是可行的,因为我在Play商店中找到了一个应用程序(称为WiFi SNR),该应用程序成功测量了此比率。


注意:Android的ScanResult不提供的噪声水平,即使它的官方文档中自行指定:

介绍有关检测到的接入点信息。除了此处所述的属性之外,请求方还跟踪质量,噪声和maxbitrate属性,但当前不会将它们报告给外部客户端。

回答

1

使用https://developer.android.com/reference/android/net/wifi/ScanResult.html

介绍有关检测到的接入点的信息。除了此处描述的属性,请求方始终跟踪质量,噪音和最大比特属性,但目前不向外部客户报告它们。

我敢打赌,这样的事情会给你想要的信息:

WifiManager manager = (WifiManager) getApplication().getSystemService(Context.WIFI_SERVICE); 
for (ScanResult result : wifiManager.getScanResults()) { 
    // do your stuff 
} 
+0

感谢您的答复。我之前尝试过,没有任何描述噪音水平的相关数据。然而,我已经整合了这个片段,我收到的全部是: 'scanResult = SSID:HI-LINK_006B,BSSID:3c:33:00:a2:00:6a,HESSID:,capabilities:[WPA- PSK-CCMP] [WPA2-PSK-CCMP] [WPS] [ESS],等级:-85,频率:2412,时间戳:101848429875,距离:?(cm),distanceSd:?(cm)' –

+0

在API中:**'使用calculateSignalLevel(int,int)'将此数字转换为可以显示给用户的绝对信号电平。 –

+0

好的,这种方法确实用于分类功率强度(按等级),但仍然用于RSSI信号。我从ScanResults收到的信息不包含噪声信号(以RSSI表示为dBm)。噪音应该是分开的测量。 –