Ponencia ofrecida por Alberto Delgado y Diego Hernández en DroidconMAD2013.
Sinopsis: #ASPACEnet es un proyecto que nace de la colaboración de Fundación Vodafone España con la Confederación ASPACE. El objetivo es mejorar la autonomía y la calidad de vida de las personas con parálisis cerebral a través de la tecnología móvil. Para ello se está desarrollando un subsistema en Android para hacer accesible el uso de aplicaciones del sistema operativo relacionadas con la comunicación, como WhatsApp, Facebook, Twitter, Message+, Skype o SMS. Para garantizar esta accesibilidad es necesario conseguir una interfaz completamente adaptada a diferentes necesidades, permitiendo al propio usuario o a su acompañante realizar esta adaptación mediante herramientas sencillas.
2. Índice
•
•
•
•
•
Importancia de la Accesibilidad
Interfaz de Usuario
Introducción a la Accesibilidad en Android
Eventos de Accesibilidad
Productos de Apoyo
– AccessibilityService
– Comunicadores Aumentativos
– InputMethods
3. Importancia de la Accesibilidad en las TIC
• Un gran número de Usuarios:
– Hay 600 millones de personas con discapacidad en todo el mundo.
– Uno de cada cuatro europeos tiene un familiar con una discapacidad.
– Número de personas con discapacidad en España = 4,5 millones aprox.
– Todos somos potenciales usuarios con la edad.
• Cuando una tecnología se diseña con barreras de
accesibilidad, se convierte en una amenaza para muchos
usuarios.
• La accesibilidad es una condición necesaria para la inclusión
social.
4.
5. Interfaz de Usuario – Parálisis Cerebral
• El colectivo de usuarios con Parálisis Cerebral está formado por personas
con múltiples tipos de necesidades.
• La gran mayoría tienen necesidades motoras y cognitivas (problemas
sensoriales, alteraciones en la atención, dificultades lecto-escritoras) que
requieren el uso de productos de apoyo.
• Suelen usarse pulsadores, joysticks, plantillas sólidas en el acceso a la
interfaz de los dispositivos, y comunicadores aumentativos, iconos
grandes y acciones sencillas en la interacción entre usuario y terminal.
• Por ello se debe cuidar el diseño de una interfaz que permita esta
personalización de acceso a los componentes de la pantalla.
6. Introducción Accesibilidad
en Android
•
•
•
•
•
La accesibilidad está integrada en la
plataforma.
API de accesibilidad desde la versión
1.6, que ha ido ampliando
funcionalidad en sucesivas
versiones.
API para Text-to_Speech
independiente del motor TTS
incorporado.
Existen eventos de Accesibilidad
manejados por el
AccessibilityManager.
Un producto de apoyo en Android se
implementa mediante
AccessibilityService o IME.
Versión
Nueva funcionalidad
Comentario
Android 1.5
(Cupcake)
Se incluyó la API TTS
Se incluyo el primer motor de síntesis de
Texto a Voz, pero solo se podía utilizar el
propio de Android (picoTTS)
Android 1.6
(Donuts)
Se incluyo la API de Accesibilidad
Permitió la aparición de los primeros
lectores de pantalla para Android como
Talkback y Spiel.
Android 2.0-2.1
(Eclair)
Mejoras en la API de Accesibilidad
Permitió por primera vez la conexión de
métodos de entrada de texto externos.
Android 2.2
(FroYo)
Mejoras en la entrada de voz y en TTS
Permitió cambiar el motor de síntesis de
voz a otro que no sea el nativo de Android.
Android 2.3
(Gingerbread)
Calendario de android accesible.
Eyes-free Keyboard , da por primera vez
una opción accesible de introducir texto
en Android
Aunque no cambie la API de Accesibilidad,
mejora su implementación permitiendo
utilizar características que previamente no
se podían. Como acceder a la información
previa en un cuadro de edición de texto
mediante un Servicio de Accesibilidad.
Android 3.0
(Honeycomp)
Incluye web scripts para WebView
La funcionalidad de la navegación física
sigue siendo necesaria
Android 4.0
(Ice Cream Sandwich)
Incluye el tamaño de fuente ajustable y
la exploración táctil (Explore-by-Touch)
El TTS cambia automáticamente cuando
un nuevo idioma seleccionado. El teclado
propio del teléfono es accesible mediante la
exploración táctil (Ya no es necesario Eyesfree keyboard)
Android 4.1
(Jelly Beam)
Incorpora la navegación mediante gestos
(Explore-by-Touch gestures).
Se introduce BraileBack, permitiendo
leer y escribir en braile con un dispositivo
externo.
El Talkback incorpora el Soundback y
Kickback.
Las notificaciones son configurables,
pudiendo ampliar el tamaño del texto,
imagen, etc.
Android 4.2
(Jelly Beam)
Incorpora el magnificador de pantalla.
Android 4.3
(Jelly Beam)
Mejoras sobre los AccessibilityServices
Permite ampliar cualquier contenido de la
pantalla
Implementación de onKeyEvent(); posibilidad
de editar texto dentro de los nodos de la
Interfaz, nueva declaración de características
de accesibilidad.
Android 4.4
(KitKat)
Disponible en el menú de
Incorpora sistema de Subtítulos,
Ajustes>Accesibilidad. Todos los vídeos
permitiendo elegir idioma, tamaño y estilo
reproducidos en un VideoView deberían
del texto.
respetar dicha configuración.
Ampliación de la API de accesibilidad para La amplicación de la API mejora la calidad
mayor control de los elementos de la
del feedback de accesibilidad para los
interfaz.
“accessibility services”.
7. Introducción Accesibilidad-Diseño de Interfaz
• Todo componente debe tener bien definido su valor, rol y estado.
Ejemplos:
– Button: se debe indicar que es un botón (rol).
– TextView: se debe indicar el texto de su interior (valor).
– CheckBox: se debe indicar si está activo o no (estado).
– ImageView: se debe indicar que hay en la imagen mediante una descripción (valor).
• Generalmente, utilizando componentes propios de Android se cumple
este requisito. En los elementos gráficos (ImageView, ImageButton, etc)
es necesario rellenar el campo ContentDescription.
• La interfaz debe ser posible navegar de forma intuitiva con el foco:
– Garantizar que los componentes deseados puedan ser focusables (modo normal y Touch
Mode).
– Apuntar al componente que se quiera mover el foco en cada una de las 4 direcciones de
navegación.
8. Producto de Apoyo-AccessibilityService
• El sistema envía AccessibilityEvent automáticamente cuando algo
sucede en la interfaz de usuario.
¡Problema! Esto no siempre sucede.
• En ocasiones es necesario forzar el lanzamiento de un
AccessibilityEvent:
//Invocar al AccessibilityManager
AccessibilityManager accessibilityManager =
(AccessibilityManager) getApplicationContext().getSystemService(Context.ACCESSIBILITY_SERVICE);
if(accessibilityManager.isEnabled()){
AccessibilityEvent a = AccessibilityEvent.obtain(AccessibilityEvent.TYPE_VIEW_FOCUSED); //Definir el tipo de
Evento
a.setText( v.getContentDescription()); //Incluir la descripción
v.sendAccessibilityEventUnchecked(a); //Lanzar el evento
}
9. Producto de Apoyo-AccessibilityService
•
Un servicio de accesibilidad es una aplicación que proporciona feedback
aumentativo de la interfaz de usuario para ayudar a los usuarios con discapacidad.
•
Los tipos de feedback que puede proporcionar son:
–
FEEDBACK_AUDIBLE
–
FEEDBACK_HAPTIC
–
FEEDBACK_VISUAL
–
FEEDBACK_GENERIC
•
Un servicio escucha AccessibilityEvents, y obtiene toda la información del
componente que lo ha lanzado mediante su AccessibilityNodeInfo.
•
AccessibilityNodeInfo sigue una estructura de árbol.
•
A partir de ICS un AccessibilityService puede:
–
Escuchar gestos específicos.
–
Puede realizar ciertas acciones como si las hiciera el usuario mediante el método performAction() o si
la acción es global (como volver al home), performGlobalAction().
10.
11. Comunicadores Aumentativos
•
Numerosos usuarios con parálisis cerebral
requieren el uso de sistemas complementarios al
habla (comunicación aumentativa) o
suplementarios (comunicación alternativa) para
poder desarrollar al máximo potencial su
comunicación.
•
Los comunicadores aumentativos funcionan a
partir de pictogramas, animaciones y tableros de
comunicación, de forma que los usuarios pueden
aumentar su vocabulario y su facilidad de
expresión.
•
Existen varios tipos:
–
Programas de gestión de símbolos, texto y/o fotografías.
–
Comunicadores sencillos con salida a voz.
–
Comunicadores dinámicos.
12. Producto de Apoyo-InputMethod
• Un editor de método de entrada (IME) es una aplicación de
control que permite a los usuarios introducir texto u otros
eventos de una aplicación.
• Para diseñar un IME tenemos que considerar las siguientes
clases:
– KeyEvent: Encargada del manejo de caracteres del teclado y eventos de botón.
– InputMethodService: Proporciona la mayor parte de la implementación de la gestión del
estado y la visibilidad del IME así como la comunicación con el campo de entrada de
texto seleccionado.
– BaseInputConnection: Define el canal de comunicación desde una parte posterior a la
aplicación que está recibiendo su entrada.
– KeyBoardView: Ésta es la encargada de pintar en pantalla nuestra interfaz del
InputMethod.