1. ¿Qué es y para qué sirve la accesibilidad en aplicaciones Android?
2. Normativa actual y de futuro respecto a la accesibilidad en aplicaciones móviles
3. Accesibilidad para dispositivos Android con Jetpack Compose
4. Conclusión
En el panorama digital actual, las aplicaciones móviles son una parte integral de nuestras vidas. Desde comunicarnos y aprender hasta entretenernos y realizar tareas cotidianas, dependemos cada vez más de estas herramientas. Sin embargo, ¿alguna vez te has preguntado si todas las personas pueden utilizar estas aplicaciones sin barreras? Aquí es donde entra en juego la accesibilidad en aplicaciones Android, un concepto fundamental para construir un mundo digital inclusivo, ahora más fácil de implementar con Jetpack Compose.
1. ¿Qué es y para qué sirve la accesibilidad en aplicaciones Android?
La accesibilidad en aplicaciones Android se refiere al diseño y desarrollo de apps de manera que puedan ser utilizadas eficazmente por todas las personas, incluyendo aquellas con discapacidades. Estas discapacidades pueden ser visuales (ceguera o visión reducida), auditivas (sordera o hipoacusia), motoras (habilidades motrices restringidas) o cognitivas, entre otras.
La accesibilidad no se trata solo de cumplir con una obligación, sino de ampliar el alcance de tu aplicación y mejorar la experiencia de todos los usuarios. Al hacer que tu app sea accesible, permites que mil millones de personas con discapacidades en todo el mundo tengan igualdad de acceso a su contenido y funcionalidades.
Pero los beneficios de la accesibilidad van más allá de las personas con discapacidades. Las funciones y consideraciones de accesibilidad a menudo resultan en interfaces de usuario más claras, intuitivas y fáciles de usar para todos. Por ejemplo, un buen contraste de color beneficia a usuarios con baja visión, pero también facilita la lectura en entornos con mucha luz para cualquier persona. Los comandos por voz, pensados para personas con dificultades motoras, pueden ser útiles para cualquier usuario en situaciones donde no pueden usar las manos.
En resumen, la accesibilidad en aplicaciones Android sirve para:
- Garantizar la inclusión digital de personas con discapacidades.
- Ampliar la base de usuarios de tu aplicación.
- Mejorar la experiencia de usuario para todos.
- Potencialmente aumentar la satisfacción y retención de usuarios y mejorar las calificaciones de la app.
2. Normativa actual y de futuro respecto a la accesibilidad en aplicaciones móviles
La accesibilidad en el entorno digital no es solo una recomendación, sino que también está respaldada por diversas normativas a nivel nacional e internacional.
Actualmente, existen leyes y regulaciones que exigen la accesibilidad de los productos y servicios digitales, especialmente en el sector público. En España, el Real Decreto 1112/2018 transpone la Directiva (UE) 2016/2102 y establece los requisitos de accesibilidad para los sitios web y aplicaciones móviles de los organismos del sector público. De manera similar, la Normativa ADA (Americans with Disabilities Act) en Estados Unidos establece pautas para la accesibilidad. A nivel internacional, las Pautas de Accesibilidad para el Contenido Web (WCAG) del W3C son una referencia ampliamente adoptada que, aunque originalmente pensadas para web, ofrecen principios aplicables a las aplicaciones móviles.
Mirando hacia el futuro, la EAA (European Accessibility Act) 2025 es una directiva europea que ampliará los requisitos de accesibilidad a una gama más amplia de productos y servicios del sector privado, incluyendo aplicaciones móviles, sitios web de comercio electrónico, servicios bancarios, libros electrónicos y más. Esto significa que cada vez más empresas tendrán la obligación legal de crear aplicaciones móviles accesibles.
Además de estas leyes, existen estándares técnicos como la Norma UNE-EN 301 549:2019 (basada en la norma europea EN 301 549), que define los requisitos de accesibilidad para los productos y servicios de las Tecnologías de la Información y la Comunicación (TIC). Esta norma es una referencia importante para desarrolladores y evaluadores de accesibilidad, ya que detalla criterios técnicos específicos alineados en gran medida con las WCAG.
Cumplir con esta normativa no solo es una obligación legal, sino que también demuestra un compromiso con la responsabilidad social y la inclusión.
3. Accesibilidad para dispositivos Android con Jetpack Compose
Jetpack Compose, el kit de herramientas de UI para Android fue diseñado teniendo en cuenta la accesibilidad. Muchas de las API de accesibilidad del framework clásico tienen equivalentes directos o se manejan de forma más intuitiva en Compose.
Cómo hacer que las apps sean más accesibles con Compose
Existen principios básicos y prácticas recomendadas que los desarrolladores pueden seguir para mejorar la accesibilidad de sus aplicaciones Compose:
- Etiqueta los elementos de la interfaz de usuario de forma clara y descriptiva: Utiliza el parámetro contentDescription dentro del modificador semantics para elementos no textuales como Image o IconButton. Para elementos textuales como Text o Button, Compose generalmente usa el propio texto como etiqueta predeterminada, pero puedes sobrescribirlo si es necesario. Para elementos puramente decorativos, puedes eliminarlos del árbol semántico.
- Agrupa el contenido relacionado: Utiliza el parámetro mergeDescendants = true dentro del modificador semantics en un contenedor Composable (Column, Row, Box, etc.). Esto hace que TalkBack trate a todos los elementos descendientes como una única entidad enfocable, leyendo sus descripciones de contenido en orden. Es útil para agrupar elementos que forman una unidad lógica, como un elemento de lista complejo.
- Proporciona títulos accesibles para paneles: Utiliza la propiedad paneTitle dentro del modificador semantics en el Composable que representa un panel o una sección distinta de la pantalla. Esto ayuda a los servicios de accesibilidad a anunciar la transición cuando el foco se mueve a esta área.
- Utiliza los Composables estándar: Los Composables básicos de Material Design (Button, Text, TextField, Checkbox, etc.) ya incorporan la semántica de accesibilidad necesaria por defecto. Si creas Composables personalizados complejos, asegúrate de usar el modificador semantics para exponer su estado, rol (usando SemanticsProperties.Role) y acciones personalizadas (customActions).
- Utiliza señales que no dependan únicamente del color: Este principio de diseño sigue siendo crucial. En Compose, puedes fácilmente combinar color con iconos (Icon), cambios en el grosor del borde (border), o texto descriptivo para indicar estados.
- Proporciona descripciones de contenido alternativas: Como se vio en el primer punto, usa contentDescription en el modificador semantics para Image, Icon, IconButton y otros elementos visuales sin texto.
Considera el tamaño de los objetivos táctiles: Los elementos clicables en Compose deben tener un tamaño mínimo recomendado de 48×48 dp. Puedes usar el modificador sizeIn para establecer dimensiones mínimas. El modificador clickable también ayuda, ya que por defecto expande ligeramente el área táctil, pero sizeIn es más explícito para garantizar el cumplimiento.
- Asegúrate de que haya un contraste de color adecuado: Las mismas reglas de contraste (WCAG 5:1 para texto normal, 3:1 para texto grande y gráficos) se aplican. Utiliza herramientas de comprobación de contraste y define paletas de colores accesibles en tu tema de Material Design (MaterialTheme).
- Permite a los usuarios ajustar el tamaño del texto: Usa unidades sp (scale-independent pixels) para el tamaño de fuente (fontSize) en tus Text Composables. Compose respeta automáticamente la configuración de tamaño de fuente del sistema del usuario cuando usas sp.
- Documentación y activación de funciones: Si tu aplicación dispone de características de accesibilidad documentadas, asegúrate de que se puedan activar fácilmente. Cualquier documentación y ayuda proporcionada con la aplicación debe ser accesible.
Principios de la accesibilidad
Detrás de las prácticas recomendadas se encuentran principios fundamentales que guían el desarrollo accesible (aplicables tanto a Views como a Compose):
- Equidad de uso: La aplicación debe ser útil y comercializable para personas con diversas capacidades.
- Flexibilidad y adaptabilidad: La aplicación debe adaptarse a diferentes necesidades individuales (ej. tamaño de texto, contraste).
- Comprensibilidad: La información y el funcionamiento de la interfaz de usuario deben ser fáciles de entender (ej. etiquetas claras, navegación lógica).
- Robustez: El contenido debe ser lo suficientemente robusto como para ser interpretado de manera confiable por una amplia variedad de agentes de usuario, incluidas las tecnologías de asistencia (ej. usar semántica correctamente).
- Perceptibilidad: La información y los componentes de la interfaz de usuario deben presentarse a los usuarios de manera que puedan percibirlos (ej. contraste adecuado, alternativas textuales).
Cómo probar la accesibilidad de tu app Compose
Probar la accesibilidad de tu aplicación es un paso crucial. Las herramientas existentes funcionan también con Compose:
- Prueba de accesibilidad (Accessibility Scanner): Esta herramienta de Google analiza la interfaz de usuario (tanto Views como Compose) y sugiere mejoras (contraste, tamaño táctil, etiquetas).
Accessibility Test Framework for Android: Permite incluir verificaciones de accesibilidad en tus pruebas instrumentadas de Espresso o Compose. En Compose, puedes usar ComposeTestRule y los SemanticsMatcher para verificar propiedades semánticas en tus tests de UI.
Ejemplo de test de Compose (simplificado):
- UI Automator Viewer: Sigue siendo útil para inspeccionar la jerarquía y propiedades de accesibilidad, aunque la estructura interna de Compose es diferente a la de Views.
- Accessibility Insights for Android: Realiza pruebas automáticas y genera informes.
- A11y Ally: Ayuda a analizar la accesibilidad desde la perspectiva del desarrollador.
Además de las herramientas automatizadas, es fundamental realizar pruebas manuales utilizando las funciones de accesibilidad de Android como TalkBack (navegación por gestos, lectura de contenido), Switch Access (navegación por interruptores) y Voice Access (control por voz). Estas pruebas te permitirán comprender la experiencia real de los usuarios con discapacidades.
Recuerda que las herramientas automatizadas tienen limitaciones y no pueden verificar la lógica o claridad semántica. Las pruebas con usuarios reales son siempre la forma más valiosa de garantizar la accesibilidad.
Conclusión
La accesibilidad en aplicaciones Android es una inversión que beneficia a todos. Al comprender la importancia de la inclusión digital, conocer la normativa, y aplicar los principios y técnicas de desarrollo y prueba accesibles (usando el modificador semantics, tamaños adecuados, contraste, etc.), puedes crear aplicaciones que lleguen a una audiencia más amplia y brinden una experiencia de usuario superior para todos. En nuestra mano está comenzar hoy mismo a construir un mundo digital más accesible.