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:
- 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 la classe
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 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. } }
-
Crea un
AmbientLifecycleObserver
e registra l'osservatore. In genere, viene utilizzata inonCreate()
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) // ... }
- Rimuovi l'osservatore chiamando
removeObserver()
, quando il comportamento sempre attivo non è più richiesto. Ad esempio, potresti chiamare questo metodo nel metodoonDestroy()
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 aonEnterAmbient()
:- Se il criterio
deviceHasLowBitAmbient
è impostato, disattiva l'anti-aliasing ove possibile. - Se
burnInProtectionRequired
è impostato, sposta periodicamente la visualizzazione ed evita aree bianche e continue.
- Se il criterio
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:
- Per Compose su Wear OS: dai un'occhiata all'
esempio di AlwaysOnKotlin basato sulla scrittura su GitHub, che utilizza il valore
AmbientAware
componibile della libreria Horologist. - Per le visualizzazioni: guarda l' esempio di AlwaysOnKotlin basato sulle visualizzazioni su GitHub.