Letzten bekannten Standort abrufen

Mithilfe der Standort-APIs der Google Play-Dienste kann deine App die letzte Standort des Geräts des Nutzers ermitteln. Meistens interessieren Sie sich für den aktuellen Standort des Nutzers. Dieser entspricht in der Regel der letzten bekannten Standort des Geräts.

Verwenden Sie insbesondere die Methode fusioniert Standortanbieter, um den letzten bekannten Standort des Geräts abzurufen. Das fusionierte „Standortanbieter“ ist eine der Standort-APIs in den Google Play-Diensten. Es verwaltet die zugrunde liegende Standorttechnologie und stellt eine einfache API bereit, können Sie Anforderungen auf hoher Ebene festlegen, z. B. hohe Genauigkeit oder geringer Energieverbrauch. Außerdem wird der Akkuverbrauch des Geräts optimiert.

Hinweis:Wenn Ihre App im Hintergrund ausgeführt wird, Standortzugriff sollte ist entscheidend für die Hauptfunktion der App für die Nutzer.

In dieser Lektion erfahren Sie, wie Sie mit einer einzigen Anfrage den Standort eines mit dem getLastLocation() im Anbieter für kombinierte Standortbestimmung.

Google Play-Dienste einrichten

Damit Sie auf den Anbieter für kombinierte Standortbestimmung zugreifen können, muss das Entwicklungsprojekt Ihrer App Google Play-Dienste umfassen. Google Play-Dienste herunterladen und installieren über das SDK und fügen Sie die Bibliothek Ihrem Projekt hinzu. Weitere Informationen finden Sie im Leitfaden zur Google Play einrichten Dienste.

App-Berechtigungen festlegen

Apps, deren Funktionen Standortdienste nutzen, müssen Berechtigungen zur Standortermittlung anfordern je nach Anwendungsfall dieser Funktionen.

Client für Standortdienste erstellen

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

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 die Standortdienste erstellt haben, können Sie den letzten bekannten Standort des Geräts eines Nutzers abrufen. Wenn Ihre App können Sie die Funktion des Anbieters für kombinierte Standortbestimmung getLastLocation() , um den Gerätestandort abzurufen. Die Genauigkeit des zurückgegebenen Standorts wird durch die Berechtigungseinstellung bestimmt, die Sie in Ihrer App festgelegt haben Manifestdatei, wie im Leitfaden zur Berechtigungen zur Standortermittlung anfordern

Um den letzten bekannten Standort anzufordern, rufen Sie die Methode getLastLocation() . Das folgende Code-Snippet veranschaulicht die Anforderung und eine einfache Handhabung des 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() gibt ein Task-Objekt zurück. mit dem Sie eine Location mit den Breitengrad- und Längengradkoordinaten eines geografischer Standort. Das Standortobjekt kann null in der Situationen:

  • Die Standortermittlung ist in den Geräteeinstellungen deaktiviert. Das Ergebnis könnte null auch dann, wenn der letzte Standort zuvor abgerufen wurde, weil wird der Cache geleert, wenn Sie den Standort deaktivieren.
  • Das Gerät hat seinen Standort nie aufgezeichnet. Es könnte sich um einen neuen Standort handeln. oder ein Gerät, das auf die Werkseinstellungen zurückgesetzt wurde.
  • Die Google Play-Dienste wurden auf dem Gerät neu gestartet und es gibt keine aktiven Fused Location Provider-Client, der den Standort nach dem Dienste neu gestartet. Um dies zu vermeiden, können Sie einen neuen Kunden erstellen und Standortaktualisierungen selbst anfragen. Weitere Informationen finden Sie unter Empfang von Standortdaten. Aktualisierungen.

Beste Standortschätzung auswählen

FusedLocationProviderClient bietet mehrere Methoden zum Abrufen eines Geräts. Standortinformationen. Wählen Sie je nach App-Typ eine der folgenden Optionen aus: Anwendungsfall:

  • getLastLocation() kann schneller eine Standortschätzung erhalten und den Akkuverbrauch die Ihrer App zugeordnet sind. Die Standortinformationen möglicherweise veraltet, wenn keine anderen Kunden vor Kurzem verwendeter Standort.
  • getCurrentLocation() erhält regelmäßig einen aktuelleren, genaueren Standort. Diese Methode kann 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, und ist sicherer als Alternativen wie das Starten und Verwalten von Standortaktualisierungen Sie selbst mit requestLocationUpdates(). Wenn Ihre App einen Anruf durchführt requestLocationUpdates(), kann Ihre Anwendung manchmal große Mengen an Daten Stromversorgung, wenn der Standort nicht verfügbar ist oder die Anforderung nicht ordnungsgemäß gestoppt wird nachdem er einen neuen Standort erworben hat.

Weitere Informationen

Weitere Informationen zum Abrufen des aktuellen Standorts in Android findest du in der folgenden Materialien:

Produktproben

  • Beispiel-App zur Demonstration von Best Practices beim Abrufen aktuellen Standort