Utilizar Talkback con teclado

En Android existen varias herramientas de asistencia tanto oficiales como de terceros. Una de estas herramientas oficiales es Talkback, el lector de pantallas para Android. Este lector de pantallas viene instalado por defecto en muchas versiones de Android y se puede encontrar en la Playstore de Google.

Talkback, además de mediante gestos en una pantalla táctil, se puede controlar mediante un teclado físico conectado al dispositivo Android. Para ello lo primero que debemos hacer es conectar un teclado inalámbrico al dispositivo.

Hot-key para Talkback

Los lectores de pantalla que son compatibles con el uso mediante teclado suelen utilizar una tecla o conjunto de teclas para sus atajos de teclado. Por ejemplo en VoiceOver son las teclas Control+Opción, NVDA y Jaws utilizan la tecla Insert y Narrador utiliza la combinación Control+Windows. Estas teclas o combinaciones de teclas se conocen como la hot-key del lector de pantallas.

En el caso de Talkback es la tecla Alt. Esto significa que la mayoría de atajos y combinaciones de teclas para manejar Talkback desde un teclado utilizarán la tecla Alt. Esto implica que el teclado que vayamos a utilizar en nuestro dispositivo Android debe incluir, al menos, la tecla Alt.

En las versiones más modernas de Talkback podemos cambiar la hot-key de Talkback por otra tecla que nos resulte más idónea. Para hacer esto dentro de los ajustes de Talkback hay que entrar en configuración avanzada, buscar la sección Combinaciones de teclas. Allí se ha de activar la opción seleccionar tecla modificadora.

Mapas de teclas para Talkback

Talkback ofrece en sus ajustes de configuración la posibilidad de utilizar dos conjuntos de atajo de teclado distintos. Son el mapa de teclas predeterminado y el mapa de teclas clásico. Para este artículo utilizaremos el predeterminado que es el que viene seleccionado por defecto. Además el mapa de teclas clásico no incluye todas las funciones de control de Talkback desde teclado. Por ejemplo, sólo el mapa predeterminado incluye atajos de teclado para navegar de forma más eficiente en contenidos web utilizando Talkback.

Navegación por la pantalla

A la hora de mover el foco de Talkback por la pantalla del escritorio o por una aplicación nativa debemos utilizar las siguientes combinaciones de teclas:

  • Ir al siguiente elemento: Alt+flecha derecha
  • Ir al elemento anterior: Alt+flecha izquierda
  • Ir al elemento superior: Alt+flecha arriba
  • Ir al elemento inferior: Alt+flecha abajo
  • Ir al primer elemento: Alt+Control+flecha izquierda
  • Ir al último elemento: Alt+Control+flecha derecha
  • Ir a la siguiente ventana: Alt+Control+flecha abajo
  • Ir a la ventana anterior: Alt+Control+flecha arriba
  • Hacer click sobre el elemento focalizado: Alt+enter
  • Hacer un click largo o mantenido sobre el elemento focalizado: Alt+Mayúsculas+enter

Explorando texto

También existen combinaciones para poder leer con más detalle el texto que encontremos por la pantalla.

  • Ir a la palabra siguiente: Alt+Control+Mayúsculas+flecha derecha
  • Ir a la palabra anterior: Alt+Control+Mayúsculas+flecha izquierda
  • Ir al carácter siguiente: Alt+Mayúsculas+flecha derecha
  • Ir al carácter anterior: Alt+Mayúsculas+flecha izquierda

Teclas globales

En Android en la parte inferior de la pantalla existen 3 teclas de acción global. Desde el teclado también tenemos acceso a esta funcionalidad.

  • Atrás: Alt+tecla de borrar o retroceder
  • Inicio: Alt+Control+h
  • Aplicaciones recientes: Alt+Control+r
  • Ir a las notificaciones: Alt+Control+n
  • Reproducir/pausar contenido multimedia: Alt+Mayúsculas+espacio

Control de lectura o rotor

En Talkback no existe el rotor de VoiceOver pero si algo muy parecido llamado control de lectura. Podemos utilizar el control de lectura de Talkback mediante los siguientes atajos de teclado:

  • Activar el siguiente control de lectura: Alt+Control+Mayúsculas+flecha abajo
  • Activar el anterior control de lectura: Alt+Control+Mayúsculas+flecha arriba
  • Ajustar el control de lectura al valor anterior: Alt+Mayúsculas+flecha arriba
  • Ajustar el control de lectura al valor siguiente: Alt+Mayúsculas+flecha abajo

Acciones de Talkback

También podemos activar ciertas acciones específicas de Talkback mediante el teclado:

  • Mostrar menú de Talkback: Alt+espacio
  • Mostrar acciones de Talkback: Alt+Control+espacio
  • Buscar un elemento en la pantalla: Alt+Control+/
  • Mostrar idiomas instalados: Alt+Control+l

Lectura de la pantalla

Con Talkback podemos automatizar el proceso de lectura de toda la pantalla. Para ello, además de los gestos específicos, tenemos las siguientes combinaciones de teclas:

  • Leer desde el principio de la pantalla: Alt+Control+enter
  • Leer desde el elemento focalizado: Alt+Control+Mayúsculas+enter

Navegación en Chrome

Con el mapa predeterminado se incluyen algunas combinaciones de teclas para Talkback para agilizar la lectura de una página web:

  • Ir al botón siguiente: Alt+b
  • Ir al botón anterior: Alt+Mayúsculas+b
  • Ir al botón de verificación siguiente: Alt+x
  • Ir al botón de verificación anterior: Alt+Mayúsculas+x
  • Ir al cuadro combinado siguiente: Alt+z
  • Ir al cuadro combinado anterior: Alt+Mayúsculas+z
  • Ir al cuadro de texto siguiente: Alt+e
  • Ir al cuadro de texto anterior: Alt+Mayúsculas+e
  • Ir al gráfico siguiente: Alt+g
  • Ir al gráfico anterior: Alt+Mayúsculas+g
  • Ir al encabezado siguiente: Alt+h
  • Ir al encabezado anterior: Alt+Mayúsculas+h
  • Ir al encabezado de nivel 1 a 6 siguiente: Alt+1 al 6
  • Ir al encabezado de nivel 1 a 6 anterior: Alt+Mayúsculas+1 al 6
  • Ir al enlace siguiente: Alt+l
  • Ir al enlace anterior: Alt+Mayúsculas+l
  • Ir a la lista siguiente: Alt+o
  • Ir a la lista anterior: Alt+Mayúsculas+o
  • Ir a la tabla siguiente: Alt+t
  • Ir a la tabla anterior: Alt+Mayúsculas+t

Cómo utilizar el emulador de Android fuera de Android studio

Los entornos de desarrollo para dispositivos móviles como Xcode o Android studio incluyen alguna herramienta para poder probar los proyectos en desarrollo sin necesidad de tener un dispositivo físico. Esta herramienta simula el comportamiento de un dispositivo físico. En el caso de Android studio esta herramienta se conoce como emulador de Android y viene incluido en el Android SDK que se instala junto a Android studio.

Este emulador, en las últimas versiones de Android studio, se ejecuta por defecto dentro del entorno de Android studio. Pero podemos necesitar ejecutar el emulador de Android fuera del entorno de Android studio. Las razones pueden ser muy variadas: el acceso al emulador no es muy accesible dentro de Android studio, el consumo de recursos de Android studio y el emulador pueden superar los recursos disponibles en la máquina que estemos utilizando, puede que queramos ejecutar una aplicación Android en nuestra máquina para realizar alguna tarea, etc. En cualquier caso es de agradecer que podamos acceder al emulador desde fuera de android studio.

Accediendo al emulador

El emulador de Android está dentro de las herramientas del SDK de Android. Es un comando de la Terminal por lo que podemos acceder a él desde la terminal de Mac o Linux o el CMD de Windows.

El SDK de Android se puede instalar de forma individual junto a las Platform-tools de Android. Al instalar Android studio también se instalará el SDK de Android. Dentro de ese SDK encontraremos una carpeta llamada emulador.

El emulador simula un dispositivo virtual que ejecuta una versión de Android. La creación y administración de dispositivos virtuales se realiza dentro de Android studio pero una vez creado el dispositivo virtual no tenemos por qué seguir utilizando el emulador dentro de Android studio.

Para abrir el emulador debemos conocer qué dispositivos virtuales están disponibles y conocer el nombre exacto con el que el sistema identifica a cada dispositivo virtual. 

