我正在尝试检测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;
}
}
答案 0 :(得分:2)
简而言之,RSSI仅在您连接到它的设备和接入点之间可用。 (RSSi是您连接到它的接入点的信号电平)
但是当你想要获得所有范围内wifi接入点的等级时,你应该使用startScan并获取scanResult并获取每个范围内wifi接入点的等级属性。
这有用吗?
答案 1 :(得分:1)
仅在使用getScanResults()
时才使用startScan()
。扫描是异步的,在完成时发送SCAN_RESULTS_AVAILABLE_ACTION
广播。并且,扫描结果将用于扫描找到的任何接入点,如果您连接到任何接入点,可能包括您所连接的接入点以外的接入点。