Ich versuche, Android-Standort zu bekommen, habe ich dieses Stück Code noch Standort wird nie zurückgegeben. Ich habe auf Stack-Überlauf gesucht.Android Location Update nicht zurück
Ich habe diesen Fehler gefunden: https://code.google.com/p/android/issues/detail?id=57707 Aber es gibt keine Lösung bis jetzt, oder ich konnte keinen finden. Dies ist der Code. Jede Hilfe wäre sehr geschätzt
Criteria criteria = new Criteria();
criteria.setCostAllowed(true);
criteria.setAccuracy(Criteria.ACCURACY_COARSE);
final LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
String provider = lm.getBestProvider(criteria, true);
Location l = lm.getLastKnownLocation(provider);
final String date = fmtForPresenter.print(dt);
if(l==null) {
lm.requestLocationUpdates(provider, 100, 200,
new android.location.LocationListener() {
@Override
public void onStatusChanged(String provider, int status,
Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
Log.e("PROVIDER", "PRO: " + provider);
}
@Override
public void onProviderDisabled(String provider) {
Log.e("PROVIDER", "PRO: " + provider);
}
@Override
public void onLocationChanged(final Location location) {
lat = location.getLatitude();
lng = location.getLongitude();
presenter.getFoot(userProfile.getToken(),"public",lat,lng,date);
if ((ContextCompat.checkSelfPermission(getApplicationContext(), android.Manifest.permission.ACCESS_FINE_LOCATION) ==
PackageManager.PERMISSION_GRANTED &&
ContextCompat.checkSelfPermission(getApplicationContext(), android.Manifest.permission.ACCESS_COARSE_LOCATION) ==
PackageManager.PERMISSION_GRANTED)) {
lm.removeUpdates(this);
}
}
});
}
else {
lat = l.getLatitude();
lng = l.getLongitude();
presenter.getFoot(userProfile.getToken(),"public",lat,lng,date);
}
EDIT:
Wenn ich starten Sie den Standort des Telefons funktioniert wieder, aber ich nicht nehmen dies als eine Lösung, da ich alle meine Kunden sagen kippe ihre Telefone immer wenn es neu zu starten ist ein Problem,
Dies ist ein sehr beliebtes "Anti-Pattern", das normalerweise unter dem Namen "GPSTracker" geführt wird. Das Hauptproblem besteht darin, dass der Code Standortaktualisierungen anfordert, diese aber nicht wirklich verwendet. Es gibt nichts in 'onLocationChanged() '. Dies funktioniert wahrscheinlich nur beim ersten Anruf, wenn das Gerät seinen Standort bereits kennt. Es gibt einen [Blog-Beitrag von Gabe Sechan] (http://gabeschanensoftware.com/location-tracking/) über die Probleme dieser Art von Code. –
Ja, aber wenn ich meinen Code zu onLocationChanged hinzufüge, dann wird es gut funktionieren und dann entferne ich die Updates wie in meinem Code. –
@MarkusKauppinen Sie haben Recht, aber dieser Code ist, um den Speicherort einmal zu bekommen, und wenn Sie die Updates möchten, können Sie die onLocationChanged(), ich brauchte es nicht, deshalb. – ThePunisher