6

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

例如:如果我使用 getConnectionInfo(),那么稍后我会使用 getRssi()。或者我可以使用 getScanResults() 和“级别”属性。

我使用 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;
    }
}
4

2 回答 2

2

一言以蔽之,RSSI 仅在您的设备和您连接的接入点之间可用。(RSSi 是您连接的接入点的信号电平)

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

这有用吗?

于 2012-06-02T05:39:33.480 回答
1

getScanResults()仅当您使用startScan(). 扫描是异步的,完成后发送SCAN_RESULTS_AVAILABLE_ACTION广播。而且,扫描结果将针对扫描找到的任何接入点,如果您连接到任何东西,则可能包括您所连接的接入点以外的接入点。

于 2010-12-07T16:25:00.030 回答