Ich mache meine Masterarbeit im Moment über WiFi-Positionierung und um meine Algorithmen zu testen, musste ich einige Daten sammeln.Gibt es eine Möglichkeit, WLAN-Scan-Intervalle in Android explizit zu steuern?
Dazu habe ich ein kurzes und sehr einfaches Programm für Android geschrieben, das einfach den RSSI für alle bei jedem Scan verfügbaren Zugriffspunkte sammelt und in Datei speichert. Ich habe eine BroadcastReceiver
einrichten, die auf den Fall hört WifiManager.SCAN_RESULTS_AVAILABLE_ACTION
und ich verwende eine Timer
, hier genannt tim, um Scans zu initiieren mit einem WifiManager
, genannt wifi wie folgt:
tim.schedule(new TimerTask(){
@Override
public void run(){
wifi.startScan();
}
}, 0, 1000);
Das Problem, das ich jetzt habe, ist, dass die Angestoßene Scans scheinen nicht jede Sekunde zu passieren, selbst wenn es mir gelingt, sie zu initiieren, und ab und zu gibt es andere Scans, die von einer anderen App initiiert werden, die ebenfalls aufgezeichnet wird.
Gibt es eine einfache Möglichkeit, in einem festgelegten Intervall zu scannen und die von einer anderen App initiierten Scans nicht zu erhalten?
Die ganze App kann auf https://github.com/while/RSSIMiner gefunden werden, wenn es in irgendeiner Weise hilft.
Danke für die Antwort, obwohl es keine gute Nachricht war. Ich befürchtete, dass dies der Fall war. Ich habe die App in einem Galaxy Nexus und einem Nexus 7 sowohl mit laufender Jellybean (+) ausprobiert als auch kein Glück da. Das Problem ist, dass mein Modell regelmäßige Intervalle annimmt, also muss ich es ändern, um nicht homogene Scanintervalle zu verarbeiten. – while
Das seltsame Ding ist, es schafft es, irgendwo um 1sec Intervalle zu scannen, wenn auf 500ms eingestellt, so dass es es hardwaretechnisch unterstützen muss. – while
Ja, wie ich in der ersten Lösung vorgeschlagen habe - Sie sollten nur die gewünschten Ergebnisse auswählen und verwenden, nicht jedes Ergebnis, das Sie erhalten. Dies wird Ihnen helfen, beide Probleme zu beheben. – Jong