Ejecutando el siguiente comando se listarán los dispositivos virtuales disponibles.

emulator -list-avds

A la hora de escribir este artículo en mi máquina se encuentran los siguientes dispositivos:

pixel3a-api31
pixel6a-api33

Conociendo el nombre exacto de los dispositivos virtuales podemos, por ejemplo arrancar el Pixel6A ejecutando el siguiente comando en la terminal:

emulator -avd pixel6a-api33

Tras introducir el comando se abrirá el entorno de emulación de Android y se cargará la imagen de Android correspondiente a la API 33 que es Android 13.

Accediendo a la gestión del dispositivo

Una vez esté funcionando el emulador de Android podemos utilizar la herramienta ADB para gestionar varios elementos del dispositivo virtual al igual que haríamos si conectásemos un dispositivo Android físico a nuestra máquina.

El ADB, también conocido como Android Debug Bridge, también se instala con las platform-tools de Android.

 Con el ADB podemos enviar órdenes o enviar archivos a nuestro dispositivo Android.

Veamos algunos comandos sencillos que se pueden realizar con ADB.

Lista de dispositivos conectados

Con el comando adb devices se mostrará una lista de dispositivos conectados a nuestra máquina incluyendo los dispositivos virtuales que están siendo ejecutados en el emulador.

Enviar un fichero al dispositivo

Para enviar un fichero al dispositivo debemos ejecutar el siguiente comando:

adb push rutaDelFicheroAEnviar rutaDeDestinoEnElDispositivo

Enviar un fichero desde el dispositivo a nuestra máquina

Con el siguiente comando el dispositivo enviará un fichero a nuestra máquina:

adb pull nombreDelFicheroARecuperar rutaDeNuestraMaquinaParaElFichero

Instalar un APK

Con el siguiente comando instalaremos un paquete de aplicación (APK) en nuestro dispositivo:

adb install nombreCompletoDelFicheroAPK

Desinstalar una aplicación

Con el siguiente comando desinstalaremos un APK del dispositivo:

adb uninstall nombreCompletoDelAPK

Acceder a la terminal del dispositivo

Con el siguiente comando accederemos a la Shell o terminal del dispositivo para poder realizar ciertas operaciones de gestión:

adb shell

Reiniciar el dispositivo

Con ADB también podemos realizar varios tipos de reinicio en el dispositivo.

Para hacer un reinicio normal el comando es:

adb reboot

Y para hacer un reinicio con bootloader el comando es:

adb reboot bootloader

También podemos activar el modo recovery:

adb reboot recovery

Problemas para ejecutar los comandos

Si al intentar ejecutar el comando adb o emulator la terminal o el CMD nos da un mensaje de error indicando que no se encuentra el fichero o comando esto indica que las carpetas de las platform-tools de android no están incluidas en el path de nuestra máquina. Para poder ejecutar estos comandos bien podemos incluir todo el path hasta la carpeta concreta donde está el comando adb o emulator o bien incluir estas rutas en la variable path de nuestra máquina.

Primer congreso accesibilidad digital en universidades de la universidad de Puerto Rico

El próximo 29 de septiembre de 2023 se celebrará el primer congreso de accesibilidad digital en universidades.

El evento se realizará de forma presencial en la Universidad de Puerto Rico y se retransmitirá a través de Microsoft Live Events.

Este evento reviste una importancia fundamental, ya que se propone explorar el poder transformador de la tecnología en la promoción de una educación superior inclusiva y accesible para todos los individuos.

En la página web del evento está disponible la agenda con las distintas charlas y ponentes que participarán.

Smart cities y campus universitarios

Participaré en el evento con una charla divulgativa sobre la tecnología para mejorar la accesibilidad en los campus universitarios y las smart cities.

Puedes registrarte en el evento para poder disfrutar de las ponencias del evento.

Tests dentro de la ingeniería del software

Dentro de la mayoría de metodologías de diseño y desarrollo de software existe un apartado enfocado a las comprobaciones de las funciones, aspecto y comportamiento de una aplicación. Es lo que se conoce como testing dentro del proyecto.

Beneficios del testing

