разница между getConnectionInfo () и getScanResults () для обнаружения изменений мощности сигнала - PullRequest
6 голосов
/ 07 декабря 2010

Я пытаюсь обнаружить изменения уровня сигнала в Wi-Fi-соединении. Я не понимаю, какой метод мне следует использовать в моем BroadcastReceiver. В чем разница между использованием getConnectionInfo () и getScanResults () - из чего я могу использовать соответствующий метод для получения значения rssi?

Например: если я использую getConnectionInfo (), то позже я использую getRssi (). Или я мог бы использовать getScanResults () и свойство level.

Я отображаю их значения с помощью Toast, и они не всегда показывают одинаковые значения. Когда соединение Wi-Fi потеряно, 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 ]

2 голосов
/ 02 июня 2012

Одним словом, RSSI доступен только между вашим устройством и точкой доступа, к которой вы подключены.(RSSi - это уровень сигнала точки доступа, к которой вы подключены)

, но когда вы хотите получить уровень всех точек доступа Wi-Fi в диапазоне, вы должны использовать startScan и получить scanResult и получить свойство levelдля каждой точки доступа Wi-Fi в диапазоне.

это полезно?

1 голос
/ 07 декабря 2010

Вы используете getScanResults() только если вы используете startScan(). Сканирование выполняется асинхронно, отправляя сообщение SCAN_RESULTS_AVAILABLE_ACTION по завершении. Кроме того, результаты сканирования будут относиться к любым точкам доступа, найденным при сканировании, которые могут включать точки доступа, отличные от той, к которой вы подключены, если вы подключены к чему-либо.

...