getConnectionInfo()和getScanResults()之间的差异,以检测信号强度的变化

spr*_*lls 6 android rssi wifi

我正在尝试检测wifi连接中的信号强度变化.我对我应该在BroadcastReceiver中使用哪种方法感到困惑.使用getConnectionInfo()和getScanResults()之间有什么区别 - 然后我可以使用相关方法来获取rssi值?

例如:如果我使用getConnectionInfo(),那么稍后我会使用getRssi().或者我可以使用getScanResults()和"level"属性.

我使用Toast显示它们的值,但它并不总是显示相同的值.当wifi conn丢失时,getConnectionInfo().getRssi()显示-200,而result.level仍显示其先前的值.

有什么想法吗?谢谢!

String netSSID = wifi.wifiMgr.getConnectionInfo().getSSID();
int netRSSI = wifi.wifiMgr.getConnectionInfo().getRssi();

List<ScanResult> results = wifi.wifiMgr.getScanResults();
for (ScanResult result : results) {
    if (result.SSID.equalsIgnoreCase(netSSID)) {
        anothernetRSSI = result.level;
    }
}
Run Code Online (Sandbox Code Playgroud)

Com*_*are 1

getScanResults()仅当您使用时才使用startScan()。扫描是异步的,SCAN_RESULTS_AVAILABLE_ACTION完成后发送广播。而且,扫描结果将针对扫描找到的任何接入点,其中可能包括除您所连接的接入点之外的接入点(如果您连接到任何设备)。