Escaneado Wi-Fi sin receptor de difusión?

He creado escáner wi-fi. Analiza continuamente las redes wi-fi disponibles. Pero mi pregunta es ¿por qué exactamente receptor de radiodifusión es necesario si puedo ejecutar el escaneo (invocar startScan() con el temporizador cada x segundos) y recibir los mismos resultados sin la creación de receptor de radiodifusión?

Éste es el código del receptor de difusión en el método onCreate() :

 i = new IntentFilter(); i.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION); receiver = new BroadcastReceiver(){ public void onReceive(Context c, Intent i){ WifiManager w = (WifiManager) c.getSystemService(Context.WIFI_SERVICE); List<ScanResult> l = w.getScanResults(); for (ScanResult r : l) { // do smth with results } // log results } }; 

En el método de exploración, que se invoca después de pulsar el botón de exploración, tengo:

 timer = new Timer(true); timer.schedule(new WifiTimerTask(), 0, scanningInterval); registerReceiver(receiver, i ); 

Donde WifiTimerTask es

 publlic class WifiTimerTask extends TimerTask{ @Override public void run(){ wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); if (wifi.isWifiEnabled()) { wifi.startScan(); List<ScanResult> sc = wifi.getScanResults(); for (ScanResult r : l) { // do smth with results } // log results } } } 

Y el punto es que la exploración se puede realizar sin registerReceiver(receiver,i) . Sin embargo, sólo si scanningInterval es inferior a 2s, los resultados de escaneo del receiver y startScan() no están sincronizados. Por eso quiero decir que los resultados de startScan() no cambian hasta que el receiver obtenga nuevos resultados. Mientras tanto en logCat consigo ERROR/wpa_supplicant(5837): Ongoing Scan action... Parece que 2s es el intervalo de exploración más bajo sin embargo. Por favor, corrija si mis suposiciones son incorrectas.

Cuando llama a startScan() no sabe cuánto tiempo tomará la exploración real (en general, puede ser de 1 ms o 5 horas). Por lo tanto, no puede llamar de forma fiable a getScanResults() ya que no sabe cuándo se ha completado la exploración.

Para realizar un seguimiento del evento cuando cuando getScanResults() devuelva los resultados del análisis de la actualización, debe suscribirse a SCAN_RESULTS_AVAILABLE_ACTION .

  • Android / Java cómo saber el tipo de radio de wifi conectado
  • wifi.getDhcpInfo () en Android devuelve la puerta de enlace IP incorrecta
  • ADB, Wifi y Eclipse: ¿cómo puedo configurar?
  • ¿Puedo obtener la dirección IP del punto de acceso a Estoy conectado a través de wifi?
  • Solucionar 'la aplicación ha detenido' los errores de error
  • Cómo ejecutar wifi peer to peer aplicación en el emulador de Android ..?
  • Android Wifi Direct detecta a sus compañeros pero Peer List es emty
  • WPS Parámetros Wifi NFC y Android
  • Conexión WiFi de Android mediante programación
  • Diferencia entre getConnectionInfo () y getScanResults () para detectar cambios de intensidad de señal
  • ¿Cómo mantiene Google actualizada su base de datos de geolocalización?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.