Ich habe einige Code, der mehrmals pro Sekunde in meiner App läuft. Ich versuche, meinen Standort in jedem Zyklus zu bekommen. Ich bin mit dem folgenden:Android fusioniert Standort api keine konsistenten Updates mit Bildschirm aus
Location myLastPos = LocationServices.FusedLocationApi.getLastLocation(googleApiClient)
Meine App läuft auch im Hintergrund eine PARTIAL_WAKE_LOCK verwenden. Mit dem Bildschirm scheint alles in Ordnung zu sein. Wenn ich den Bildschirm ausschalte, läuft meine App immer noch normal, aber ich erhalte keine Standortinformationen mehr. Es scheint, dass ich viel seltener Updates (oft Minuten zwischen Updates) bekomme. Ich überprüfe den Zeitstempel des Standorts mit:
myLastPos.getElapsedRealtimeNanos()
Ich fand auch, dass selbst wenn der Bildschirm auf mir einige seltsamen Ergebnisse. Manchmal bekomme ich ein paar Millisekunden zwischen Updates, manchmal bekomme ich ein paar Sekunden. Das ist alles sehr beunruhigend. Kann jemand mir helfen, FusedLocationApi richtig zu benutzen oder schlagen Sie eine Alternative vor. Alles, was ich wirklich will, ist, die GPS direkt für lat/long ein paar Mal pro Sekunde abzufragen, ohne Google Bibliotheken in die Quere kommen.
Die 'getLastLocation()' Methode ruft nur den letzten bekannten Ort ab, den das Gerät zufällig kennt. Das Gerät bestimmt seinen Standort nicht selbst, sondern nur, wenn eine Anwendung den Standort anfordert. Ihre App ist nun von anderen Anwendungen abhängig, die Standortaktualisierungen anfordern. Wenn Sie alle paar Sekunden ein Update benötigen, fordern Sie regelmäßige Standortaktualisierungen selbst an. [Die Dokumentationsabteilung] (http://stackoverflow.com/documentation/android/1837/location#t=201610120710565214353) enthält Codebeispiele. –
@MarkusKauppinen du bist richtig. Die Dokumentation ist nicht sehr klar darüber und meine Annahme war, dass das Android OS das GPS im Hintergrund automatisch abfragen würde und getLastLocation() würde nur das _latest_ Ergebnis liefern. Wenn Sie die Frage mit Ihrem Kommentar beantworten, kann ich sie als beantwortet markieren. Vielen Dank! – Shahin
Es scheint eine allgemeine Verwirrung zu sein. Irgendwie könnte die Dokumentation deutlicher machen, dass es sich um einen alten und ungültigen Ort handelt. Technisch ist es korrekt, da es wirklich der "letzte bekannte" Ort ist.Jedenfalls habe ich jetzt eine richtige Antwort hinzugefügt. Dies könnte ein Duplikat einer älteren Frage sein, aber ich habe nicht leicht einen guten Kandidaten gefunden. Die meisten von ihnen (mit akzeptierten Antworten) sind gerade dabei, einen 'Null'-Ort zu bekommen. –