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

时间:2010-12-07 15:22:05

标签: android wifi rssi

我正在尝试检测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;
    }
}

2 个答案:

答案 0 :(得分:2)

简而言之,RSSI仅在您连接到它的设备和接入点之间可用。 (RSSi是您连接到它的接入点的信号电平)

但是当你想要获得所有范围内wifi接入点的等级时,你应该使用startScan并获取scanResult并获取每个范围内wifi接入点的等级属性。

这有用吗?

答案 1 :(得分:1)

仅在使用getScanResults()时才使用startScan()。扫描是异步的,在完成时发送SCAN_RESULTS_AVAILABLE_ACTION广播。并且,扫描结果将用于扫描找到的任何接入点,如果您连接到任何接入点,可能包括您所连接的接入点以外的接入点。