Wear OS gestisce automaticamente il passaggio alla modalità a basso consumo di un'app attiva quando un utente non usa più il proprio smartwatch. Questa modalità è chiamata 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 da dove l'aveva interrotto.
Per casi d'uso specifici, ad esempio un utente che vuole visualizzare battito cardiaco e velocità durante una corsa, puoi anche controllare cosa viene visualizzato nella modalità Ambient a basso consumo. Le app per Wear OS eseguite in modalità Ambient e 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:
- Crea o aggiorna il tuo progetto in base alle configurazioni nella pagina Crea ed esegui un'app indossabile.
- Aggiungi l'autorizzazione
WAKE_LOCK
al file manifest Android:
<uses-permission android:name="android.permission.WAKE_LOCK" />
Abilita modalità sempre attiva
Per utilizzare il corso
AmbientLifecycleObserver
, segui questi passaggi:
-
Implementa l'interfaccia
AmbientLifecycleObserver.AmbientLifecycleCallback
, come nell'esempio seguente. In questa fase i metodi sono vuoti, ma più avanti nella guida vengono forniti dettagli sulle modifiche da apportare alla visualizzazione per attivare 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. } }
-
Crea un
AmbientLifecycleObserver
e registra l'osservatore. In genere, viene utilizzata inonCreate()
o nell'elemento componibile di primo livello se utilizzi 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) // ... }
- Rimuovi l'osservatore chiamando
removeObserver()
, quando il comportamento sempre attivo non è più richiesto. Ad esempio, puoi chiamare questo metodo nel metodoonDestroy()
della tua attività.
Modificare l'aspetto visivo in modalità Ambient
Per impostazione predefinita, quando implementi la modalità Sempre acceso, lo schermo non cambia il suo aspetto quando lo smartwatch entra in modalità Ambient. Puoi modificare questo
comportamento eseguendo l'override dei metodi in
AmbientLifecycleCallback
.
Per risparmiare energia:
- Illumina meno pixel e lascia nero gran parte dello schermo. Valuta la possibilità di mostrare solo informazioni critiche in modalità Ambient e fornire ulteriori dettagli quando l'utente attiva la 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 aonEnterAmbient()
:- Se il criterio
deviceHasLowBitAmbient
è impostato, disabilita l'anti-aliasing se possibile. - Se il criterio
burnInProtectionRequired
è impostato, sposta periodicamente la visualizzazione ed evita aree bianche in tinta unita.
- Se il criterio
Quando utilizzi Compose per Wear OS, ti consigliamo di usare questi metodi di callback per aggiornare lo stato, in modo che il sistema possa ricomporre la UI in modo appropriato.
Per un esempio di come si può ottenere questo risultato, dai un'occhiata al
Esempio di esercizio basato sulla composizione su GitHub, che utilizza il componibile AmbientAware
della libreria Horologist.