Práticas recomendadas de acessibilidade para o Android TV

Este guia fornece práticas recomendadas para acessibilidade no Android TV e recomendações para apps nativos e não nativos.

Por que a acessibilidade é importante para o meu app de TV?

Deficiências visuais não são incomuns entre a população que assiste à TV. Estima-se que 2,2 bilhões de pessoas no mundo todo têm algum problema de visão, de acordo com a Organização Mundial da Saúde (OMS). Nos EUA, 32 milhões de americanos com 18 anos ou mais tiveram perda significativa da visão, de acordo com a National Health Interview Survey de 2018 (em inglês). Na Europa, as estimativas apontam para 30 milhões de pessoas cegas e parcialmente cegas, de acordo com a União Europeia de cegos (EBU, na sigla em inglês).

O mais importante é que usuários com deficiências visuais gostam de conteúdo de mídia da mesma forma que os colegas deficientes visuais. Uma pesquisa de 2017 encomendada pela Comcast mostrou que 96% dos usuários cegos ou com baixa visão assistem TV com frequência, e 81% assistem mais de uma hora por dia. No entanto, 65% também relataram ter problemas ao procurar o que está na TV. Em uma pesquisa de 2020 realizada no Reino Unido, 80% das pessoas com deficiência disseram que tiveram problemas de acessibilidade com serviços de streaming de vídeo on demand.

Embora as tecnologias adaptativas possam ajudar usuários com baixa visão, é importante oferecer suporte à acessibilidade nas jornadas de descoberta de conteúdo de apps para TV. Por exemplo, preste ainda mais atenção em fornecer orientações de navegação e rotular elementos adequadamente, além de garantir que os apps para TV funcionem bem com recursos de acessibilidade como o TalkBack. Essas etapas podem melhorar significativamente a experiência de usuários com deficiência visual.

O primeiro passo para melhorar a acessibilidade é a conscientização. Este guia pode ajudar você e sua equipe a descobrir problemas de acessibilidade com seu app de TV.

Recursos de acessibilidade do Android

Para saber mais sobre a acessibilidade no Android, consulte nossos recursos de desenvolvimento de acessibilidade.

Tamanho do texto

Os apps para Android TV precisam respeitar a preferência do usuário para o dimensionamento de texto, oferecendo suporte a diferentes densidades de pixel.

Tome cuidado especial:

  • Use wrap_content para dimensões em componentes da interface.
  • Garantir que os layouts reorganizem os componentes à medida que as dimensões mudam de acordo com a escala do texto.
  • Verifique se os componentes ainda cabem na tela em escalas de texto maiores.
  • Não use unidades de tamanho de texto sp para componentes que não são flexíveis.
  • Verifique o valor de FONT_SCALE para ajustes em visualizações personalizadas:

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

A escala do texto pode ser alterada com o seguinte comando:

adb shell settings put system font_scale 1.2f

No Android 12 e versões mais recentes, os usuários podem mudar o dimensionamento do texto nas configurações do dispositivo.

Layouts de teclado

No Android 13 (API de nível 33) e versões mais recentes, você pode usar getKeyCodeForKeyLocation() para procurar códigos de tecla para locais esperados para as chaves. Isso pode ser necessário se o usuário tiver mapeado novamente alguns locais importantes ou estiver usando um teclado que não tem um layout típico.

Audiodescrição

No Android 13 (nível 33 da API) e versões mais recentes, uma nova preferência de acessibilidade em todo o sistema permite que os usuários ativem audiodescrições em todos os apps. Os apps do Android TV podem verificar a preferência do usuário consultando-o com 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
}

Os apps para Android TV podem monitorar quando a preferência de um usuário muda adicionando um 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);
}