Разница между getConnectionInfo() и getScanResults() для обнаружения изменений мощности сигнала

Я пытаюсь обнаружить изменения уровня сигнала в соединении Wi-Fi. Я не понимаю, какой метод мне следует использовать в 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 ответа

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

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

это полезно?

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

Другие вопросы по тегам