Frage

Ich habe aus meinem Problem zu ein paar Zeilen Code zelten

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));

Meine OnLocationChanged wenn Sie mich fragen,

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

zu bekommen

Aber es funktioniert gut, wenn ich es einen Ort Feed manuell

Ich habe keine Ahnung, zur Zeit, was ist falsch

War es hilfreich?

Lösung

Als erstes, wenn Sie einen Absturz, Verwendung adb logcat erhalten, DDMS oder die DDMS Perspektive in Eclipse die Java-Stack-Trace mit dem Absturz verbunden zu bekommen. In diesem Fall vermute ich, werden Sie feststellen, dass Sie ein NullPointerException haben beim Versuch, location Objekt zu verwenden.

Sie können nicht getLastKnownLocation() bis gut verwenden, nachdem Sie requestLocationUpdates() nennen, vor allem für GPS. Es kann zehn Sekunden für die GPS-nimmt Korrekturen starten bereitstellt.

Bitte ändern Sie den Code Ihre Nutzung getLastKnownLocation() zu beseitigen und nur die Logik verwenden, um die Lage bereits in Ihrer onLocationChanged() Methode benötigen. Zumindest Look für ein null location Objekt und versuchen Sie nicht, es zu benutzen.

Andere Tipps

Mein fix war im Grunde nur Gebrauch grober Lage.

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();

Dies kann passieren, weil feine Lage (GPS) nicht auf dem Gerät aktiviert ist. Oder ACCESS_FINE_LOCATION Genehmigung ist in Ihrem Manifest nicht angegeben.

Ich wette, wenn Sie debuggen Sie null Ausnahme sehen. So kommt es, weil Sie extrahieren geografische Breite und Länge von Lage sind versucht, die noch nicht behoben ist. Surround diese Extraktion mit if (loc! = Null) {} und setzen progressDialog zu halten Benutzer dort

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top