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 zuletzt bekannten Standort des Geräts entspricht.
Verwenden Sie dazu den Anbieter für kombinierte Standortbestimmung, um den zuletzt bekannten Standort des Geräts abzurufen. Der Anbieter für kombinierte Standortbestimmung ist eine der Standort-APIs in den Google Play-Diensten. Sie verwaltet die zugrunde liegende Standorttechnologie und bietet eine einfache API, mit der Sie Anforderungen auf hoher Ebene angeben können, z. B. hohe Genauigkeit oder geringer Stromverbrauch. Außerdem wird die Akkunutzung des Geräts optimiert.
Hinweis:Wenn Ihre App im Hintergrund ausgeführt wird, muss der Zugriff auf den Standort für die Hauptfunktionen der App erforderlich sein und Nutzer müssen ordnungsgemäß darüber informiert werden.
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 Anbieter für kombinierte Standortbestimmung zugreifen können, müssen die Google Play-Dienste im Entwicklungsprojekt Ihrer App enthalten sein. Laden Sie die Google Play Services-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 zum Einrichten der Google Play-Dienste.
App-Berechtigungen angeben
Apps, deren Funktionen Standortdienste verwenden, müssen je nach Anwendungsfall der Funktionen Berechtigungen zur Standortermittlung anfordern.
Client für Standortdienste erstellen
Erstellen Sie in der onCreate()
-Methode Ihrer Aktivität eine Instanz des Fused Location Provider Client, 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 Location Services-Client erstellt haben, können Sie den zuletzt bekannten Standort des Geräts eines Nutzers abrufen. Wenn Ihre App mit diesen verbunden ist, können Sie die Methode getLastLocation()
des Fused Location Provider verwenden, 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.
Rufen Sie die Methode getLastLocation()
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 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 kann
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, das auf die Werkseinstellungen zurückgesetzt wurde, der Fall sein.
- 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 dies zu vermeiden, können Sie einen neuen Client erstellen und selbst Standortaktualisierungen anfordern. Weitere Informationen finden Sie unter Standortaktualisierungen anfordern.
Beste Standortschätzung auswählen
Die FusedLocationProviderClient
bietet mehrere Methoden zum Abrufen von Geräteinformationen. Wählen Sie je nach Anwendungsfall Ihrer App eine der folgenden Optionen aus:
getLastLocation()
ermöglicht eine schnellere Standortschätzung und minimiert den Akkuverbrauch, der 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()
erhält regelmäßig einen aktuelleren, genaueren Standort. Diese Methode kann jedoch dazu führen, dass der aktive Standort auf dem Gerät berechnet wird.Dies ist die empfohlene Methode, um nach Möglichkeit einen neuen Standort zu erhalten. 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 kein Standort verfügbar ist oder die Anfrage nach der Ermittlung eines neuen Standorts nicht richtig beendet wird.
Zusätzliche Ressourcen
Weitere Informationen zum Abrufen des aktuellen Standorts in Android finden Sie in den folgenden Materialien:
Produktproben
- Beispiel-App, die Best Practices für das Abrufen des aktuellen Standorts demonstriert.