Dentro de la multitud beneficios que aporta realizar testing en nuestro proyecto se encuentran los siguientes.

  • Se pueden realizar pruebas específicas y generales del comportamiento de clases y funciones de nuestro proyecto. De esta forma podemos validar que las funciones y clases que desarrollamos dentro de nuestro proyecto cumplen los requisitos definidos por el documento de análisis.
  • Se pueden realizar pruebas completas de una experiencia de usuario. De esta forma podemos verificar que nada se ha roto cuando añadimos algún elemento nuevo a nuestro proyecto.
  • Las pruebas de uso de la aplicación se pueden automatizar para que nuestro ordenador compruebe que la aplicación funciona como se espera.
  • Además permite automatizar otros procesos que pueden resultar laboriosos o tediosos como la toma de capturas de pantalla, validación del aspecto visual de cada pantalla de la aplicación e incluso se pueden crear comprobaciones de accesibilidad en algunas plataformas para la detección temprana de barreras de accesibilidad.

Problemas del testing

Incluir testing en nuestro proyecto implica la aparición de los siguientes problemas, sobre todo si el equipo de desarrollo no está acostumbrado al uso de testing:

  • Incremento en los costes de organización y tiempo. Las pruebas o tests no se planifican ni se escriben solas. Es necesario organizar el plan de trabajo para que el testing sea correctamente incluido en la metodología de trabajo utilizada por el equipo dentro del proyecto.
  • Prevención de falsos errores. Cuando se realizan cambios visuales o funcionales dentro de una ventana o una sección de nuestra aplicación todos los tests relacionados con dicha pantalla fallarán. Es necesario que algún miembro del equipo actualice esos tests para que acepten los nuevos cambios y validar cuales son los nuevos comportamientos y aspectos válidos para el proyecto.
  • No existe la fiabilidad al completo. Aunque podamos pensar que un proyecto software siempre se comportará igual en cualquier situación cuando el proyecto es complejo también aumenta la complejidad para cubrir todos los posibles casos de uso con los tests. Incluso así es posible que nuestro conjunto de tests no detecte algún posible error o problema de funcionamiento de nuestra aplicación. Cuando esto sucede es necesario ampliar el número de tests para verificar que el error detectado no vuelva a ocurrir.

Tipos de testing

Dentro de la creación y mantenimiento de un proyecto de software existen distintas necesidades de comprobación por esta razón existen diversos tipos de testing.

Cada tipo de testing tiene un objetivo claro que ayuda a detectar y solucionar un tipo de problema específico del proyecto.

Tests funcionales

Este tipo de test comprueba si la funcionalidad de un método o función se adapta al comportamiento esperado. De esta forma podemos comprobar si una función de conversión de divisas funciona como se espera o si el cálculo de el total del precio de un pedido no comete errores.

Dentro de este tipo de tests encontramos los tests unitarios, tests de aceptación, tests de integración y tests de regresión.

Tests no funcionales

Este tipo de test representa  las pruebas que se realizan en la aplicación o producto y que no están relacionadas con el código del proyecto.

Algunas de estas pruebas son las pruebas de rendimiento, las pruebas de carga y las pruebas de estrés.

Encuesta para un estudio sobre la accesibilidad en los sistemas operativos

Natanael Rojo, estudiante de la carrera de ingeniería de sistemas en la universidad de los Andes, está realizando su trabajo de grado mediante un estudio sobre la accesibilidad en los sistemas operativos.

Las razones para este estudio se describen en las propias palabras de Natanael:

Bueno, cuando inicié mi camino universitario, no tuve alguna guía que me ayudara a elegir un sistema operativo o herramienta accesible que me permitiera hacer las cosas de manera cómoda y eficaz, más que todo en el ámbito de la ingeniería, que fue mi área de estudio. Por eso quiero desarrollar este trabajo que tiene la finalidad de estudiar qué tan accesibles son los sistemas operativos para las personas con discapacidad visual, evaluarlos, así como recopilar las opiniones de los usuarios con respecto a posibles mejoras que crean que les ayuden en sus actividades del día a día.

También dice que busca ayudar a los usuarios con discapacidad visual en el ámbito educativo, laboral y personal. Además busca concienciar a las empresas desarrolladoras de software sobre la importancia de la accesibilidad en aplicaciones, documentos, páginas web y sistemas operativos.

¿Cómo participar en el estudio?

Natanael busca que personas con discapacidad completen una encuesta sobre la accesibilidad en los sistemas operativos para personas con discapacidad visual.

