Cómo mantener tu app visible en Wear

Wear OS controla automáticamente el cambio al modo de bajo consumo de una app activa cuando un usuario deja de usar el reloj. Eso se denomina modo ambiente del sistema. Si el usuario vuelve a interactuar con el reloj dentro de un período determinado, Wear OS lo lleva a la última app que usó.

Para casos de uso específicos, como un usuario que desea ver la frecuencia cardíaca y el ritmo durante una carrera, también puedes controlar lo que se muestra en el modo ambiente de bajo consumo. Las apps para Wear OS que se ejecutan en los modos interactivo y ambiente se denominan apps siempre activas.

Hacer que una app sea visible constantemente afecta la duración de la batería, por lo que debes tener en cuenta ese impacto cuando agregues esta función a tu app.

Cómo configurar tu proyecto

Para admitir el modo ambiente, sigue estos pasos:

  1. Crea o actualiza tu proyecto según la configuración de la página Cómo crear y ejecutar una app para wearables.
  2. Agrega el permiso WAKE_LOCK al archivo de manifiesto de Android:
<uses-permission android:name="android.permission.WAKE_LOCK" />

Cómo habilitar el modo siempre activo

Para usar la clase AmbientLifecycleObserver, haz lo siguiente:

  1. Implementa la interfaz AmbientLifecycleObserver.AmbientLifecycleCallback, como en el siguiente ejemplo. En esta etapa, los métodos están vacíos, pero más adelante en la guía se proporcionan detalles sobre los cambios que debes realizar en la visualización para entrar al modo ambiente y salir de él.

    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 y registra el observador. Por lo general, se usa en onCreate() o en el elemento componible de nivel superior si se usa Compose para Wear OS, para permitir que se habilite el comportamiento siempre activo durante todo el ciclo de vida de la actividad.

    Kotlin

    private val ambientObserver = AmbientLifecycleObserver(activity, callback)
    
    override fun onCreate(savedInstanceState: Bundle) {
      super.onCreate(savedInstanceState)
      lifecycle.addObserver(observer)
    
      // ...
    }
    
  3. Quita el observador llamando a removeObserver() cuando ya no se requiera el comportamiento siempre activo. Por ejemplo, puedes llamar a este método en el método onDestroy() de tu actividad.

Cómo modificar la apariencia visual en el modo ambiente

De forma predeterminada, cuando se implementa el comportamiento siempre activo, la pantalla no cambia su apariencia cuando el reloj entra en el modo ambiente. Puedes modificar este comportamiento anulando los métodos en AmbientLifecycleCallback.

Para ahorrar energía, haz lo siguiente:

  • Ilumina menos píxeles y deja la mayor parte de la pantalla negra. Considera mostrar solo la información crítica en el modo ambiente y proporciona más detalles cuando el usuario entre en el modo interactivo.
  • Ajusta el contenido para que se actualice con menos frecuencia. Por ejemplo, muestra los cronómetros al minuto y no al segundo más cercano.
  • En el objeto AmbientDetails que se pasa a onEnterAmbient(), haz lo siguiente:
    • Si se configura deviceHasLowBitAmbient, inhabilita el suavizado de contorno siempre que sea posible.
    • Si se configura burnInProtectionRequired, cambia la visualización de forma periódica y evita las áreas blancas sólidas.

Cuando uses Compose para Wear OS, te recomendamos que utilices estos métodos de devolución de llamada para actualizar el estado, lo que permite que el sistema recomponga tu IU de manera adecuada.

Para ver ejemplos de cómo se puede hacer esto, consulta los siguientes recursos: