7 days of WordPress plugins, themes & templates - for free!* Unlimited asset downloads! Start 7-Day Free Trial
Advertisement
  1. Code
  2. Accessibility

Creación de aplicaciones Android accesibles: Tecnologías de asistencia

Read Time: 18 mins

Spanish (Español) translation by Charles (you can also view the original English article)

Cuando diseñas una aplicación para Android, quieres que el mayor número posible de personas la descarguen y la utilicen, pero esto sólo puede ocurrir si tu aplicación es accesible para todo el mundo, incluidas las personas que acceden a sus dispositivos Android a través de funciones de asistencia, o que experimentan las aplicaciones móviles sin elementos como el color o el sonido.

En mi último post sobre la creación de aplicaciones accesibles para Android, te mostré cómo proporcionar la mejor experiencia para todos los que utilizan tu aplicación, mediante la optimización de tu aplicación para las características de accesibilidad que están incorporadas en todos los dispositivos Android. También cubrí las mejores prácticas de accesibilidad, y cómo poner realmente a prueba la accesibilidad de tu aplicación, antes de enviarla al mundo.

Cuando hayas completado este artículo, sabrás cómo crear aplicaciones que se integren con lectores de pantalla, controles direccionales y dispositivos Switch, además de otras prácticas funciones de accesibilidad de Android, como los subtítulos.

Ayuda a las tecnologías de asistencia

Una tecnología de asistencia o función de accesibilidad es una pieza de software o hardware que hace que los dispositivos sean más accesibles. El Android tiene una serie de funciones de accesibilidad integradas, y hay muchas aplicaciones e incluso dispositivos externos que la gente puede descargar o comprar para que sus dispositivos Android se adapten mejor a sus necesidades.

Del mismo modo que optimizas tus aplicaciones de Android para que funcionen bien con la pantalla táctil y las diferentes configuraciones de pantalla, debes optimizar tu aplicación para estos servicios de accesibilidad.

La optimización para las tecnologías de asistencia es uno de los pasos más importantes en la creación de una aplicación accesible, por lo que en esta sección voy a cubrir todos los principales servicios de accesibilidad y mostrar cómo optimizar tu aplicación para proporcionar una mejor experiencia para cada uno de estos servicios.

Apoyo a los lectores de pantalla

Los usuarios con dificultades de visión pueden interactuar con sus dispositivos Android utilizando un lector de pantalla, que es un sintetizador de voz que lee el texto en voz alta mientras el usuario se mueve por la pantalla.

Las versiones recientes de Android suelen venir con el motor de texto a voz (TTS) de Google preinstalado. Para comprobar si TTS está instalado en tu dispositivo:

  • Abre la aplicación de Ajustes de tu dispositivo.
  • Ve a Accesibilidad > Salida de texto a voz.
  • Comprueba el valor del motor preferido: debe estar configurado como motor de texto a voz de Google.

El motor TTS permite utilizar varios lectores de pantalla, incluido TalkBack de Google, que es el lector de pantalla que voy a utilizar:

  • Descarga Google TalkBack desde la tienda Google Play.
  • Ve a Configuración > Accesibilidad.
  • Selecciona TalkBack.
  • Presiona el control deslizante a la posición de encendido.

Si tienes un dispositivo Samsung, es posible que tengas preinstalado el lector de pantalla Voice Assistant. Voice Assistant es una adaptación de Google TalkBack que tiene muchas de las mismas características, por lo que normalmente no necesitarás instalar TalkBack si ya tienes acceso a Voice Assistant.

Navegación en lectores de pantalla

La mayoría de los lectores de pantalla admiten dos métodos de navegación:

  • Navegación lineal. Ofrece indicaciones de audio a medida que el usuario se desplaza por la interfaz de usuario de forma lineal, ya sea deslizando el dedo hacia la izquierda o hacia la derecha o utilizando un control direccional (que es otro servicio de accesibilidad que veremos en breve).
  • Exploración táctil. El lector de pantalla anuncia cada elemento de la interfaz de usuario cuando el usuario lo toca.

Es importante que pruebes tu aplicación utilizando tanto la navegación lineal como los métodos de exploración táctil.

Ten en cuenta que algunas personas pueden utilizar TalkBack junto con la aplicación BrailleBack y una pantalla braille externa y actualizable. La compatibilidad con el braille no es algo que se pueda probar por completo sin comprar una pantalla braille, pero si te interesa saber más sobre estos dispositivos, hay muchos vídeos de pantallas braille en YouTube.

También puedes utilizar la aplicación BrailleBack para previsualizar cómo se mostrará el texto de tu aplicación en una pantalla braille. Una vez instalado BrailleBack, dirígete a Ajustes > Accesibilidad > BrailleBack > Ajustes > Opciones de desarrollo > Mostrar salida Braille en pantalla. Vuelve a la pantalla principal de BrailleBack, empuja el deslizador a la posición de Activado, y BrailleBack añadirá entonces una superposición que muestra las celdas braille de la pantalla que estés viendo en ese momento.

Ahora que has configurado tu lector de pantalla (y opcionalmente, BrailleBack) vamos a ver cómo puedes optimizar tu aplicación para este servicio de accesibilidad.

Añade descripciones de contenido

Las etiquetas de texto añaden desorden a la pantalla, por lo que, en la medida de lo posible, debe evitar añadir etiquetas explícitas a tu interfaz de usuario.

Comunicar la finalidad de un botón mediante un icono de papelera en lugar de una etiqueta de supresión puede ser un buen diseño, pero supone un problema para los lectores de pantalla, ya que no hay nada que leer.

Debes proporcionar un contenido de descripción para cualquier control que no tenga texto visible, como los ImageButtons y CheckBoxes, y para los medios visuales como las imágenes.

Estas etiquetas de contenido no aparecen en pantalla, pero los servicios de accesibilidad, como los lectores de pantalla y las pantallas braille, anunciarán la etiqueta cada vez que se enfoque el elemento correspondiente de la interfaz de usuario.

Añade un contenido de descripción a un elemento estático, utilizando android:contentDescription:

Si estás añadiendo un contenido de descripción a un control que puede cambiar durante el ciclo de vida de la actividad o del fragmento, entonces deberías utilizar setContentDescription() en su lugar:

Elaborar el contenido perfecto de descripción es un acto de equilibrio complicado, ya que proporcionar demasiada información puede ser a menudo tan malo como proporcionar muy poca información. Si los contenidos de descripción son innecesariamente detallados, o si se añaden contenidos de descripción a elementos que el usuario no necesita conocer, se produce mucho ruido blanco por el que tiene que navegar para dar sentido a la pantalla actual.

Los contenidos de descripción deben ser útilmente descriptivos, independientemente significativos, y proporcionar el contexto suficiente para que el usuario sea capaz de navegar con éxito por tu aplicación.

Para evitar abrumar al usuario con información innecesaria:

  • No incluyas el tipo de control en el contenido de descripción. Los servicios de accesibilidad suelen anunciar el tipo de control después de tu etiqueta, por lo que tu descripción de "botón de envío" puede convertirse en "botón de envío".
  • No desperdicies palabras describiendo el aspecto físico de un componente. El usuario necesita saber qué ocurrirá cuando interactúe con un control, no necesariamente su aspecto.
  • No incluyas instrucciones sobre cómo interactuar con un control. Hay muchas formas diferentes de interactuar con un dispositivo, además de la pantalla táctil, por lo que decirle al usuario que "toque este enlace para editar tu configuración" no es sólo añadir palabras innecesarias a tu contenido de descripción, también es potencialmente engañar al usuario.
  • No añadas contenidos en descripción a todo. Los lectores de pantalla a menudo pueden ignorar con seguridad los elementos de la interfaz de usuario que existen únicamente para hacer que la pantalla se vea mejor, por lo que normalmente no es necesario proporcionar un contenido de descripción para los elementos decorativos de su aplicación. También puedes indicar explícitamente a una vista que no responda a un servicio de accesibilidad, marcándola como android:contentDescription="@null" o android:isImportantForAccessibility="no" (Android 4.1 y superior).

Los usuarios deben poder identificar los elementos solo a partir de la descripción de contenido, por lo que cada descripción de contenido debe ser única. En particular, no olvides actualizar las descripciones de diseños reutilizados como ListView y RecyclerView.

Una vez que estés satisfecho con sus contenidos en descripción, deberías ponerlos a prueba intentando navegar por tu aplicación utilizando únicamente la información hablada, y luego hacer los ajustes necesarios.

No ahogues a los lectores de pantalla

Algunos lectores de pantalla permiten ajustar el audio de una aplicación independientemente de otros sonidos del dispositivo, y algunos incluso admiten la "evasión de audio", que disminuye automáticamente el otro audio del dispositivo cuando el lector de pantalla está hablando. Sin embargo, no debes dar por sentado que el lector de pantalla elegido por el usuario es compatible con cualquiera de estas funciones, o que están activadas.

