Práticas recomendadas de acessibilidade para o Android TV

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

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

As deficiências visuais não são incomuns entre a população que assiste TV. De acordo com a Organização Mundial da Saúde (OMS), 2,2 bilhões de pessoas no mundo têm algum tipo de deficiência visual. Nos EUA, 32 milhões de americanos com 18 anos ou mais tiveram perda significativa de visão, de acordo com a Pesquisa Nacional de Entrevistas de Saúde de 2018. Na Europa, as estimativas apontam para 30 milhões de pessoas cegas e com visão parcial, de acordo com a União Europeia dos Cegos (EBU, na sigla em inglês).

O mais importante é que os usuários com deficiência visual também podem aproveitar o conteúdo de mídia assim como seus colegas com visão normal. Uma pesquisa de 2017 encomendada pela Comcast mostrou que 96% dos usuários cegos ou com baixa visão assistem TV regularmente, e 81% assistem mais de uma hora por dia. No entanto, 65% também relataram problemas ao procurar o que está na TV. E em uma pesquisa de 2020 no Reino Unido, 80% das pessoas com deficiência disseram que tiveram problemas de acessibilidade com serviços de streaming de vídeo sob demanda.

Embora as tecnologias adaptativas possam ajudar os usuários com baixa visão, é importante oferecer suporte à acessibilidade nas jornadas de descoberta de conteúdo para apps de TV. Por exemplo, preste atenção ao fornecer orientações de navegação e rotule os elementos corretamente. Além disso, verifique se os apps de TV funcionam bem com recursos de acessibilidade, como o TalkBack. Essas etapas podem melhorar significativamente a experiência de usuários com deficiência visual.

A primeira etapa para melhorar a acessibilidade é a conscientização. Este guia pode ajudar você e sua equipe a descobrir problemas de acessibilidade com o app de TV.

Recursos de acessibilidade do Android

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

Escala do texto

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

Preste atenção especial para:

  • Use wrap_content para dimensões em componentes da interface.
  • Verifique se os layouts reorganizam os componentes conforme as dimensões mudam dependendo da 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 ajuste nas 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 alterar a escala do texto nas configurações do dispositivo.

Layouts de teclado

No Android 13 (nível 33 da API) e versões mais recentes, é possível usar getKeyCodeForKeyLocation() para procurar os códigos de chave para localizações de chave esperadas. Isso pode ser necessário se o usuário tiver remapeado alguns locais de teclas ou se ele 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 permite que os usuários ativem audiodescrições em todos os apps. Os apps para Android TV podem verificar a preferência do usuário fazendo uma consulta 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 as preferências de um usuário mudam adicionando um listener ao 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);
}