App auf Wear OS sichtbar lassen

Wear OS wechselt für eine aktive App automatisch in den Energiesparmodus, wenn ein Nutzer seine Smartwatch nicht mehr verwendet. Das wird als Umgebungsmodus des Systems bezeichnet. Wenn der Nutzer innerhalb eines bestimmten Zeitraums noch einmal mit der Smartwatch interagiert, wird er über Wear OS an der Stelle wieder geöffnet, wo er beim letzten Mal aufgehört hat.

Für bestimmte Anwendungsfälle, z. B. wenn ein Nutzer während eines Laufs Herzfrequenz und Geschwindigkeit sehen möchte, kannst du auch festlegen, was im energiesparenden Inaktivmodus angezeigt wird. Wear OS-Apps, die sowohl im Inaktivmodus als auch im interaktiven Modus ausgeführt werden, werden als Always-On-Apps bezeichnet.

Wenn eine App ständig sichtbar ist, wirkt sich dies auf die Akkulaufzeit aus. Berücksichtige dies, wenn du diese Funktion deiner App hinzufügst.

Projekt konfigurieren

So kannst du den Inaktivmodus aktivieren:

  1. Erstellen oder aktualisieren Sie Ihr Projekt anhand der Konfigurationen auf der Seite Wearable-Apps erstellen und ausführen.
  2. Fügen Sie der Android-Manifestdatei die Berechtigung WAKE_LOCK hinzu:
<uses-permission android:name="android.permission.WAKE_LOCK" />

Always-on-Modus aktivieren

So verwenden Sie die Klasse AmbientLifecycleObserver:

  1. Implementiere die Schnittstelle AmbientLifecycleObserver.AmbientLifecycleCallback wie im folgenden Beispiel. Zu diesem Zeitpunkt sind die Methoden leer. Weiter unten im Leitfaden finden Sie jedoch Details dazu, welche Änderungen Sie an der Visualisierung vornehmen müssen, um den Inaktivmodus zu starten und zu beenden.

    Kotlin

        val ambientCallback = object : AmbientLifecycleObserver.AmbientLifecycleCallback {
          override fun onEnterAmbient(ambientDetails: AmbientLifecycleObserver.AmbientDetails) {
            // ... Called when moving from interactive mode into ambient mode.
          }
    
          override fun onExitAmbient() {
            // ... Called when leaving ambient mode, back into interactive mode.
          }
    
          override fun onUpdateAmbient() {
            // ... Called by the system in order to allow the app to periodically
            // update the display while in ambient mode. Typically the system will
            // call this every 60 seconds.
          }
        }
        
  2. Erstellen Sie ein AmbientLifecycleObserver und registrieren Sie den Beobachter. In der Regel wird dies in onCreate() oder in der zusammensetzbaren Funktion auf oberster Ebene (bei Verwendung von Compose für Wear OS) verwendet, damit das Always-on-Verhalten während des gesamten Lebenszyklus der Aktivität aktiviert werden kann.

    Kotlin

    private val ambientObserver = AmbientLifecycleObserver(activity, callback)
    
    override fun onCreate(savedInstanceState: Bundle) {
      super.onCreate(savedInstanceState)
      lifecycle.addObserver(observer)
    
      // ...
    }
    
  3. Entfernen Sie den Beobachter durch Aufrufen von removeObserver(), wenn das Always-On-Verhalten nicht mehr erforderlich ist. Sie können diese Methode beispielsweise in der Methode onDestroy() Ihrer Aktivität aufrufen.

Visuelle Darstellung im Inaktivmodus ändern

Bei der Implementierung eines Always-On-Modus ändert sich das Display standardmäßig nicht, wenn die Uhr in den Inaktivmodus wechselt. Sie können dieses Verhalten ändern, indem Sie die Methoden in AmbientLifecycleCallback überschreiben.

So können Sie Strom sparen:

  • Leuchten weniger Pixel auf und lassen den Großteil des Displays schwarz. Am besten zeigen Sie im Inaktivmodus nur kritische Informationen an und stellen Sie weitere Details bereit, wenn der Nutzer in den interaktiven Modus wechselt.
  • Passe alle Inhalte für weniger häufige Updates an. Du kannst Timer beispielsweise auf die nächste Minute statt auf die nächste Sekunde anzeigen.
  • Führen Sie im AmbientDetails-Objekt, das an onEnterAmbient() übergeben wurde, folgende Schritte aus:
    • Wenn deviceHasLowBitAmbient festgelegt ist, sollten Sie Anti-Aliasing nach Möglichkeit deaktivieren.
    • Wenn burnInProtectionRequired festgelegt ist, verschieben Sie die Visualisierung regelmäßig und vermeiden Sie durchgehend weiße Bereiche.

Wenn Sie Compose für Wear OS verwenden, empfehlen wir diese Callback-Methoden, um den state zu aktualisieren. Dadurch kann das System die UI entsprechend neu zusammensetzen.

Ein Beispiel dafür, wie dies erreicht werden kann, finden Sie im Übungsbeispiel auf der Grundlage von Zusammensetzungen auf GitHub. Darin wird die zusammensetzbare Funktion AmbientAware aus der Horologist-Bibliothek verwendet.