Este guia oferece 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?
Deficiências visuais são comuns entre a população que assiste TV. Estima-se que 2,2 bilhões de pessoas no mundo tenham deficiência visual, de acordo com a Organização Mundial da Saúde (OMS). Nos EUA, 32 milhões de americanos com 18 anos ou mais sofreram perda significativa da visão, de acordo com a Pesquisa Nacional de Entrevistas de Saúde de 2018 (em inglês). Na Europa, as estimativas apontam para 30 milhões de pessoas cegas e com baixa visão, de acordo com a União Europeia de Cegos (EBU, na sigla em inglês).
E o mais importante: usuários com deficiência visual gostam de conteúdo de mídia tanto quanto pessoas sem deficiência visual. 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 ter problemas para pesquisar o que está passando na TV. E, em uma pesquisa de 2020 no Reino Unido, 80% das pessoas com deficiência disseram ter enfrentado 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 acessibilidade nas jornadas de descoberta de conteúdo para apps de TV. Por exemplo, preste mais atenção ao fornecer orientação de navegação e rotular elementos corretamente, 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.
A primeira etapa para melhorar a acessibilidade é a conscientização. Este guia pode ajudar você e sua equipe a descobrir problemas de acessibilidade no 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 por escalonamento de texto oferecendo suporte a diferentes densidades de pixel.
Tome cuidado para:
- Use
wrap_content
para dimensões em componentes de interface. - Verifique se os layouts reorganizam os componentes à medida que 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 de texto pode ser alterada com o seguinte comando:
adb shell settings put system font_scale 1.2f
No Android 12 e em versões mais recentes, os usuários podem alterar o ajuste de 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
pesquisar os keycodes dos
locais de teclas esperados.
Isso pode ser necessário se o usuário tiver remapeado alguns locais de teclas ou se estiver usando um teclado com um layout atípico.
Audiodescrição
No Android 13 (nível 33 da API) e em 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-a 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 do 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); }