Letzten bekannten Standort abrufen

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 relevant, der in der Regel dem letzten bekannten Standort des Geräts entspricht.

Verwenden Sie insbesondere den Fused Location Provider, um den letzten bekannten Standort des Geräts abzurufen. Der Fused Location Provider ist eine der Standort-APIs in den Google Play-Diensten. Sie verwaltet die zugrunde liegende Standorttechnologie und stellt eine API bereit, mit der Sie Anforderungen auf hohem Niveau angeben können, z. B. hohe Genauigkeit oder geringer Stromverbrauch. Außerdem wird die Akkunutzung des Geräts optimiert.

In dieser Lektion erfahren Sie, wie Sie mit der Methode getLastLocation() im Fused Location Provider eine einzelne Anfrage für den Standort eines Geräts stellen.

Google Play-Dienste einrichten

Damit Sie auf den Fused Location Provider zugreifen können, muss das Entwicklungsprojekt Ihrer App die Google Play-Dienste enthalten. Laden Sie die Google Play-Dienste-Komponente über den SDK-Manager herunter, installieren Sie sie und fügen Sie die Bibliothek Ihrem Projekt hinzu. Weitere Informationen finden Sie im Leitfaden Google Play-Dienste einrichten.

App-Berechtigungen angeben

Apps, deren Funktionen standortbezogene Dienste verwenden, müssen je nach Anwendungsfall dieser Funktionen Berechtigungen zur Standortermittlung anfordern.

Client für standortbezogene Dienste erstellen

Erstellen Sie in der onCreate()-Methode Ihrer Aktivität eine Instanz des Fused Location Provider-Clients, wie im folgenden Code-Snippet gezeigt.

private lateinit var fusedLocationClient: FusedLocationProviderClient

override fun onCreate(savedInstanceState: Bundle?) {
    // ...

    fusedLocationClient = LocationServices.getFusedLocationProviderClient(this)
}

Letzten bekannten Standort abrufen

Nachdem Sie den Location Services-Client erstellt haben, können Sie den letzten bekannten Standort des Geräts eines Nutzers abrufen. Verwenden Sie die Methode getLastLocation() des Fused Location Providers, um den Gerätestandort abzurufen. Die Genauigkeit des von diesem Aufruf zurückgegebenen Standorts wird durch die Berechtigungseinstellung in Ihrem App-Manifest bestimmt, wie im Leitfaden zum Anfordern von Berechtigungen zur Standortermittlung beschrieben.

Wenn Sie den letzten bekannten Standort abrufen möchten, rufen Sie die Methode getLastLocation() auf. Das folgende Code-Snippet veranschaulicht die Anfrage und die grundlegende Verarbeitung der Antwort:

fusedLocationClient.lastLocation
    .addOnSuccessListener { location: Location? ->
        // Got last known location. In some rare situations this can be null.
    }

Die Methode getLastLocation() gibt ein Task zurück, mit dem Sie ein Location-Objekt mit den Breiten- und Längengradkoordinaten eines geografischen Standorts abrufen können. Das Standortobjekt kann in den folgenden Situationen null sein:

  • Die Standortermittlung ist in den Geräteeinstellungen deaktiviert. Das Ergebnis könnte null sein, auch wenn der letzte Standort zuvor abgerufen wurde, da durch das Deaktivieren des Standorts auch der Cache geleert wird.
  • Der Standort des Geräts wurde 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 Fused Location Provider-Client, der nach dem Neustart der Dienste den Standort angefordert hat. Um diese Situation zu vermeiden, können Sie einen neuen Client erstellen und Standort-Updates selbst anfordern. Weitere Informationen finden Sie unter Standortaktualisierungen anfordern.

Beste Standortschätzung auswählen

FusedLocationProviderClient bietet mehrere Methoden zum Abrufen von Standortinformationen für Geräte. Wählen Sie je nach Anwendungsfall Ihrer App eine der folgenden Optionen aus:

  • getLastLocation() erhält schneller eine Standortschätzung und minimiert die Akkunutzung, die auf deine 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() erhält regelmäßig einen aktuelleren und genaueren Standort. Diese Methode kann jedoch dazu führen, dass auf dem Gerät eine aktive Standortberechnung erfolgt.

    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 App requestLocationUpdates() aufruft, kann sie manchmal große Mengen an Energie verbrauchen, wenn der Standort nicht verfügbar ist oder die Anfrage nach dem Abrufen eines neuen Standorts nicht korrekt beendet wird.

Zusätzliche Ressourcen

Weitere Informationen zum Abrufen des aktuellen Standorts unter Android finden Sie in den folgenden Materialien:

Beispiele

  • Beispiel-App, die Best Practices beim Abrufen des aktuellen Standorts veranschaulicht.