Mit den Standort-APIs der Google Play-Dienste kann Ihre App den letzten bekannten Standort des Geräts des Nutzers anfordern. In den meisten Fällen ist der aktuelle Standort des Nutzers von Interesse, der in der Regel dem letzten bekannten Standort des Geräts entspricht.
Verwenden Sie den Anbieter für kombinierte Standortbestimmung, um den letzten bekannten Standort des Geräts abzurufen. Der Anbieter für kombinierte Standortbestimmung ist eine der Standort-APIs in den Google Play-Diensten. Er verwaltet die zugrunde liegende Standorttechnologie und bietet eine einfache API, mit der Sie Anforderungen auf hoher Ebene festlegen können, z. B. hohe Genauigkeit oder geringer Stromverbrauch. Außerdem optimiert er die Akkunutzung des Geräts.
Hinweis:Wenn Ihre App im Hintergrund ausgeführt wird, muss der Zugriff auf den Standort für die Hauptfunktion der App unerlässlich sein und den Nutzern ordnungsgemäß offengelegt werden.
In dieser Lektion erfahren Sie, wie Sie mit der
getLastLocation()
Methode des Anbieters für kombinierte Standortbestimmung eine einzelne Anfrage für den Standort eines
Geräts stellen.
Google Play-Dienste einrichten
Für den Zugriff auf den Anbieter für kombinierte Standortbestimmung müssen die Google Play-Dienste im Entwicklungsprojekt Ihrer App enthalten sein. Laden Sie die Google Play-Dienste Komponente über den SDK Manager herunter und installieren Sie sie. Fügen Sie die Bibliothek dann Ihrem Projekt hinzu. Weitere Informationen finden Sie im Leitfaden Google Play Dienste einrichten.
App-Berechtigungen festlegen
Apps, deren Funktionen Standortdienste verwenden, müssen je nach Anwendungsfall dieser Funktionen, Berechtigungen zur Standortermittlung anfordern.
Client für Standortdienste erstellen
Erstellen Sie in der Methode onCreate() Ihrer Activity eine Instanz des Clients für den Anbieter für kombinierte Standortbestimmung, wie im folgenden Code-Snippet gezeigt.
Kotlin
private lateinit var fusedLocationClient: FusedLocationProviderClient override fun onCreate(savedInstanceState: Bundle?) { // ... fusedLocationClient = LocationServices.getFusedLocationProviderClient(this) }
Java
private FusedLocationProviderClient fusedLocationClient; // .. @Override protected void onCreate(Bundle savedInstanceState) { // ... fusedLocationClient = LocationServices.getFusedLocationProviderClient(this); }
Letzten bekannten Standort abrufen
Nachdem Sie den Client für Standortdienste erstellt haben
können Sie den letzten bekannten Standort des Geräts eines Nutzers abrufen. Wenn Ihre App mit diesen Diensten verbunden ist, können Sie die Methode des Anbieters für kombinierte Standortbestimmung verwenden, um den Gerätestandort abzurufen.getLastLocation() Die Genauigkeit des von diesem Aufruf zurückgegebenen Standorts wird durch die Berechtigungseinstellung bestimmt, die Sie im App-Manifest festgelegt haben. Weitere Informationen finden Sie im Leitfaden zum Anfordern von Berechtigungen zur Standortermittlung.
Rufen Sie die
getLastLocation()
Methode auf, um den letzten bekannten Standort anzufordern. Das folgende Code-Snippet veranschaulicht die Anfrage und eine einfache Verarbeitung der
Antwort:
Kotlin
fusedLocationClient.lastLocation .addOnSuccessListener { location : Location? -> // Got last known location. In some rare situations this can be null. }
Java
fusedLocationClient.getLastLocation() .addOnSuccessListener(this, new OnSuccessListener<Location>() { @Override public void onSuccess(Location location) { // Got last known location. In some rare situations this can be null. if (location != null) { // Logic to handle location object } } });
Die
getLastLocation()
Methode gibt ein Task
zurück, mit dem Sie ein
Location
Objekt mit den Längen- und Breitengraden eines
geografischen Standorts abrufen können. Das Standortobjekt kann null in den
folgenden Situationen sein:
- Die Standortermittlung ist in den Geräteeinstellungen deaktiviert. Das Ergebnis kann
nullsein, auch wenn der letzte Standort zuvor abgerufen wurde, da durch das Deaktivieren der Standortermittlung auch der Cache gelöscht wird. - Der Standort des Geräts wurde noch nie aufgezeichnet. Das kann bei einem neuen Gerät oder einem Gerät der Fall sein, das auf die Werkseinstellungen zurückgesetzt wurde.
- Die Google Play-Dienste auf dem Gerät wurden neu gestartet und es gibt keinen aktiven Anbieter für kombinierte Standortbestimmung Client, der nach dem Neustart der Dienste den Standort angefordert hat. Um dies zu vermeiden, können Sie einen neuen Client erstellen und Standortaktualisierungen selbst anfordern. Weitere Informationen finden Sie unter Standortaktualisierungen anfordern.
Beste Standortschätzung auswählen
Der FusedLocationProviderClient bietet mehrere Methoden zum Abrufen von Gerätestandortinformationen. Wählen Sie je nach Anwendungsfall Ihrer App eine der folgenden Optionen aus:
getLastLocation()ruft eine Standortschätzung schneller ab und minimiert die Akkunutzung, die auf Ihre App zurückzuführen ist. Die Standortinformationen sind jedoch möglicherweise veraltet, wenn in letzter Zeit keine anderen Clients den Standort aktiv verwendet haben.getCurrentLocation()ruft einen aktuelleren und genaueren Standort ab. Diese Methode kann jedoch dazu führen, dass der Standort auf dem Gerät aktiv berechnet wird.Dies ist die empfohlene Methode, um nach Möglichkeit einen aktuellen Standort abzurufen. Sie ist sicherer als Alternativen wie das Starten und Verwalten von Standortaktualisierungen mit
requestLocationUpdates(). Wenn Ihre ApprequestLocationUpdates()aufruft, kann sie manchmal viel Strom verbrauchen, wenn der Standort nicht verfügbar ist oder wenn die Anfrage nach dem Abrufen eines aktuellen Standorts nicht korrekt beendet wird.
Zusätzliche Ressourcen
Weitere Informationen zum Abrufen des aktuellen Standorts in Android finden Sie in den folgenden Materialien:
Beispiele
- Beispiel-App, die Best Practices für das Abrufen des aktuellen Standorts veranschaulicht.