Optimiser les cadrans

Un cadran Wear OS fonctionne de manière continue. Il doit donc faire un usage efficace de l'énergie.

Démultipliez les performances du cadran. Cette page présente les bonnes pratiques à suivre pour optimiser le cadran, ainsi que les bonnes pratiques spécifiques aux animations et aux images.

Optimisation de base

Cette section présente les bonnes pratiques à suivre pour améliorer l'efficacité globale d'un cadran.

Couleur et luminosité du cadran

L'utilisation de couleurs sombres sur le cadran permet de réduire la consommation d'énergie de la montre. Voici quelques recommandations pour définir l'arrière-plan du cadran afin d'optimiser son utilisation de la batterie :

  • Couleur : lorsque cela est possible, utilisez un arrière-plan noir.
  • Luminosité : lorsqu'il n'est pas possible d'utiliser un arrière-plan noir, veillez à ce que la luminosité de la couleur d'arrière-plan soit inférieure ou égale à 25 % sur une échelle de teinte, saturation, valeur (HSV) ou teinte, saturation, luminosité (HSB). Par exemple, si vous utilisez la classe Color pour définir une couleur d'arrière-plan spécifiée avec l'échelle HSV, utilisez 25 ou moins pour le paramètre de valeur, qui contrôle la luminosité.

Utiliser des fonctionnalités dynamiques pour interagir avec le téléphone

Si un cadran nécessite une opération pour s'exécuter sur le téléphone, n'exécutez le code que lorsque le cadran est actif. La méthode recommandée pour permettre à l'application sur le téléphone de détecter que le cadran correspondant est actif consiste à utiliser l'API CapabilityClient.

Surveiller la consommation d'énergie

L'application associée Wear OS permet aux développeurs et aux utilisateurs de voir la quantité de batterie consommée par les différents processus sur l'appareil connecté. Pour afficher cette option, accédez à Settings > Watch battery (Paramètres > Batterie de la montre).

Enregistrer des cadrans compatibles avec le chiffrement

Android 7.0 et les versions ultérieures prennent en charge le chiffrement basé sur les fichiers et permettent aux applications compatibles avec le chiffrement de s'exécuter avant que l'utilisateur ne fournisse le code secret de déchiffrement au démarrage. Cela peut limiter à 30 secondes maximum la durée de la transition entre l'animation de démarrage et l'affichage du cadran de la montre.

Pour accélérer le démarrage, ajoutez android:directBootAware="true" au fichier manifeste du cadran.

Remarque : Utilisez cette fonctionnalité avec les cadrans qui n'utilisent pas le stockage chiffré par identifiants.

Bonnes pratiques concernant les animations

Les bonnes pratiques de cette section contribuent à réduire la consommation d'énergie associée aux animations.

Réduire la fréquence de frames des animations

Les animations consomment souvent beaucoup de ressources de calcul et d'énergie. La plupart des animations sont fluides à 30 frames par seconde. Évitez donc de les exécuter à une fréquence de frames plus élevée. Vous pouvez utiliser des fréquences de frames dynamiques. Pour en savoir plus, consultez la section Exemple de canevas de cadran.

Laisser le processeur en veille entre les animations

Utilisez les animations avec modération pour optimiser l'autonomie de la batterie. Même le clignotement des deux points nuit à l'autonomie de la batterie.

Les animations et les petits changements de contenu sur le cadran activent le processeur. Laissez le processeur en veille entre les animations, par exemple en utilisant de courtes séquences d'animation toutes les secondes en mode interactif, puis en laissant le processeur en veille jusqu'à la seconde suivante. Permettre au processeur de régulièrement passer en veille, même brièvement, peut considérablement réduire la consommation d'énergie.

Bonnes pratiques concernant les images

Les bonnes pratiques de cette section contribuent réduire la consommation d'énergie associée aux images.

Réduire la taille de vos éléments bitmap

De nombreux cadrans sont constitués d'une image de fond et d'autres éléments graphiques transformés et superposés à l'image de fond, tels que des aiguilles analogiques et d'autres éléments qui changent au fil du temps. Plus ces éléments graphiques sont grands, plus leur transformation consomme des ressources de calcul. En général, ces éléments graphiques sont pivotés (et parfois mis à l'échelle) dans la méthode Render.CanvasRenderer.render() chaque fois que le système redessine le cadran, comme décrit dans la section Dessiner un cadran.

Figure 1 : Recadrer les aiguilles analogiques pour supprimer les pixels supplémentaires

La réduction de la taille des éléments bitmap permet non seulement d'améliorer les performances de vos animations, mais aussi d'économiser de l'énergie. Suivez ces conseils pour améliorer les performances de votre cadran :

  • N'utilisez pas d'éléments graphiques plus grands que nécessaire.
  • Supprimez les pixels supplémentaires sur les bords.

Par exemple, la taille de l'image de l'aiguille analogique à gauche de la figure 1 peut être réduite de 97 % en supprimant les pixels transparents supplémentaires, comme illustré à droite de la figure.

Combiner des éléments bitmap

Si vos bitmaps sont souvent dessinés ensemble, envisagez de les regrouper dans un seul élément graphique. Par exemple, il est souvent possible de combiner l'image de fond en mode interactif et les coches pour éviter de dessiner deux bitmaps en plein écran chaque fois que le système redessine le cadran.

Désactiver l'anticrénelage lors du dessin de bitmaps mis à l'échelle

Lorsque vous dessinez un bitmap mis à l'échelle sur l'objet Canvas à l'aide de la méthode Canvas.drawBitmap(), vous pouvez fournir une instance Paint pour configurer plusieurs options. Pour améliorer les performances, désactivez l'anticrénelage à l'aide de la méthode setAntiAlias(), car cette option n'a aucun effet sur les bitmaps.

Figure 2. Exemple de filtrage par bitmap désactivé (à gauche) et activé (à droite)

Utiliser le filtrage par bitmap

Pour les éléments bitmap superposés aux autres éléments, activez le filtrage par bitmap sur la même instance Paint à l'aide de la méthode setFilterBitmap(). La figure 2 présente une vue agrandie d'une aiguille analogique avec et sans filtrage par bitmap.

Remarque : Lorsque le mode Veille est actif, désactivez le filtrage par bitmap. En mode Veille à faible vitesse de transmission, le système n'affiche pas les couleurs de l'image de manière fiable pour que le filtrage par bitmap puisse être correctement traité.

Déplacer les opérations intensives en dehors de la méthode de dessin

Le système appelle la méthode Render.CanvasRenderer.render() chaque fois qu'il redessine le cadran. Pour améliorer les performances, n'incluez dans cette méthode que les opérations strictement obligatoires pour mettre à jour le cadran.

Dans la mesure du possible, évitez les opérations suivantes dans la méthode Render.CanvasRenderer.render() :

  • Chargement d'images et d'autres ressources
  • Redimensionnement d'images
  • Attribution d'objets
  • Exécution de calculs dont le résultat ne change pas entre les frames

Utilisez le Profileur de processeur pour analyser les performances de votre cadran. Assurez-vous en particulier que le temps d'exécution de l'implémentation de Render.CanvasRenderer.render() est courte et cohérente entre les appels. Pour en savoir plus, consultez la section Inspecter l'activité du processeur avec le Profileur de processeur.

L'application exemple de cadran illustre les bonnes pratiques à suivre pour configurer un cadran.