Si tu aplicación incluye música o efectos de sonido que podrían ahogar a un lector de pantalla, deberías proporcionar a los usuarios una forma de desactivar estos sonidos. Otra posibilidad es que tu aplicación desactive automáticamente todo el audio innecesario cuando detecte que el lector de pantalla está activado.

No confíes en las señales visuales

Puede ser una práctica común formatear los enlaces como texto azul y subrayado, pero las personas que experimentan tu interfaz de usuario como una serie de indicaciones de lectores de pantalla pueden no ser conscientes de estas señales visuales.

Para asegurarte de que todos los usuarios conozcan los hipervínculos de tu aplicación

  • Redacta tu texto de anclaje de manera que quede claro que este trozo de texto contiene un hipervínculo.
  • Agrega una descripción de contenido.
  • Extrae el hipervínculo a un nuevo contexto. Por ejemplo, si trasladas el enlace a un botón o a un elemento de menú, el usuario ya sabrá que debe interactuar con este control.

Considera la posibilidad de sustituir los controles temporizados

Algunos controles pueden desaparecer automáticamente una vez transcurrido un tiempo. Por ejemplo, los controles de reproducción de vídeo tienden a desaparecer una vez que han transcurrido unos segundos de un vídeo.

Dado que los lectores de pantalla sólo anuncian un control cuando obtiene el foco, existe la posibilidad de que un control temporizado desaparezca antes de que el usuario tenga la oportunidad de enfocarlo. Si tu aplicación incluye algún control temporizado, deberías considerar la posibilidad de convertirlo en un control permanente cuando tu aplicación detecte que un lector de pantalla está activado, o al menos ampliar la cantidad de tiempo que este control permanece en pantalla.

No confíes en los colores

A menos que los incluyas en tus contenidos de descripciones, los lectores de pantalla no comunicarán las señales de color a tus usuarios, por lo que nunca debes utilizar el color como único medio para comunicar información importante. Esta regla también ayuda a garantizar que tu aplicación sea accesible para las personas daltónicas o con problemas para diferenciar ciertos colores.

Si utilizas el color para resaltar un texto importante, debes enfatizarlo con otros métodos, por ejemplo, proporcionando un contenido de descripción, efectos de sonido o retroalimentación háptica (basada en el tacto) cuando este texto se enfoca. También hay que proporcionar señales visuales adicionales para los daltónicos, como variar el tamaño de la letra o utilizar efectos de cursiva o subrayado.

Switch Access y controles direccionales

Los usuarios con problemas de visión o de destreza manual pueden manejar tu dispositivo mediante los controles direccionales o el Switch Access, en lugar de la pantalla táctil.

1. Probar el Switch Access App

Switch Access te permite interactuar con tu dispositivo Android usando un "switch", que envía una señal de pulsación de tecla al dispositivo, similar a presionar un botón OK o Select.

En esta sección, crearemos  "Siguiente", "Anterior" y "Seleccionar", pero también es posible crear un switch "Seleccionar" y hacer que Switch Access recorra los elementos interactivos de la pantalla en un bucle continuo. Si prefieres probar tu aplicación con este método de autoescaneo, ve a Configuración > Accesibilidad > Switch Access > Configuración > Autoescaneo.

Android admite los siguientes switches:

  • Los botones de hardware del dispositivo, como Inicio o Subir/Volumen. Esta es la forma más habitual de probar la compatibilidad de la aplicación con el interruptor, ya que no es necesario comprar un dispositivo de interruptor específico.
  • Un dispositivo externo, como un teclado conectado a tu dispositivo Android mediante USB o Bluetooth.
  • Una acción física. Puedes utilizar la cámara frontal de tu dispositivo para asignar la función de "cambio" a una acción física, como parpadear o abrir la boca.

Para habilitar el Switch Access:

  • Navega las configuraciones > accesibilidad > al switch access
  • Selecciona Configuración en la esquina superior derecha.
  • Selecciona los elementos Siguiente, Anterior y Seleccionar a su vez, presiona la tecla de hardware que deseas asignar a esta acción y, a continuación, presiona en Guardar.
  • Vuelve a la pantalla principal de Switch Access, y empuja el deslizador a la posición de Encendido.

Puedes desactivar el Switch Access en cualquier momento, navegando a Configuración > Accesibilidad > Switch Access y presionando el control deslizante en la posición Desactivado.

2. Comprobación de la compatibilidad del control direccional de tu aplicación

Los controles direccionales permiten al usuario navegar por tu dispositivo de forma lineal, utilizando las acciones Arriba/Abajo/Izquierda/Derecha, de la misma forma que se utiliza el mando de la televisión para navegar por la guía de TV.

