Estoy construyendo una aplicación que lee la intensidad de la señal de cada punto de acceso WiFi disponible. código¿Cómo obtener la fuerza de conexión de los puntos de acceso Wifi?
que he escrito como:
wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
// Get WiFi status
WifiInfo info = wifi.getConnectionInfo();
textStatus.append("\n\nWiFi Status: " + info.toString());
// List available networks
List<WifiConfiguration> configs = wifi.getConfiguredNetworks();
Sin embargo, tengo dos problemas:
En la depuración,
configs
sólo contiene una conexión. Sin embargo, puedo ver que hay varios AP disponibles en la configuración wifi del sistema. Es decir.configs
es una lista incompleta.No sé cómo obtener la potencia de la señal en
WifiConfiguration
.
btw, estoy usando HTC Hero y Android 1.5.
¿Cuánto tiempo quiere decir exactamente por "un tiempo"? ¿No hay alguna llamada de bloqueo a este método API? – Hosane
Por lo general, es de 2 a 10 segundos (sin embargo, no hay restricciones implícitas). Pero tenga en cuenta que puede omitir algunos puntos de acceso visibles si escanea demasiado. Los puntos de acceso Wi-Fi son detectados por paquetes especiales de difusión (llamados "beacons") que se emiten periódicamente. Escanear en busca de puntos de acceso en realidad significa escuchar los faros y recopilarlos. http://www.wi-fiplanet.com/tutorials/article.php/1492071 –
No hay función síncrona para todo el proceso. Aunque puede llamar a getScanResults() para obtener resultados de un escaneo previo realizado por el sistema. Tal vez los resultados sean lo suficientemente recientes para su propósito. Sin embargo, no espero que sea bueno si tiene una conexión WiFi activa: creo que los componentes del sistema Android no ejecutan escaneos cuando hay una buena conexión. Simplemente no hay razón para hacer eso. –