Además necesita entrevistar a personas con discapacidad visual para estudiar y recoger experiencias y necesidades concretas. Si deseas participar en las entrevistas y tienes discapacidad visual puedes ponerte en contacto con Natanael a través de su correo electrónico: rojonatanael99@gmail.com.

Qué es Docker

En la actualidad tanto para el uso profesional como el personal existen 3 principales plataformas o sistemas operativos para los ordenadores de escritorio: Linux, Windows y MacOS. Estas 3 plataformas publican actualizaciones y nuevas versiones para que todas las personas puedan acceder a una versión más optimizada y segura de su entorno de trabajo. Esta premisa debería permitir que una aplicación o proyecto software se pueda ejecutar en cualquier ordenador que esté corriendo la misma plataforma para la que se diseñó la aplicación pero esto no es así.

Dentro de un ordenador que está ejecutando una de las 3 plataformas que hemos mencionado antes se ejecutan multitud de procesos, programas de apoyo y se disponen de distintas librerías que hacen de herramientas de apoyo a otras aplicaciones. Cada proceso, librería y programas de apoyo también tienen sus correspondientes actualizaciones y nuevas versiones. Unido a todo esto se ha de mencionar que tanto Windows, MacOS y Linux permiten al usuario personalizar ciertas características y configuraciones que permiten al usuario optimizar su máquina a su gusto o necesidad. Por ejemplo, la configuración y personalización de un ordenador dedicado a hacer de servidor web para miles de usuarios es muy distinta a la configuración de un ordenador que se utiliza en casa para tareas educativas, ócio y personales.

En mi máquina funciona

Dentro de la ingeniería del software es muy habitual que la persona encargada del desarrollo de un proyecto no pueda utilizar el ordenador que se utilizará como servidor en producción por lo que tendrá que configurar su ordenador de trabajo con una configuración lo más semejante posible a la que tendrá ese servidor en producción. Esto casi siempre es imposible debido tanto a las diferencias en el hardware como en las posibles diferencias entre versiones y configuraciones del conjunto de librerías, procesos y programas de apoyo entre una máquina y otra.

En un primer momento la industria del software optó por el uso de máquinas virtuales pero esto implicaba que los equipos dedicados al desarrollo fuesen más potentes que los equipos de producción ya que la ejecución de una máquina virtual requería tanta potencia como la máquina anfitriona y la virtualizada.

Con el cambio de arquitectura de proyectos monolíticos a proyectos con microservicios la situación mejoró. En lugar de tener que utilizar una maquina completa para ejecutar toda la aplicación empaquetada en un único ejecutable (arquitectura monolítica) se pasó a la arquitectura de microservicios en la que un proyecto software completo se divide en muchos módulos pequeños y cada uno de estos módulos sólo se encarga de resolver uno de los problemas existiendo una comunicación interna entre cada uno de los microservicios que forman un proyecto completo.

Con este nuevo paradigma el uso de una máquina virtual para desarrollar un microservicio era innecesario ya que el microservicio requería de muy poca potencia para su ejecución tanto simulada durante el desarrollo como durante su explotación en producción. Era necesario la aparición de un nuevo método de virtualización que permitiese la ejecución de un microservicio que requiera sólo los recursos mínimos necesarios para su correcta ejecución y que al ejecutarse ya incluya todo lo necesario sin necesidad de depender de la máquina que lo ejecute. Nace Docker, un sistema de virtualización muy pequeño especializado en la ejecución de microservicios.

De esta forma un desarrollador instala Docker para crear sus entornos de ejecución y desarrollar su microservicio. Una vez desarrollado puede instalar Docker en la máquina de producción, trasladar el microservicio desarrollado y ejecutarlo en la máquina final. Como Docker facilita que el microservicio se ejecute siempre con la misma configuración en cualquier máquina ya no sucede el problema de que en la máquina de desarrollo todo iba bien y en producción todo va mal.

En conclusión podemos decir que Docker es una herramienta que permite ejecutar programas y aplicaciones de forma aislada, sin que se afecten entre sí. Es como una caja virtual que contiene todo lo que un programa necesita para funcionar correctamente. Esto facilita la instalación, ejecución y distribución de aplicaciones en diferentes máquinas.