In diesem Abschnitt werden einige typische Szenarien für die Standortermittlung beschrieben. Außerdem finden Sie Empfehlungen für die optimale Nutzung der APIs für Geofencing und den fusionierten Standortanbieter.
Für Nutzer sichtbare oder Aktualisierungen im Vordergrund
Beispiel: Eine Karten-App, die häufige, genaue Aktualisierungen mit sehr niedriger Latenz benötigt. Alle Aktualisierungen erfolgen im Vordergrund: Der Nutzer startet eine Aktivität, verbraucht Standortdaten und beendet die Aktivität nach kurzer Zeit.
Verwenden Sie die Methode setPriority()
mit dem Wert PRIORITY_HIGH_ACCURACY
oder PRIORITY_BALANCED_POWER_ACCURACY
.
Das in der setInterval()
-Methode angegebene Intervall hängt vom Anwendungsfall ab: Legen Sie für Echtzeitszenarien einen Wert von wenigen Sekunden fest. Andernfalls begrenzen Sie ihn auf wenige Minuten. Wir empfehlen mindestens zwei Minuten, um den Akkuverbrauch zu minimieren.
Standort des Geräts ermitteln
Beispiel: Eine Wetter-App möchte den Standort des Geräts wissen.
Verwenden Sie die Methode getLastLocation()
, die den zuletzt verfügbaren Standort zurückgibt. In seltenen Fällen kann dieser null sein. Diese Methode bietet eine einfache Möglichkeit, den Standort abzurufen, und verursacht keine Kosten, die mit dem aktiven Anfordern von Standortaktualisierungen verbunden sind. Verwenden Sie diese Methode in Verbindung mit der Methode isLocationAvailable()
, die true
zurückgibt, wenn der von getLastLocation()
zurückgegebene Standort hinreichend aktuell ist.
Updates starten, wenn sich ein Nutzer an einem bestimmten Ort befindet
Beispiel: Aktualisierungen anfordern, wenn sich ein Nutzer in einer bestimmten Entfernung von seinem Arbeitsplatz, seinem Zuhause oder einem anderen Ort befindet.
Verwenden Sie Geofencing in Verbindung mit Updates von Anbietern für den fusionierten Standort. Fordern Sie Updates an, wenn die App einen Geofence-Eintrittstrigger erhält, und entfernen Sie Updates, wenn die App einen Geofence-Austrittstrigger erhält. So erhält die App nur dann detailliertere Standortaktualisierungen, wenn der Nutzer einen bestimmten Bereich betreten hat.
Der typische Workflow für dieses Szenario könnte darin bestehen, beim Betreten des Geofences eine Benachrichtigung anzuzeigen und eine Aktivität zu starten, die Code zum Anfordern von Updates enthält, wenn der Nutzer auf die Benachrichtigung tippt.
Aktualisierungen basierend auf dem Aktivitätsstatus des Nutzers starten
Beispiel: Updates nur anfordern, wenn der Nutzer mit dem Auto oder Fahrrad unterwegs ist.
Verwenden Sie die Aktivitätserkennungs-API in Verbindung mit Updates von Anbietern für den fusionierten Standort. Aktualisierungen anfordern, wenn die gewünschte Aktivität erkannt wird, und Aktualisierungen entfernen, wenn der Nutzer diese Aktivität nicht mehr ausführt.
Der typische Workflow für diesen Anwendungsfall könnte darin bestehen, eine Benachrichtigung für die erkannte Aktivität anzuzeigen und eine Aktivität zu starten, die Code zum Anfordern von Updates enthält, wenn der Nutzer auf die Benachrichtigung tippt.
Lang andauernde Standortaktualisierungen im Hintergrund, die an geografische Gebiete gebunden sind
Beispiel: Der Nutzer möchte benachrichtigt werden, wenn sich das Gerät in der Nähe eines Händlers befindet.
Dies ist ein hervorragender Anwendungsfall für Geofencing. Da der Anwendungsfall fast sicher die Standortermittlung im Hintergrund umfasst, verwenden Sie die Methode addGeofences(GeofencingRequest, PendingIntent)
.
Sie sollten die folgenden Konfigurationsoptionen festlegen:
Wenn Sie Verweildauerübergänge erfassen, verwenden Sie die Methode
setLoiteringDelay()
und geben Sie einen Wert von maximal fünf Minuten an.Verwenden Sie
setNotificationResponsiveness()
und geben Sie einen Wert von etwa fünf Minuten an. Sie können jedoch einen Wert von etwa zehn Minuten verwenden, wenn Ihre App die zusätzliche Verzögerung bei der Reaktionszeit verkraften kann.
Eine App kann maximal 100 Geofences gleichzeitig registrieren. In einem Anwendungsfall, in dem eine App eine große Anzahl von Händleroptionen verfolgen möchte, kann die App einen großen Geofence (auf Stadtebene) und dynamisch kleinere Geofences (für Standorte innerhalb der Stadt) für Geschäfte innerhalb des größeren Geofences registrieren. Wenn ein Nutzer einen großen Geofence betritt, fügen Sie kleinere Geofences hinzu. Wenn der Nutzer den größeren Geofence verlässt, entfernen Sie die kleineren Geofences und registrieren Sie Geofences für ein neues Gebiet neu.
Lang andauernde Standortaktualisierungen im Hintergrund ohne sichtbare App-Komponente
Beispiel: Eine App, die den Standort passiv erfasst
Verwenden Sie nach Möglichkeit die Methode setPriority()
mit der Option PRIORITY_NO_POWER
, da dies den Akku kaum belastet. Wenn die Verwendung von PRIORITY_NO_POWER
nicht möglich ist, verwenden Sie PRIORITY_BALANCED_POWER_ACCURACY
oder PRIORITY_LOW_POWER
. Verwenden Sie PRIORITY_HIGH_ACCURACY
jedoch nicht für anhaltende Hintergrundaktivitäten, da diese Option den Akku stark beansprucht.
Wenn Sie mehr Standortdaten benötigen, verwenden Sie den passiven Standort. Rufen Sie dazu die Methode setFastestInterval()
auf und übergeben Sie einen kleineren Wert als den, den Sie an setInterval()
übergeben. In Kombination mit der Option PRIORITY_NO_POWER
kann die passive Standortermittlung ohne Aufpreis den von anderen Apps berechneten Standort liefern.
Mit der Methode setMaxWaitTime()
können Sie die Häufigkeit steuern, indem Sie eine gewisse Latenz hinzufügen. Wenn Sie beispielsweise die Methode setinterval()
mit einem Wert von etwa 10 Minuten verwenden, sollten Sie setMaxWaitTime()
mit einem Wert zwischen 30 und 60 Minuten aufrufen. Bei Verwendung dieser Optionen wird der Standort für Ihre App ungefähr alle 10 Minuten berechnet, die App wird jedoch nur alle 30 bis 60 Minuten gestartet und einige Standortdaten sind als Batch-Update verfügbar. Bei diesem Ansatz wird die Latenz gegen mehr verfügbare Daten und eine bessere Akkuleistung eingetauscht.
Häufige Aktualisierungen mit hoher Genauigkeit, während der Nutzer mit anderen Apps interagiert
Beispiel: Eine Navigations- oder Fitness-App, die weiter funktioniert, wenn der Nutzer den Bildschirm ausschaltet oder eine andere App öffnet.
Verwenden Sie einen Dienst im Vordergrund. Wenn Ihre App im Auftrag des Nutzers möglicherweise kostenintensive Aufgaben ausführen wird, sollten Sie den Nutzer darüber informieren. Für einen Dienst im Vordergrund ist eine dauerhafte Benachrichtigung erforderlich. Weitere Informationen finden Sie unter Benachrichtigungen.