En esta guía, se proporcionan prácticas recomendadas para la accesibilidad en Android TV y recomendaciones para apps nativas y no nativas.
¿Por qué es importante la accesibilidad para mi app para TVs?
Los problemas de visión no son poco comunes entre la población que mira televisión. Según la Organización Mundial de la Salud (OMS), se estima que 2,200 millones de personas en todo el mundo tienen problemas de visión. En EE.UU., 32 millones de estadounidenses mayores de 18 años sufrieron una pérdida significativa de la visión, según la Encuesta Nacional de Entrevistas de Salud de 2018. En Europa, las estimaciones indican que hay 30 millones de personas ciegas y con visión parcial, según la Unión Europea de Ciegos (EBU).
Lo más importante es que los usuarios con discapacidades visuales disfrutan del contenido multimedia tanto como sus pares sin discapacidades. Una encuesta de 2017 encargada por Comcast reveló que el 96% de los usuarios ciegos o con visión reducida miran televisión con regularidad, y el 81% lo hace durante más de una hora al día. Sin embargo, el 65% también informó que tuvo problemas para buscar qué hay en la TV. En una encuesta realizada en el Reino Unido en 2020, el 80% de las personas con discapacidad indicó que había tenido problemas de accesibilidad con los servicios de transmisión de video a pedido.
Si bien las tecnologías de accesibilidad pueden ayudar a los usuarios con visión reducida, es importante brindar asistencia para la accesibilidad en los recorridos de descubrimiento de contenido de las apps para TV. Por ejemplo, presta especial atención a brindar orientación para la navegación y etiquetar los elementos de forma adecuada, y asegúrate de que las apps para TVs funcionen bien con las funciones de accesibilidad, como TalkBack. Estos pasos pueden mejorar significativamente la experiencia de los usuarios con discapacidades visuales.
El primer paso para mejorar la accesibilidad es la conciencia. Esta guía puede ayudarte a ti y a tu equipo a descubrir problemas de accesibilidad en tu app para TVs.
Recursos de accesibilidad de Android
Para obtener más información sobre la accesibilidad en Android, consulta nuestros recursos para el desarrollo de la accesibilidad.
Escalamiento de texto
Las apps para Android TV deben respetar la preferencia del usuario por el ajuste de escala de texto admitiendo diferentes densidades de píxeles.
Presta especial atención a lo siguiente:
- Usa
wrap_content
para las dimensiones en los componentes de la IU. - Asegúrate de que los diseños reorganicen los componentes a medida que cambian sus dimensiones según la escala del texto.
- Asegúrate de que los componentes sigan cabiendo en la pantalla con escalas de texto más grandes.
- No uses unidades de tamaño de texto en sp para componentes que no sean flexibles.
Verifica el valor de
FONT_SCALE
para el ajuste en las vistas personalizadas:// Checking font scale with Context val scale = resources.configuration.fontScale Log.d(TAG, "Text scale is: " + scale)
La escala de texto se puede cambiar con el siguiente comando:
adb shell settings put system font_scale 1.2f
En Android 12 y versiones posteriores, los usuarios pueden modificar el ajuste de texto desde la configuración del dispositivo.
Diseños de teclado
En Android 13 (nivel de API 33) y versiones posteriores, puedes usar getKeyCodeForKeyLocation()
para buscar los códigos de teclas de las ubicaciones de teclas esperadas.
Esto puede ser necesario si el usuario reasignó algunas ubicaciones de teclas o si usa un teclado que no tiene un diseño típico.
Audiodescripción
En Android 13 (nivel de API 33) y versiones posteriores, una nueva preferencia de accesibilidad para todo el sistema permite que los usuarios habiliten audiodescripciones en todas las apps. Las apps para Android TV pueden verificar la preferencia del usuario consultándola 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 }
Las apps para Android TV pueden supervisar cuándo cambia la preferencia de un usuario agregando un objeto de escucha 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); }