Estoy tratando de detectar cambios en la intensidad de la señal en una conexión wifi. Estoy confundido de qué método debo usar en mi BroadcastReceiver. ¿Cuál es la diferencia entre usar getConnectionInfo() y getScanResults() - desde donde puedo usar el método relevante para obtener el valor de rssi?diferencia entre getConnectionInfo() y getScanResults() para detectar cambios en la intensidad de la señal
Por ejemplo: si uso getConnectionInfo(), luego uso I getRssi(). O podría usar getScanResults() y la propiedad "level".
Muestro sus valores usando Toast y no siempre muestra los mismos valores. Cuando se pierde la conexión wifi, getConnectionInfo(). GetRssi() muestra -200, mientras que result.level aún muestra su valor anterior.
¿Alguna idea? ¡Gracias!
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;
}
}
* Por favor, vea el fragmento de código * Ahí utilizo esos dos métodos para detectar el valor rssi de la conexión actual. Y sí, uso startScan(). Ok, entonces en este caso no es correcto usar getConnectionInfo(). GetRssi()? ¿Qué hay de enviar la transmisión de RSSI_CHANGED_ACTION y luego usar intent.getIntExtra (WifiManager.EXTRA_NEW_RSSI, 0) para obtener el nuevo valor de rssi? ¿Es este también el mismo caso que SCAN_RESULTS_AVAILABLE_ACTION, que recupera los puntos de acceso? Entonces, ¿podría devolver el valor rssi de otro AP siempre que el valor sea diferente al anterior? – springrolls
De acuerdo con un libro que acabo de leer, RSSI_CHANGED_ACTION da el rssi actual de la red wifi conectada. Entonces, según entiendo, podemos usar uno de los tres métodos para mostrar los cambios rssi. Pero hay una condición específica para cada uno: 1. Si transmite SCAN_RESULTS_AVAILABLE_ACTION (y por lo tanto, use startScan()), use getScanResults() y recupere la propiedad "level" para la red a la que está conectado actualmente. 2. Utilice getConnectionInfo(). GetRssi() actualizado cada x segundos. 3. O si transmite RSSI_CHANGED_ACTION, use el EXTRA_NEW_RSSI, que en mi caso debería servir mejor para detectar cambios de rssi. – springrolls