Mantenere la tua app visibile su Wear

Wear OS gestisce automaticamente il passaggio alla modalità a basso consumo per un'app attiva quando un utente non utilizza più l'orologio. Si tratta della modalità Ambient di sistema. Se l'utente interagisce di nuovo con lo smartwatch entro un determinato periodo di tempo, Wear OS lo riporta nell'app dal punto in cui l'aveva interrotto.

Per casi d'uso specifici, come un utente che vuole visualizzare il battito cardiaco e la velocità durante una corsa, puoi anche controllare ciò che viene visualizzato nella modalità Ambient a basso consumo. Le app per Wear OS eseguite sia in modalità Ambient che interattiva sono chiamate app sempre attive.

Rendere un'app costantemente visibile influisce sulla durata della batteria, quindi tieni conto di questo impatto quando aggiungi questa funzionalità all'app.

Configura il progetto

Per supportare la modalità Ambient, svolgi i seguenti passaggi:

  1. Crea o aggiorna il tuo progetto in base alle configurazioni nella pagina Crea ed esegui un'app indossabile.
  2. Aggiungi l'autorizzazione WAKE_LOCK al file manifest Android:
<uses-permission android:name="android.permission.WAKE_LOCK" />

Abilita modalità sempre attiva

Per utilizzare la classe AmbientLifecycleObserver, segui questi passaggi:

  1. Implementa l'interfaccia AmbientLifecycleObserver.AmbientLifecycleCallback, come nell'esempio seguente. In questa fase i metodi sono vuoti, ma più avanti nella guida fornisce i dettagli delle modifiche da apportare alla visualizzazione per entrare e uscire dalla modalità Ambient.

    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. Crea un AmbientLifecycleObserver e registra l'osservatore. In genere, viene utilizzata in onCreate() o nell'elemento componibile di primo livello se si utilizza Compose per Wear OS, per consentire l'attivazione del comportamento sempre attivo durante il ciclo di vita dell'attività.

    Kotlin

    private val ambientObserver = AmbientLifecycleObserver(activity, callback)
    
    override fun onCreate(savedInstanceState: Bundle) {
      super.onCreate(savedInstanceState)
      lifecycle.addObserver(observer)
    
      // ...
    }
    
  3. Rimuovi l'osservatore chiamando removeObserver(), quando il comportamento sempre attivo non è più richiesto. Ad esempio, potresti chiamare questo metodo nel metodo onDestroy() della tua attività.

Modifica l'aspetto visivo in modalità Ambient

Per impostazione predefinita, durante l'implementazione della modalità sempre attiva, lo schermo non cambia l'aspetto quando viene attivata la modalità Ambient dello smartwatch. Puoi modificare questo comportamento eseguendo l'override dei metodi nella AmbientLifecycleCallback.

Per risparmiare energia:

  • Illumina meno pixel e lascia scura la maggior parte dello schermo. Potresti mostrare solo le informazioni critiche in modalità Ambient e fornire ulteriori dettagli quando l'utente accede alla modalità interattiva.
  • Modifica i contenuti per aggiornamenti meno frequenti. Ad esempio, mostra i timer al minuto più vicino anziché al secondo più vicino.
  • Nell'oggetto AmbientDetails passato a onEnterAmbient():
    • Se il criterio deviceHasLowBitAmbient è impostato, disattiva l'anti-aliasing ove possibile.
    • Se burnInProtectionRequired è impostato, sposta periodicamente la visualizzazione ed evita aree bianche e continue.

Quando usi Scrivi per Wear OS, ti consigliamo di usare questi metodi di callback per aggiornare lo stato, che consente al sistema di ricomporre la UI in modo appropriato.

Per esempi su come ottenere questo risultato, consulta le seguenti risorse: