3 Stimmen

Android-Standortfehler

Ich habe mein Problem auf ein paar Codezeilen eingegrenzt

lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000L, 5.0f, this);
lat = location.getLatitude();
lng = location.getLongitude();
//lat = new Double(40.431682);
//lng = new Double(-74.2021819);
pLocation = new GeoPoint((int)(lat * 1000000), (int)(lng * 1000000));

Mein onLocationChanged, falls Sie sich das gefragt haben

public void onLocationChanged(Location location) {
        if (location != null) {
        lat = location.getLatitude();
        lng = location.getLongitude();
        pLocation = new GeoPoint((int)(lat * 1000000), (int)(lng * 1000000));
        }
}

Meine Anwendung stürzt ab, wenn ich versuche, die LastKnownLocation

Es funktioniert aber gut, wenn ich einen Standort manuell eingebe.

Ich habe derzeit keine Ahnung, was los ist.

3voto

CommonsWare Punkte 950864

Erstens, wenn Sie einen Absturz haben, verwenden Sie adb logcat DDMS oder die DDMS-Perspektive in Eclipse, um den Java-Stack-Trace im Zusammenhang mit dem Absturz zu erhalten. In diesem Fall werden Sie vermutlich feststellen, dass Sie eine NullPointerException wenn Sie versuchen, Ihre location Objekt.

Sie können nicht verwenden getLastKnownLocation() bis lange nach Ihrem Anruf requestLocationUpdates() insbesondere für GPS. Es kann mehrere Dutzend Sekunden dauern, bis das GPS mit der Positionsbestimmung beginnt.

Bitte ändern Sie Ihren Code, um die Verwendung von getLastKnownLocation() und verwenden Sie einfach die Logik, die den Ort bereits in Ihrem onLocationChanged() Methode. Suchen Sie zumindest nach einer null location Objekt und versuchen Sie nicht, es zu benutzen.

0voto

Chris Stryker Punkte 1048

Meine Lösung bestand im Grunde darin, nur den groben Standort zu verwenden.

Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_COARSE);
String bestProvider = lm.getBestProvider(criteria, true);
Location loc = lm.getLastKnownLocation(bestProvider);
lat = loc.getLatitude();
lng = loc.getLongitude();

0voto

Fedor Punkte 43061

Dies kann passieren, weil die Feinortung (GPS) auf Ihrem Gerät nicht aktiviert ist. Oder die Berechtigung ACCESS_FINE_LOCATION ist in Ihrem Manifest nicht angegeben.

0voto

Max Ch Punkte 1247

Ich wette, wenn Sie debuggen, werden Sie eine Null-Ausnahme sehen. Es passiert also, weil Sie versuchen, Längen- und Breitengrad aus der Position zu extrahieren, die noch nicht fest ist. Umgeben Sie diese Extraktion mit if (loc!=null) {} und setzen Sie progressDialog, um den Benutzer dort zu halten

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X