Durch ihren kleinen, auf einen Blick verfügbaren Formfaktor ist Wear OS die ideale Plattform für Apps die den Nutzerstandort aufzeichnen, melden und darauf reagieren. Sie können beispielsweise die Nutzer in Echtzeit über Entfernung, Geschwindigkeit und Richtung oder auf einen Blick Hinweise auf die Umgebung.
Einige Uhren verfügen über einen eingebauten GPS-Sensor, der Standortdaten abruft, die ein verbundenes Smartphone erfordern. Wenn Sie Standortdaten in einer Smartwatch-App anfordern, ruft das System den Standort entweder vom Telefon oder von der Uhr ab. eine energieeffiziente Methode. Auch ohne GPS-Sensor in der Uhr können Sie Standortinformationen zu erhalten.
Um die Auswirkungen der Standortdatenerfassung auf die Akkulaufzeit zu verringern,
Anruf
setPriority()
durch den Wert
PRIORITY_BALANCED_POWER_ACCURACY
Abweichende Prioritätseinstellungen
Chips unterschiedlich optimieren.
Wenn möglich, den Akku schonen, indem du nicht mehr nach dem Standort fragst
als einmal pro Minute mit
setInterval()
Wie in den folgenden Abschnitten beschrieben, muss Ihre App mit dem Verlust von Daten Standortdaten, wenn eine Smartwatch ohne Sensor nicht mehr mit dem Smartphone verbunden ist.
Methode auswählen
Es gibt mehrere Möglichkeiten, Standortdaten für eine Wear OS-App bereitzustellen. Sie können Verwenden Sie den Fused Location Provider (FLP) oder Wear Health Services (WHS). FLP ist ein Google Play Services API
Verwenden Sie FLP in folgenden Fällen:
- Sie möchten aktuelle, aber nicht fortlaufende Standortdaten abrufen, z. B. Markierung des Standorts Standort eines geparkten Autos.
- Sie möchten dauerhaft auf den Standort zugreifen, benötigen jedoch keinen Standortverlauf.
Verwenden Sie das WHS unter folgenden Umständen:
- Sie benötigen Daten von anderen Sensoren oder in Zukunft zu testen.
- Deine App ist eine Trainings- oder Trainings-App, die Standortdaten über eines bestimmten Zeitintervalls.
Informationen zu Uhren, für die ein Pairing mit einem iPhone besteht, findest du unter Standortdaten für mit iPhones gekoppelte Smartwatches
Fused Location Provider (Anbieter für kombinierte Standortbestimmung) verwenden
Auf einer Smartwatch können Sie Standortdaten über die
FusedLocationProviderClient
Die FLP kann Standortdaten des Smartphones verwenden. Weitere Informationen finden Sie unter
Erstellen Sie einen Client für Standortdienste.
Informationen zum Anfordern von Standortaktualisierungen und zum kontinuierlichen Tracking eines Informationen zum Standort des Nutzers erhalten Sie unter Standortaktualisierungen abfragen.
Integriertes GPS erkennen
Wenn Nutzende mit einer Uhr joggen, die keinen eingebauten GPS-Sensor hat, und die Uhr verlässt mit dem gekoppelten Smartphone verbunden ist, kann die Smartwatch-App keine Standortdaten über das verbundenes Gerät. Erkennen Sie diese Situation in Ihrer App und warnen Sie den Nutzer, dass Standortfunktionen sind nicht verfügbar.
Um zu ermitteln, ob eine Uhr über einen integrierten GPS-Sensor verfügt, rufe die
hasSystemFeature()
mit
PackageManager.FEATURE_LOCATION_GPS
Der folgende Code erkennt, ob die Uhr über einen eingebauten GPS-Sensor verfügt, wenn du eine Aktivität startest:
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.main_activity) if (!hasGps()) { Log.d(TAG, "This hardware doesn't have GPS.") // Fall back to functionality that doesn't use location or // warn the user that location function isn't available. } } private fun hasGps(): Boolean = packageManager.hasSystemFeature(PackageManager.FEATURE_LOCATION_GPS)
Java
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_activity); if (!hasGps()) { Log.d(TAG, "This hardware doesn't have GPS."); // Fall back to functionality that doesn't use location or // warn the user that location function isn't available. } ... } private boolean hasGps() { return getPackageManager().hasSystemFeature(PackageManager.FEATURE_LOCATION_GPS); }
Umgang mit Verbindungsunterbrechungen
Wenn die Uhr keinen eingebauten GPS-Sensor hat und keine Verbindung zum Telefon mehr besteht, wird die Uhr verliert seinen Standortdatenstream. Wenn Ihre App einen kontinuierlichen Datenstrom erwartet, muss Ihre App den Verbindungsverlust erkennen, den Nutzer warnen die Funktionalität beeinträchtigen.
Wie bei einem mobilen Gerät gilt auch hier: Wenn Sie Standortaktualisierungen mit
FusedLocationProviderClient.requestLocationUpdates()
übergeben Sie entweder
LocationCallback
oder
PendingIntent
Beide umfassen die Standortinformationen und die
LocationAvailability
Status.
Wenn Sie die Option LocationCallback
verwenden, überschreiben Sie
onLocationAvailability()
, um aktuelle Informationen zum Verfügbarkeitsstatus an deinem Standort zu erhalten.
Wenn Sie die Option PendingIntent
und ein
Intent
wird zurückgegeben. Extrahieren Sie den Speicherort.
Verfügbarkeitsstatus aus dem Intent
mithilfe der
LocationAvailability.extractLocationAvailability(Intent)
.
Standort des Alias nicht gefunden
Wenn das GPS-Signal unterbrochen wird, können Sie den letzten bekannten Standort des auf die Uhr des Nutzers. Es ist hilfreich, den letzten bekannten Standort abzurufen, wenn du GPS-Standortkorrektur und wenn die Uhr kein integriertes GPS hat und ihre Verbindung zum Smartphone. Weitere Informationen finden Sie unter Letzten bekannten Standort abrufen
Standort mit aufeinanderfolgenden Aufrufen löschen
Wenn Sie Batch-Aufrufe verwenden, rufen Sie
flushLocations()
wenn sich das Display wieder einschaltet oder aus dem Inaktivmodus zurückkehrt.
alle in Batches zusammengefassten Standorte sofort an alle registrierten LocationListeners
zurückgeben,
LocationCallbacks
und Pending Intents
.
Empfehlungen für dich
- Hinweis: Der Linktext wird angezeigt, wenn JavaScript deaktiviert ist.
- Standort für Akku optimieren
- Benachrichtigung erstellen {:#notification}
- Erkennen, wann Nutzer eine Aktivität starten oder beenden