Améliorer les performances du cadran avec l'accélération matérielle

Les applications Wear OS qui utilisent des vues standards bénéficient du rendu graphique avec accélération matérielle. Cependant, comme les cadrans sont généralement mis en œuvre à l'aide de canevas, ils ne profitent pas automatiquement de l'accélération matérielle.

Pourquoi utiliser un canevas avec accélération matérielle pour votre cadran ?

Dans la plupart des cas, le cadran affiche une fréquence de frames plus élevée lorsque vous utilisez un canevas avec accélération matérielle. À des fréquences de frames plus élevées, les animations et les transitions sont plus fluides à l'œil nu, ce qui améliore l'expérience utilisateur.

Lorsque vous utilisez un canevas avec accélération matérielle, vous pouvez également accéder à davantage de données de performances de l'UI concernant le cadran. Par exemple, vous ne pouvez accéder aux informations détaillées sur les frames décrits dans la section Mesurer les performances de l'interface utilisateur que lorsque vous utilisez un canevas avec accélération matérielle.

Le cadran de ma montre utilise-t-il l'accélération matérielle ?

Vous pouvez vérifier si le cadran utilise l'accélération matérielle à l'aide des options pour les développeurs ou d'adb.

Effectuer une vérification à l'aide des options pour les développeurs

Pour vérifier si le cadran de votre montre utilise l'accélération matérielle à l'aide des options pour les développeurs, procédez comme suit :

  1. Sur un appareil Wear OS, accédez à Paramètres > Options pour les développeurs.
  2. Activez Debug GPU profiling (Déboguer le profilage GPU).

    Cette option trace une superposition sur les surfaces visibles (une sur chaque surface) pour indiquer le temps passé à chaque étape du rendu GPU correspondant.

  3. Sur votre appareil, retournez sur le cadran.

  4. Si le cadran utilise un canevas avec accélération matérielle, vous verrez une nouvelle barre, qui se déplace de droite à gauche pour chaque frame affiché du cadran.

Effectuer une vérification avec adb

Pour vérifier si votre cadran utilise l'accélération matérielle avec adb, procédez comme suit :

  1. Sur un appareil Wear OS, remplacez le cadran par celui que vous souhaitez tester.
  2. Laissez le cadran s'exécuter pendant quelques secondes en mode interactif.
  3. Exécutez la commande adb suivante pour vérifier s'il utilise l'accélération matérielle :

    adb shell dumpsys gfxinfo [package-name]

Après avoir exécuté la commande, une sortie semblable à l'exemple suivant s'affiche :

Applications Graphics Acceleration Info:
Uptime: 2239933 Realtime: 13568751

** Graphics info for pid 1100 [package-name] **

Stats since: 59875589194ns
Total frames rendered: 1213
Janky frames: 0 (0.00%)
50th percentile: 7ms
90th percentile: 18ms
95th percentile: 25ms
99th percentile: 150ms
Number Missed Vsync: 0
Number High input latency: 0
Number Slow UI thread: 0
Number Slow bitmap uploads: 0
Number Slow issue draw commands: 0
Number Frame deadline missed: 0

...

Dans cet exemple de sortie, vous remarquerez la ligne Total frames rendered. En général, si la sortie indique un total de frames supérieur à 0, le cadran utilise un canevas accéléré. Dans le cas contraire, le nombre total de frames affichés et d'autres données de frame dans le rapport est normalement égal à 0.

Toutefois, comme gfxinfo génère la sortie pour le package complet de votre application, vous verrez peut-être des informations de temps de rendu provenant d'un autre outil que le canevas avec accélération matérielle, comme Activity que votre application utilise pour un écran de configuration. Pour déterminer la différence, assurez-vous que le cadran est la seule surface visible, puis réexécutez la commande adb shell dumpsys gfxinfo afin de vérifier si la valeur de Total frames rendered augmente.

Bonnes pratiques

Suivez ces bonnes pratiques pour offrir la meilleure expérience possible à vos utilisateurs.

Optimiser l'autonomie de la batterie

Si le cadran de votre montre implique des animations de longue durée, l'accélération matérielle peut considérablement réduire l'autonomie de la batterie d'un appareil. Ce problème peut s'aggraver si le cadran essaie de dessiner dans chaque frame. Pour éviter tout impact négatif sur vos utilisateurs, n'utilisez pas d'animations de longue durée dans le cadran. Cette consigne n'est pas spécifique à l'accélération matérielle, mais étant donné qu'elle augmente le nombre de frames que vous pouvez tracer, il est encore plus important de la suivre. Pour en savoir plus, consultez les bonnes pratiques concernant les animations.

Utiliser des opérations de dessin compatibles

Certaines opérations de dessin ne sont pas compatibles avec l'accélération matérielle. Pour en savoir plus sur les fonctionnalités compatibles, consultez la section Accélération matérielle. Si vous disposez d'un petit chemin de code qui utilise une opération non compatible, vous pouvez créer un canevas à partir d'un bitmap, puis dessiner ce bitmap dans le canevas du cadran à l'aide de canvas.drawBitmap().

Assurer la compatibilité en cas d'utilisation de l'accélération matérielle

L'accélération matérielle est disponible sur les appareils Wear OS qui exécutent Android 9 (niveau d'API 28) ou version ultérieure. Si vous souhaitez éviter une opération de dessin spécifique sur des appareils plus anciens (sur lesquels l'accélération matérielle n'est pas disponible) ou une opération de dessin non compatible sur un canevas avec accélération matérielle, vous pouvez vérifier Canvas.isHardwareAccelerated(), puis fournir une autre fonctionnalité.