Práticas recomendadas de acessibilidade para o Android TV

Este guia apresenta as práticas recomendadas para acessibilidade no Android TV e oferece 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. Estima-se que 2,2 bilhões de pessoas no mundo todo têm deficiência visual, segundo à Organização Mundial da Saúde (OMS). Nos EUA, 32 milhões de americanos com 18 anos ou mais sofreram perda de visão significativa, de acordo com a 2018 National Health Interview Survey (em inglês). Na Europa, as estimativas de 30 milhões pessoas cegas e parcialmente cegas, de acordo com a União Europeia para Cegos (EBU).

Mais importante ainda, usuários com deficiência visual gostam de conteúdos de mídia assim como seus colegas totalmente enxergados. Uma pesquisa de 2017 encomendada pela Comcast mostrou que 96% dos usuários cegos ou com baixa visão assistem regularmente TV, com 81% assistindo mais de uma hora por dia. No entanto, 65% também relataram tendo problemas para procurar o que está na TV. Em uma pesquisa de 2020 no Reino Unido, 80% das pessoas com deficiência disseram ter enfrentado problemas de acessibilidade com vídeos serviços de streaming sob demanda.

Embora as tecnologias assistivas possam e ajudem usuários com baixa visão, é para oferecer acessibilidade na jornada de descoberta de conteúdo em apps para TV. Por exemplo, preste ainda mais atenção em fornecer orientação de navegação e rotular elementos corretamente e garantir que os apps de TV funcionem bem com acessibilidade; como o TalkBack. Essas etapas podem melhorar significativamente a experiência para 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 para TV.

Recursos de acessibilidade do Android

Para saber mais sobre a 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 pelo dimensionamento do texto oferecendo suporte a diferentes densidades de pixels.

Tome cuidado especial para:

  • Use wrap_content para dimensões em componentes da interface.
  • Garanta que os layouts reorganizem os componentes conforme as dimensões deles mudam de acordo com a escala do texto.
  • Confira 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 mudar o dimensionamento do texto no dispositivo configurações.

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 tecla para locais-chave esperados. Isso pode ser necessário se o usuário tiver remapeado alguns locais importantes ou se estão 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, há uma nova preferência de acessibilidade do sistema 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 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 ao adicionar um listener 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);
}