2010-11-22 12 views
3

Ich habeandroid LocationManager.requestLocationUpdates mit MINTIME> 0 nicht wie erwartet funktioniert

 
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 60000, 0f, this);

es hat ein merkwürdiges Verhalten, wird Location jede Sekunde statt jederzeit nahe zu 1 Minute genannt. Zweitens wird locationChanged jede Sekunde für etwa 10 Sekunden aufgerufen, stoppt dann vollständig, das Symbol gps satalites verschwindet und wird erst wieder fortgesetzt, wenn der Bildschirm vom Anzeige-Timeout zurückkehrt.
was ist los?

Ich bin derzeit auf Android 1.5.

Antwort

9

Die minTime (60000) ist nur ein Hinweis, und es gibt keine Garantie, dass Ihr locationlistener genau in 1-Minuten-Intervall eintritt. In Kombination mit minDistance = 0 erhalten Sie wahrscheinlich viele weitere Updates.

Ich würde die minDistance auf 1m Minimum erhöhen und implementieren Kompensationslogik, um die 1 Minute Intervall in Ihrem Code zu erreichen. Ihr LocationListener kann so implementiert werden, dass Lokalisierungsaktualisierungen ignoriert und nicht verarbeitet werden, wenn sie zu schnell folgen.

Sie erhalten auch andere Orte über Ihren Standort-Listener mit einer anderen Genauigkeit, alle innerhalb dieses Minutenintervalls.

Ihr Standort-Listener kann die beste Genauigkeit auswählen und sich daran erinnern, wann der letzte Standort verarbeitet wurde, indem er den Status beibehalten hat (lastLocationProcessedAt).

+0

Gegebene Link funktioniert nicht. –