Ich erstelle eine App, für die der aktuelle Standort zum Initialisieren und Anzeigen einer Karte erforderlich ist. Ich ersuche um Standortaktualisierungen mit LocationManager.requestLocationUpdates(...)
, aber dies scheint mir nur Daten zu geben, wenn sich der Standort ändert (z. B. ich bewege mich 10 Fuß). Ich versuche auch, getLastKnownLocation zu verwenden, aber in einigen seltenen Fällen (wie das Einschalten des GPS und ohne das Öffnen der App zu verschieben) gibt dies null für alle Anbieter zurück, die ich verwende.Abrufen des aktuellen Standorts jetzt, nicht beim Aktualisieren
Immer, wenn getLastKnownLocation null zurückgibt, kann meine App nicht initialisiert werden, bis ich mich um 10 Fuß bewege und eine Standortaktualisierung erhalte. Bis jetzt habe ich noch keine Methode gefunden, um nach meinem Standort zu fragen, noch habe ich etwas gefunden, das darauf hinweist, dass ich meine ersten Daten in dem Moment bekomme, in dem ich mich abmelde und nicht, wenn ich entweder den angegebenen Zeitraum abfahre oder den Umzug betreibe angegebene Entfernung.
Ein Ansatz wäre requestLocationUpdates(...)
in einem sehr kleinen oder 0 Zeitintervall, erhalten, dass mir meine aktuelle Position zu senden, löschen Sie die LocationListener und wieder requestLocationUpdates(...)
aber dieses Mal mit dem viel größeren Wert, den ich verwenden, um die Batterie zu vermeiden.
Ich bin auf der Suche nach einem besseren Weg, um das zu lösen. Wahrscheinlich etwas wie getCurrentLocation(), aber wirklich alles, was funktioniert.
, um eine genaue Lesung zu erhalten jede Lösung wird beinhalten, auf einen Standort warten. Wenn der GPS-Provider keinen Standort finden kann, erhalten Sie null. In der FusedLocation-API haben Sie die Möglichkeit, die Anzahl der gewünschten Updates festzulegen, sodass Sie nur eine solche erhalten, wenn Sie nichts anderes benötigen. Sie müssen jedoch immer noch auf https://developers.google.com/android/reference/com/google/ warten. android/gms/location/LocationRequest.html # public-methods – tyczj
"Wahrscheinlich so etwas wie getCurrentLocation()" - das gibt es nicht, weil es nicht garantiert ist, einen Ort zu bekommen. Neben dem Standardproblem von Benutzern, die Provider deaktivieren oder die Berechtigungen für Android 6.0+ blockieren, kann das Gerät aufgrund von Umgebungsfaktoren möglicherweise nicht in der Lage sein, einen Standort zu erhalten. Das Gerät kann sich beispielsweise in einer Tiefgarage befinden.Könnte es eine 'getCurrentLocation()' mit einem gewissen Timeout-Wert geben? Ja, aber das ist nicht besonders schwierig für Sie, sich selbst zu implementieren. – CommonsWare