Best practice di accessibilità per Android TV

Questa guida fornisce best practice per l'accessibilità su Android TV e fornisce consigli per le app sia native che non native.

Perché l'accessibilità è importante per la mia app TV?

I problemi alla vista non sono rari tra la popolazione che guarda la TV. Secondo l'Organizzazione Mondiale della Sanità (OMS), circa 2,2 miliardi di persone in tutto il mondo hanno una disabilità visiva. Secondo il National Health Interview Survey 2018, negli Stati Uniti 32 milioni di americani di età pari o superiore a 18 anni hanno subito una significativa perdita della vista. In Europa, le stime fanno riferimento a 30 milioni di persone cieche e ipovedenti, secondo l'Unione Europea per i ciechi (EBU).

Soprattutto, gli utenti con disabilità visiva apprezzano i contenuti multimediali proprio come i coetanei completamente ipovedenti. Un sondaggio del 2017 commissionato da Comcast ha dimostrato che il 96% degli utenti ciechi o ipovedenti guarda regolarmente la TV, mentre l'81% guarda la TV per più di un'ora al giorno. Tuttavia, il 65% ha anche riferito di aver riscontrato problemi con la ricerca dei contenuti in TV. Inoltre, in un sondaggio del 2020 nel Regno Unito, l'80% delle persone con disabilità ha dichiarato di aver riscontrato problemi di accessibilità con i servizi di streaming video on demand.

Anche se le tecnologie per la disabilità possono aiutare gli utenti ipovedenti, è importante supportare l'accessibilità nei percorsi di scoperta dei contenuti per le app per la TV. Ad esempio, presta particolare attenzione a fornire indicazioni di navigazione e a etichettare correttamente gli elementi, oltre a garantire che le app TV funzionino correttamente con le funzioni di accessibilità come TalkBack. Questi passaggi possono migliorare notevolmente l'esperienza degli utenti con problemi di vista.

Il primo passo per migliorare l'accessibilità è la consapevolezza. Questa guida può aiutare te e il tuo team a scoprire problemi di accessibilità relativi alla tua app TV.

Risorse per l'accessibilità Android

Per ulteriori informazioni sull'accessibilità su Android, consulta le nostre risorse per lo sviluppo dell'accessibilità.

Ridimensionamento del testo

Le app Android TV devono rispettare le preferenze dell'utente relative al ridimensionamento del testo supportando diverse densità di pixel.

Prestare particolare attenzione a:

  • Utilizza wrap_content per le dimensioni nei componenti dell'interfaccia utente.
  • Assicurati che i layout riordinano i componenti man mano che le loro dimensioni cambiano in base alla scala del testo.
  • Assicurati che i componenti rientrino ancora nello schermo con scale di testo più grandi.
  • Non utilizzare unità di dimensioni del testo sp per i componenti non flessibili.
  • Controlla il valore di FONT_SCALE per l'aggiustamento nelle visualizzazioni personalizzate:

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

La scala del testo può essere modificata con il seguente comando:

adb shell settings put system font_scale 1.2f

Su Android 12 e versioni successive, gli utenti possono modificare il ridimensionamento del testo dalle impostazioni del dispositivo.

Layout tastiera

In Android 13 (livello API 33) e versioni successive, puoi utilizzare getKeyCodeForKeyLocation() per cercare i codici chiave per le località chiave previste. Questa operazione può essere necessaria se l'utente ha rimappato alcune posizioni dei tasti o se utilizza una tastiera che non ha un layout tipico.

Descrizione audio

In Android 13 (livello API 33) e versioni successive, una nuova preferenza di accessibilità a livello di sistema consente agli utenti di attivare le descrizioni audio in tutte le app. Le app per Android TV possono verificare le preferenze dell'utente eseguendo una query con 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
}

Le app per Android TV possono monitorare quando la preferenza di un utente cambia aggiungendo un listener a 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);
}