Android admite los siguientes controles direccionales:

  • las claves de hardware del dispositivo.
  • dispositivos externos que están conectados a través de USB o Bluetooth, por ejemplo, un trackpad, teclado o almohadilla direccional (D-pad)
  • software que emula un control direccional, como los gestos de TalkBack

Diseño para controles direccionales y para switch access

Cuando el usuario interactúa con la aplicación mediante wl switch access o un control direccional, debes asegurarte de que:

  1. Pueden llegar a todos los componentes interactivos de la aplicación e interactuar con ellos.
  2. El foco se mueve de un control de la interfaz de usuario al siguiente de forma lógica. Por ejemplo, si el usuario pulsa el botón derecho de su control direccional, el foco debería pasar al elemento de la interfaz de usuario que estaba esperando.

Si estás usando las Vistas estándar de Android, entonces tus controles deberían ser enfocables por defecto, pero siempre deberías poner esto a prueba.

Para comprobar que todos sus componentes interactivos son enfocables a través de Switch Access, utilice tu swtich access desde la parte superior de la pantalla hasta la inferior, asegurándote de que cada control obtiene el enfoque en algún momento.

La forma más fácil de probar la compatibilidad con el control direccional de la aplicación es emular un teclado direccional en un dispositivo virtual Android (AVD).

El inconveniente es que esto requiere editar los ajustes config.ini de tu AVD. Ten en cuenta que las siguientes instrucciones están escritas para macOS, así que si estás desarrollando en Windows o Linux, los pasos pueden ser ligeramente diferentes.

  • Abre una ventana del 'Finder' y seleccione Ir > Ir a la carpeta... desde la barra de herramientas.
  • En la ventana emergente posterior, escriba ~/.android/avd y luego haz clic en Ir.
  • Abre la carpeta que corresponde al AVD que deseas utilizar.
  • Manten presionada la tecla Control y haz clic en el archivo config.ini y selecciona Abrir con > Otros...
  • Selecciona un programa de edición de texto; Estoy optando por TextEdit.
  • En el archivo de texto subsiguiente, busca la línea hw.dPad=no y cámbialo a hw.dPad=yes. Guarda este archivo.
  • Inicia la aplicación en el AVD que acaba de editar.
  • Selecciona el botón Más (donde se coloca el cursor en la siguiente captura de pantalla).
Select the More button in your Android Virtual Device AVD Select the More button in your Android Virtual Device AVD Select the More button in your Android Virtual Device AVD
  • Selecciona Almohadilla direccional en el menú de la izquierda.
  • Ahora puedes navegar por la aplicación mediante un panel direccional emulado.
Put your app to the test by navigating it using the emulated D-pad Put your app to the test by navigating it using the emulated D-pad Put your app to the test by navigating it using the emulated D-pad

Los controles estándar de la interfaz de usuario de Android son enfocables por defecto, pero si tienes problemas para enfocar un control en particular, puede que tengas que marcarlo explícitamente como enfocable, utilizando android:focusable="true" o View.setFocusable().

También debes comprobar que el orden de enfoque se mueve de un elemento de la interfaz de usuario a otro de forma lógica, navegando por todos los controles de tu aplicación, en todas las direcciones. (No te olvides de hacer pruebas en sentido inverso).

Android determina el orden de enfoque de cada pantalla automáticamente basándose en un algoritmo, pero ocasionalmente puedes mejorar esta secuencia cambiando el orden de enfoque manualmente.

Puedes especificar la Vista que debe obtener el foco cuando el usuario se mueve en una determinada dirección, utilizando los siguientes atributos XML: android:nextFocusUp, android:nextFocusDown, android:nextFocusRight, y android:nextFocusLeft.

Por ejemplo, imagina que tienes el siguiente diseño:

A layout consisting of a Button EditText and CheckBoxA layout consisting of a Button EditText and CheckBoxA layout consisting of a Button EditText and CheckBox

De forma predeterminada, cuando el control botón está en el foco:

  • Al presionar hacia abajo, el control CheckBox se enfocará.
  • Al presionar a la derecha, se pondrá el edittext en foco.

Puede cambiar este orden, utilizando los atributos android:next. En el código siguiente:

  • Al presionar hacia abajo, edittext en foco.
  • Al presionar a la derecha, el control CheckBox se centra en el foco.

Como alternativa, puedes modificar el orden de foco en tiempo de ejecución mediante setNextFocusDownId, setNextFocusForwardId, setNextFocusLeftId, setNextFocusRightId y setNextFocusUpId.

