Bonnes pratiques d'accessibilité pour Android TV

Ce guide fournit les bonnes pratiques en matière d'accessibilité sur Android TV et des recommandations pour les applications natives et non natives.

Pourquoi l'accessibilité est-elle importante pour mon application TV ?

Les déficiences visuelles sont fréquentes chez les téléspectateurs. L'OMS estime que 2,2 milliards de personnes dans le monde souffrent de déficience visuelle, tandis qu'environ 32 millions d'adultes américains sont atteints d'une perte de vision importante (enquête nationale sur la santé de 2018). En Europe, l'UER estime que 30 millions de personnes sont concernées.

Les utilisateurs malvoyants apprécient les contenus multimédias autant que les autres. Une étude Comcast de 2017 a révélé que 96% des personnes interrogées regardaient la télévision (81% plus d'une heure par jour). Pourtant, 65% des utilisateurs signalent des difficultés à trouver du contenu. De plus, 80% des personnes handicapées interrogées dans une enquête au Royaume-Uni ont signalé des problèmes de streaming.

Les technologies d'assistance sont utiles, mais les applications TV doivent prendre en charge l'accessibilité pour la découverte de contenus. Portez une attention particulière aux conseils de navigation et aux libellés des éléments. Assurez-vous de la compatibilité avec des fonctionnalités telles que TalkBack pour améliorer considérablement l'expérience des utilisateurs souffrant de déficiences visuelles.

La première étape pour améliorer l'accessibilité est la sensibilisation. Ce guide peut vous aider, vous et votre équipe, à identifier les problèmes d'accessibilité de votre application TV.

Ressources d'accessibilité Android

Pour en savoir plus sur l'accessibilité sur Android, consultez nos ressources de développement sur l'accessibilité.

Mise à l'échelle du texte

Les applications Android TV doivent respecter les préférences de l'utilisateur concernant la mise à l'échelle du texte en prenant en charge différentes densités de pixels.

Veillez tout particulièrement à :

  • Utilisez wrap_content pour les dimensions dans les composants d'UI.
  • Assurez-vous que les mises en page réorganisent les composants lorsque leurs dimensions changent en fonction de l'échelle du texte.
  • Assurez-vous que les composants tiennent toujours sur l'écran avec des tailles de texte plus grandes.
  • N'utilisez pas d'unités de taille de texte sp pour les composants non flexibles.
  • Vérifiez la valeur de FONT_SCALE pour l'ajustement dans les vues personnalisées :

    // Checking font scale with Context
    val scale = resources.configuration.fontScale
    Log.d(TAG, "Text scale is: " + scale)
    

L'échelle du texte peut être modifiée à l'aide de la commande suivante :

adb shell settings put system font_scale 1.2f

Sur Android 12 et versions ultérieures, les utilisateurs peuvent modifier la mise à l'échelle du texte à partir des paramètres de l'appareil.

Dispositions de clavier

Dans Android 13 (niveau d'API 33) et versions ultérieures, vous pouvez utiliser getKeyCodeForKeyLocation() pour rechercher les codes de touches pour les emplacements de touches attendus. Cela peut être nécessaire si l'utilisateur a remappé certains emplacements de touches ou s'il utilise un clavier dont la disposition n'est pas standard.

Audiodescription

Dans Android 13 (niveau d'API 33) et versions ultérieures, une nouvelle préférence d'accessibilité à l'échelle du système permet aux utilisateurs d'activer les descriptions audio dans toutes les applications. Les applications Android TV peuvent vérifier la préférence de l'utilisateur en l'interrogeant avec isAudioDescriptionRequested().

Kotlin

private lateinit var accessibilityManager: AccessibilityManager

// In onCreate():
accessibilityManager = getSystemService(AccessibilityManager::class.java)

// Where your media player is initialized
if (am.isAudioDescriptionRequested) {
    // User has requested to enable audio descriptions
}

Java

private AccessibilityManager accessibilityManager;

// In onCreate():
accessibilityManager = getSystemService(AccessibilityManager.class);

// Where your media player is initialized
if(accessibilityManager.isAudioDescriptionRequested()) {
    // User has requested to enable audio descriptions
}

Les applications Android TV peuvent surveiller les modifications apportées aux préférences d'un utilisateur en ajoutant un écouteur à AccessibilityManager :

Kotlin

private val listener =
    AccessibilityManager.AudioDescriptionRequestedChangeListener { enabled ->
        // Preference changed; reflect its state in your media player
    }

override fun onStart() {
    super.onStart()

    accessibilityManager.addAudioDescriptionRequestedChangeListener(mainExecutor, listener)
}

override fun onStop() {
    super.onStop()

    accessibilityManager.removeAudioDescriptionRequestedChangeListener(listener)
}

Java

private AccessibilityManager.AudioDescriptionRequestedChangeListener listener = enabled -> {
    // Preference changed; reflect its state in your media player
};

@Override
protected void onStart() {
    super.onStart();

    accessibilityManager.addAudioDescriptionRequestedChangeListener(getMainExecutor(), listener);
}

@Override
protected void onStop() {
    super.onStop();

    accessibilityManager.removeAudioDescriptionRequestedChangeListener(listener);
}