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