Best practice di accessibilità per Android TV

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

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

I problemi di vista non sono rari tra la popolazione che guarda la TV. Secondo l'Organizzazione Mondiale della Sanità (OMS), si stima che 2,2 miliardi di persone in tutto il mondo abbiano problemi di vista. Negli Stati Uniti, 32 milioni di americani di età pari o superiore a 18 anni hanno subito una perdita significativa della vista, secondo il National Health Interview Survey del 2018. In Europa, le stime indicano 30 milioni di persone cieche e con disabilità visiva, secondo l'Unione europea dei ciechi (EBU).

Ancora più importante, gli utenti con disabilità visive apprezzano i contenuti multimediali tanto quanto i loro colleghi con una vista normale. Un sondaggio del 2017 commissionato da Comcast ha dimostrato che il 96% degli utenti non vedenti o ipovedenti guarda regolarmente la TV e l'81% la guarda per più di un'ora al giorno. Tuttavia, il 65% ha anche segnalato di riscontrare problemi con la ricerca dei programmi TV. 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.

Sebbene le tecnologie assistive possano aiutare gli utenti con problemi di vista, è importante supportare l'accessibilità nei percorsi di scoperta dei contenuti per le app TV. Ad esempio, presta particolare attenzione a fornire indicazioni di navigazione e a etichettare correttamente gli elementi e assicurati che le app TV funzionino bene con le funzionalità di accessibilità come TalkBack. Questi passaggi possono migliorare significativamente l'esperienza per gli utenti con disabilità visive.

Il primo passo verso il miglioramento dell'accessibilità è la consapevolezza. Questa guida può aiutare te e il tuo team a scoprire i problemi di accessibilità della tua app TV.

Risorse per l'accessibilità Android

Per scoprire di più sull'accessibilità su Android, consulta le nostre risorse per lo sviluppo dell'accessibilità.

Ridimensionamento testo

Le app per Android TV devono rispettare la preferenza dell'utente per il ridimensionamento del testo supportando diverse densità di pixel.

Presta particolare attenzione a:

  • Utilizza wrap_content per le dimensioni nei componenti dell'interfaccia utente.
  • Assicurati che i layout riorganizzino i componenti man mano che le loro dimensioni cambiano a seconda della scala del testo.
  • Assicurati che i componenti continuino a essere visualizzati sullo schermo con scale di testo più grandi.
  • Non utilizzare unità di dimensione 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 la scalabilità 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 posizioni dei tasti previste. Potrebbe essere necessario se l'utente ha rimappato alcune posizioni dei tasti o se utilizza una tastiera con un layout non standard.

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 controllare la preferenza 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 Android TV possono monitorare quando le preferenze di un utente cambiano 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);
}