Standort unter Wear OS erkennen

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.

Weitere Informationen

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.