Conserver la visibilité de votre application sur Wear

Wear OS gère automatiquement le passage en mode économie d'énergie pour une application active lorsqu'un utilisateur n'utilise plus sa montre. Il s'agit du mode ambiant système. Si l'utilisateur interagit de nouveau avec la montre dans un certain délai, Wear OS lui permet de revenir à l'application qu'il a quittée.

Dans des cas d'utilisation spécifiques, par exemple lorsqu'un utilisateur souhaite consulter sa fréquence cardiaque et son allure pendant une course, vous pouvez également contrôler le contenu affiché en mode économie d'énergie (mode ambiant). Les applications Wear OS qui s'exécutent en mode ambiant et en mode interactif sont des applications toujours activées (ou Always-on).

Rendre une application constamment visible a un impact sur l'autonomie de la batterie. Par conséquent, tenez-en compte lorsque vous ajoutez cette fonctionnalité à votre application.

Configurer votre projet

Pour prendre en charge le mode ambiant, procédez comme suit :

  1. Créez ou mettez à jour votre projet en fonction des configurations de la page Créer et exécuter une appli connectée.
  2. Ajoutez l'autorisation WAKE_LOCK au fichier manifeste Android :
<uses-permission android:name="android.permission.WAKE_LOCK" />

Activer le mode Always-on

Pour utiliser la classe AmbientLifecycleObserver, procédez comme suit :

  1. Implémentez l'interface AmbientLifecycleObserver.AmbientLifecycleCallback, comme dans l'exemple suivant. À ce stade, les méthodes sont vides. Toutefois, plus loin dans le guide, vous découvrirez les modifications à apporter à la visualisation pour activer et désactiver le mode ambiant.

    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. Créez un AmbientLifecycleObserver et enregistrez l'observateur. En règle générale, cette option est utilisée dans onCreate() ou dans le composable de premier niveau si vous utilisez Compose pour Wear OS, afin de permettre l'activation du comportement always-on tout au long du cycle de vie de l'activité.

    Kotlin

    private val ambientObserver = AmbientLifecycleObserver(activity, callback)
    
    override fun onCreate(savedInstanceState: Bundle) {
      super.onCreate(savedInstanceState)
      lifecycle.addObserver(observer)
    
      // ...
    }
    
  3. Supprimez l'observateur en appelant removeObserver() lorsque le comportement toujours activé n'est plus nécessaire. Par exemple, vous pouvez appeler cette méthode dans la méthode onDestroy() de votre activité.

Modifier l'apparence visuelle en mode ambiant

Par défaut, lorsque vous activez le mode always-on, l'apparence de l'écran ne change pas lorsque la montre passe en mode ambiant. Vous pouvez modifier ce comportement en remplaçant les méthodes dans AmbientLifecycleCallback.

Pour économiser de l'énergie, procédez comme suit :

  • Limitez la luminosité et laissez la majeure partie de l'écran noir. Envisagez de n'afficher que les informations critiques en mode ambiant et fournissez plus de détails lorsque l'utilisateur passe en mode interactif.
  • Ajustez le contenu pour réduire la fréquence des mises à jour. Par exemple, affichez les minuteurs à la minute la plus proche plutôt qu'à la seconde la plus proche.
  • Dans l'objet AmbientDetails transmis à onEnterAmbient() :
    • Si deviceHasLowBitAmbient est défini, désactivez l'anticrénelage dans la mesure du possible.
    • Si burnInProtectionRequired est défini, déplacez régulièrement la visualisation et évitez les zones blanches unies.

Lorsque vous utilisez Compose pour Wear OS, nous vous recommandons d'utiliser ces méthodes de rappel pour mettre à jour l'état, ce qui permet au système de recomposer votre UI de manière appropriée.

Pour savoir comment procéder, consultez l' exemple d'exercice basé sur Compose sur GitHub, qui utilise le composable AmbientAware de la bibliothèque Horologist.