Sto facendo la mia tesi di Master al momento sul posizionamento WiFi e per testare i miei algoritmi avevo bisogno di raccogliere alcuni dati.Esiste un modo per controllare esplicitamente gli intervalli di scansione WiFi in Android?
Per fare ciò ho scritto un programma breve e molto semplice per Android che raccoglie semplicemente l'RSSI per tutti i punti di accesso disponibili trovati da ciascuna scansione e li salva in un file. Ho creato un BroadcastReceiver
che ascolta l'evento WifiManager.SCAN_RESULTS_AVAILABLE_ACTION
e io uso un Timer
, che qui si chiama Tim, per avviare scansioni con un WifiManager
, chiamato wifi come segue:
tim.schedule(new TimerTask(){
@Override
public void run(){
wifi.startScan();
}
}, 0, 1000);
Il problema che sto avendo ora è che il le scansioni avviate non sembrano accadere ogni secondo anche se riesco ad iniziarle e ogni tanto ci sono altre scansioni avviate da qualche altra app che viene registrata anche.
C'è un modo semplice per scansionare su un intervallo impostato e non ricevere le scansioni avviate da qualche altra app?
L'intera app può essere trovata su https://github.com/while/RSSIMiner se aiuta in qualche modo.
Grazie per la risposta, anche se non è stata una grande notizia. Temevo che fosse così. Ho provato l'app in un Galaxy nexus e un Nexus 7 entrambi in esecuzione jellybean (+), quindi senza fortuna neanche lì. Il problema è che il mio modello assume intervalli regolari, quindi suppongo che dovrò cambiarlo per gestire intervalli di scansione non omogenei. – while
La cosa strana è che riesce a scansionare da qualche parte intorno agli intervalli di 1 sec se è impostato su 500ms, quindi deve supportarlo hardware. – while
Sì, come ho suggerito nella prima soluzione: dovresti scegliere e utilizzare solo i risultati richiesti, non tutti i risultati ottenuti. Questo ti aiuterà a risolvere entrambi i problemi. – Jong