Ich habe einige Fragen dazu gelesen, aber ich habe keine Antwort gefunden, die ich brauchte.
Der Fall ist also, dass ich meine Karte eingerichtet habe und meinen aktuellen GPS-Standort abrufen möchte. Ich habe überprüft, dass meine Variablen nicht NULL sind, aber dennoch mein Ergebnis von:
getLastKnownLocation(provider, false);
Gibt mir aber null, also brauche ich hier Hilfe. Ich habe Berechtigungen für den Standort COARSE + FINE hinzugefügt. Normalerweise sind jedoch alle Arten von Netzwerkdaten für mein Telefon deaktiviert, da ich mich nicht über unvorhersehbare Datenflusskosten in meiner Telefonrechnung freue. Daher habe ich für diesen Test nur WLAN aktiviert und verbunden.
Muss ich noch etwas aktivieren, damit dies möglich ist? Ich würde denken, WiFi sollte ausreichen?
android
google-maps
location
Aleksander Fimreite
quelle
quelle
Antworten:
Verwenden Sie diese Methode, um den letzten bekannten Speicherort abzurufen:
quelle
getLastKnownLocation returns null
... dieser Code wird nichts ändern ... wenn für alle AnbietermLocationManager.getLastKnownLocation
(da er null zurückgeben kann) er immer noch null zurückgibt ... Antwort ist ... Entschuldigung, Sie können dies nicht vermeiden ... wenn Sie wirklich wollen Der Standort verwendet nicht getLastKnownLocationSie mischen die neuen und die alten Standort-APIs zusammen, wenn Sie dies nicht sollten.
Um den letzten bekannten Ort zu finden, müssen Sie nur anrufen
Sobald der Ortungsdienst verbunden war.
Lesen Sie, wie Sie die neue Standort-API verwenden
http://developer.android.com/training/location/retrieve-current.html#GetLocation
quelle
Sie versuchen, den zwischengespeicherten Speicherort vom Netzwerkanbieter abzurufen. Sie müssen einige Minuten warten, bis Sie eine gültige Lösung erhalten. Da der Cache des Netzwerkanbieters leer ist, erhalten Sie dort offensichtlich eine Null.
quelle
Fügen Sie diesen Code hinzu
vor der Funktion:
locationManagerObject.requestLocationUpdates(LocationManager.GPS_PROVIDER, MINIMUM_TIME_BETWEEN_UPDATES, MINIMUM_DISTANCE_CHANGE_FOR_UPDATES, new LocationListener())
sowie die Funktion:locationManagerObject.getLastKnownLocation(LocationManager.GPS_PROVIDER)
quelle
Versuchen Sie dies, es funktioniert gut für mich: -
Sie können NETWORK_PROVIDER anstelle von GPS_PROVIDER verwenden, um schnellere Ergebnisse zu erzielen.
quelle
Ich hatte dieses Problem in Xamarin.Android.
Location location = locationManager.GetLastKnownLocation(provider);
gab den Nullwert zurück. Ich überprüfte meinen Code und erfuhr, dass ich gerade die Erlaubnis für ACCESS_COARSE_LOCATION angefordert hatte. Ich habe Code hinzugefügt, um die Berechtigung für ACCESS_FINE_LOCATION anzufordern, und jetzt wurde nicht null zurückgegeben. Hier ist mein Code:Für den Fall, dass jemand von Xamarin.Android (C #) kommt, würde es nützlich sein. Für Java oder Android Studio wäre der Code mit einigen geringfügigen Syntaxänderungen ähnlich
GetLastKnownLocation()
,getLastKnownLocation()
da Methodennamen in Java mit Kleinbuchstaben beginnen, während Methodennamen in C # mit Großbuchstaben beginnen.quelle
Ich mochte diese Lösung, um den Standort zu aktualisieren:
Standort aktualisieren
Fügen Sie im Lebenslauf die Bedingung hinzu:
Und vielleicht ist einige grundlegende, aber überprüfen Sie, ob GPS eingeschaltet ist.
quelle
Ersetzen Sie Ihre Leitung durch
quelle