Simplifica tus diseños

Los diseños más sencillos son más fáciles de navegar para todo el mundo, pero esto es particularmente cierto para cualquier persona que esté interactuando con tu aplicación utilizando Switch Access o un control direccional.

Cuando pruebes la navegación de tu aplicación, busca cualquier oportunidad de eliminar elementos de tu interfaz de usuario. En particular, deberías considerar la posibilidad de eliminar cualquier anidamiento de tus diseños, ya que los diseños anidados hacen que tu aplicación sea significativamente más difícil de navegar.

No descuides el soporte de pantalla táctil de tu aplicación

Algunos usuarios con problemas de destreza manual pueden preferir interactuar con sus dispositivos utilizando la pantalla táctil.

Para ayudar a estos usuarios, todos los elementos interactivos de tu aplicación deberían tener 48 x 48 dp o más, con al menos 8 dp entre todos los elementos táctiles. También puedes experimentar con el aumento del tamaño de un objetivo táctil sin aumentar el tamaño de su vista relacionada, utilizando la API TouchDelegate de Android.

Subtítulos

Debes proporcionar subtítulos para todo el audio hablado de la aplicación.

Para habilitar subtítulos en el dispositivo:

  • Ve a Configuración > Accesibilidad > Títulos.
  • Empuja el control deslizante en la posición Activado.

En Android 4.4 y superior, agrega un archivo de origen de subtítulos externo en formato WebVTT usando addSubtitleSource(), por ejemplo:

Los subtítulos son una configuración de todo el sistema, por lo que es probable que alguien que se base en los subtítulos inicie la aplicación con los subtítulos ya habilitados. Sin embargo, si un usuario no tiene habilitados los subtítulos, es crucial que des en claro que tu aplicación admite subtítulos y proporcionas una forma de habilitar los subtítulos. A menudo, puedes lograr ambas cosas presentando un botón Subtítulos de forma prominente en la interfaz de usuario, por ejemplo, agregando un botón Subtítulos a los controles de reproducción de vídeo de la aplicación.

Dado que los subtítulos son una configuración de todo el sistema, la aplicación simplemente necesita reenviar al usuario a la sección adecuada de la aplicación Configuración de tu dispositivo (Configuración > Accesibilidad > Subtítulos). por ejemplo:

Android cambiará el formato de los subtítulos de acuerdo con la configuración de subtítulos de todo el sistema del usuario, que se encuentra en Configuración > Accesibilidad > Subtítulos. Para garantizar que tus subtítulos sigan siendo legibles independientemente de la configuración del usuario, deberás probar tus subtítulos en toda la gama de opciones de formato de Android.

Tamaño de fuente

Los usuarios que tienen dificultades para leer texto en pantalla pueden aumentar el tamaño de fuente que se usa en tu dispositivo.

Tendrás que asegurarte de que tu aplicación siga funcionando en una amplia gama de tamaños de texto. Para probar esto, intente cambiar el tamaño del texto en todo el dispositivo.

  • Inicia la aplicación Configuración de tu dispositivo.
  • Ve a Configuración > Accesibilidad > Tamaño de fuente.
  • Empuja el control deslizante hacia la A grande para aumentar el tamaño de la fuente y hacia la A pequeña para disminuir el tamaño de la fuente.

Suponiendo que hayas definido el texto en píxeles escalables (sp), la aplicación debe actualizarse automáticamente en función de las preferencias de tamaño de fuente del usuario.

Si has diseñado un diseño flexible, lo ideal es que tu aplicación pueda adaptarse a un intervalo de tamaños de texto, pero siempre debes probar cómo controla la aplicación el intervalo completo de configuración de tamaño de fuente y realizar los ajustes necesarios. El texto que aumenta o disminuye en función de las preferencias del usuario no va a mejorar la experiencia del usuario si algunas configuraciones inutilizan la aplicación.

Conclusión

En este artículo, has aprendido a optimizar tu aplicación para algunas de las funciones de accesibilidad y tecnología de asistencia más utilizadas en Android.

Si estás interesado en obtener más información sobre la accesibilidad, Google ha publicado una aplicación de ejemplo que incluye código para muchas de las técnicas descritas en este artículo. También encontrarás mucha información sobre la accesibilidad móvil en general, en el sitio web de la Iniciativa de Accesibilidad Web.

Mientras tanto, ¡echa un vistazo a algunos de nuestros otros mensajes sobre el desarrollo de aplicaciones para Android!

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Scroll to top
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.