2016-04-09 7 views
0

Die Methode, die ich gerade benutze, ist sehr unzuverlässig. In meinem Android-Gerät (nicht Simulator) die meisten Male der Standort zurückgegeben ist Null .Othough manchmal funktioniert es.Was ist die zuverlässigste Methode, um die Position eines Android-Geräts zu erhalten?

public Location getLocation(String provider) { 
    if (locationManager.isProviderEnabled(provider)) { 
     locationManager.requestLocationUpdates(provider, 
       MIN_TIME_FOR_UPDATE, MIN_DISTANCE_FOR_UPDATE, this); 
     if (locationManager != null) { 
      location = locationManager.getLastKnownLocation(provider); 
      return location; 
     } 
    } 
    return null; 
} 

Ich weiß, dass nach der Einführung der API 23 gibt es weitere Berechtigungen ich zu kümmern brauchen. Gibt es eine zuverlässige Möglichkeit, den Standort zu ermitteln?

+0

http://stackoverflow.com/questions/3145089/what -ist-die-einfachste-und-robusteste-Weg-zu-dem-Benutzer-aktuelle-Ort-in-a –

+0

http://stackoverflow.com/questions/15997079/getlastknownlocation-always-return-null -nachher-installiere-die-apk-Datei-via-ecli –

Antwort

0

Glauben Sie mir, die zuverlässigste Weg Lage zu erhalten, ist auf ‚OnLocationChanged‘ Methode verlassen, wird getLastKnownLocation Methode, weil Aufruf nicht, dass Sie einen neuen Standort oder nicht null Ergebnis. Sie können die documentation unten lesen.

Dies kann ohne Starten des Anbieters erfolgen. Beachten Sie, dass dieser Standort veraltet sein könnte, z. B. wenn das Gerät ausgeschaltet und an einen anderen Ort verschoben wurde.

Wenn der Anbieter derzeit deaktiviert ist, wird null zurückgegeben.

Und letzte, was ich möchte Sie bemerken, rufen requestLocationUpdates Methode bedeutet nicht, es Ihnen Standort geben so schnell wie möglich. Aus diesem Grund habe ich die Rückrufmethode "onLocationChanged" erwähnt.