trabajo fin de gradooa.upm.es/68116/1/tfg_david_ruiz_casado.pdf · 2021. 7. 30. · este trabajo...

42
Universidad Politécnica de Madrid Escuela Técnica Superior de Ingenieros Informáticos Grado en Ingeniería Informática Trabajo Fin de Grado Ampliación de Formatos de Documentos en una Aplicación Android de Cursos para Personas Ajenas al Uso de Tecnología Autor: David Ruiz Casado Tutora: Susana Muñoz Hernández Madrid, Junio de 2021

Upload: others

Post on 15-Aug-2021

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Trabajo Fin de Gradooa.upm.es/68116/1/TFG_DAVID_RUIZ_CASADO.pdf · 2021. 7. 30. · Este Trabajo Fin de Grado se ha depositado en la ETSI Informáticos de la Universidad Politécnica

Universidad Politécnicade Madrid

Escuela Técnica Superior deIngenieros Informáticos

Grado en Ingeniería Informática

Trabajo Fin de Grado

Ampliación de Formatos deDocumentos en una Aplicación Androidde Cursos para Personas Ajenas al Uso

de Tecnología

Autor: David Ruiz CasadoTutora: Susana Muñoz Hernández

Madrid, Junio de 2021

Page 2: Trabajo Fin de Gradooa.upm.es/68116/1/TFG_DAVID_RUIZ_CASADO.pdf · 2021. 7. 30. · Este Trabajo Fin de Grado se ha depositado en la ETSI Informáticos de la Universidad Politécnica

Este Trabajo Fin de Grado se ha depositado en la ETSI Informáticos de laUniversidad Politécnica de Madrid para su defensa.

Trabajo Fin de GradoGrado en Ingeniería Informática

Título: Ampliación de Formatos de Documentos en una Aplicación Androidde Cursos para Personas Ajenas al Uso de Tecnología

Junio de 2021

Autor: David Ruiz CasadoTutor: Susana Muñoz Hernández

Lenguajes y Sistemas Informáticos e Ingeniería de SoftwareETSI InformáticosUniversidad Politécnica de Madrid

Page 3: Trabajo Fin de Gradooa.upm.es/68116/1/TFG_DAVID_RUIZ_CASADO.pdf · 2021. 7. 30. · Este Trabajo Fin de Grado se ha depositado en la ETSI Informáticos de la Universidad Politécnica

Resumen

El avance tecnológico que ha sufrido el mundo desde las últimas décadas delpasado siglo, magnificado gracias al uso particular de Internet y ordenadores,así como la posibilidad de reducir el tamaño de estos últimos, a la vez que seincrementa su potencia, generando la creación de los teléfonos inteligentes. De-bido a esto, los servicios al alcance de la ciudadanía se han tenido que adaptaral avance de las nuevas tecnologías. Por ejemplo, pudiendo pedir una cita mé-dica o reservar una mesa de un restaurante a través de Internet, sin tener quecomunicarte con nadie.

A causa del crecimiento tan repentino y acelerado de la tecnología, no todas laspersonas han podido acoplarse a este nuevo mundo pudiendo llegar a sentirsedesplazados de la nueva sociedad tecnológica. Uno de los grupos más destacadosson las personas de edad avanzada, los cuales no han tenido acceso a dichoavance, ya que es un hecho que, cuanto más joven es una persona, más interésy entendimiento muestra hacia las novedades que se van produciendo en elmundo, lo contrario a las personas más mayores. Otro grupo de personas que nose encuentran dentro de este avance, son las que no tienen acceso a las nuevastecnologías, y es que a pesar de que esta se ha particularizado, permitiendo quecada persona tenga un teléfono móvil propio o un ordenador, esto no ocurre entodos los lugares del planeta. En los países menos desarrollados son minoría laspersonas con acceso a Internet.

Debido a estos problemas, surge TechPeopleCare Android App, con el fin de ayu-dar a las personas que no saben utilizar estos nuevos dispositivos.

El trabajo realizado para Ampliación de Formatos de Documentos en una Aplica-ción Android de Cursos para Personas Ajenas al Uso de Tecnología consiste enañadir a TechPeopleCare Android App una nueva funcionalidad con la que poderincluir documentos de texto con formato de PDF a los cursos y, de esta manera,poder dar una variedad necesaria a las lecciones y adaptar la aplicación a lasnecesidades del usuario no alfabetizado digitalmente.

Para poder alcanzar esta meta, se ha estudiado el punto en el que se encontrabala arquitectura de la aplicación, su modelo de datos, así como comprender elfuncionamiento interno de la aplicación y a que usuarios va dirigida. A su vez, seha trabajado para crear un nuevo modelado de datos junto con otros alumnos,que a su vez han trabajado en otros añadidos a la aplicación, adaptándolo atodas estas actualizaciones.

i

Page 4: Trabajo Fin de Gradooa.upm.es/68116/1/TFG_DAVID_RUIZ_CASADO.pdf · 2021. 7. 30. · Este Trabajo Fin de Grado se ha depositado en la ETSI Informáticos de la Universidad Politécnica
Page 5: Trabajo Fin de Gradooa.upm.es/68116/1/TFG_DAVID_RUIZ_CASADO.pdf · 2021. 7. 30. · Este Trabajo Fin de Grado se ha depositado en la ETSI Informáticos de la Universidad Politécnica

Abstract

The technological progress that the world has suffered since the last decades ofthe last century, magnified thanks to the particular use of Internet and compu-ters, as well as the possibility of reducing the size of the devices while increasingtheir potency, generating the creation of smart phones. In consequence of this,the services available to citizens have had to adapt to the advance of new tech-nologies. For example, being able to make a doctor’s appointment or book atable in a restaurant through the Internet, without having to communicate withanybody.

Due to the sudden and accelerated growth of technology, nobody has been ableto adapt to this new world and may feel displaced from the new technologicalsociety. One of the most prominent groups are the elderly, who have not hadaccess to this advance, since it is a fact that the youngest people, is more in-terested towards the innovations that are taking place in the world, as opposedto the older people. Other group of people who are not within this progress, arethose who do not have access to new technologies, and despite the fact thatthis has been particularized, allowing each person to have their own smartpho-ne or computer, this does not occur in all parts of the planet. In less developedcountries, only a minority of people have access to the Internet.

Because of these problems, TechPeopleCare Android App arises, in order to helppeople who do not know how to use these new devices.

The work done for Expanding Document Formats in an Android Course App forNon-Technologically Literate People consists of adding to TechPeopleCare AndroidApp a new functionality with which to include PDF-formatted text documents tothe courses and, in this way, to be able to give a necessary variety to the lessonsand adapt the application to the needs of the non-digitally literate user.

In order to achieve this goal, the architecture of the application has been studiedat the point where it was, as well as its data model, understanding the inner wor-kings of the application and to which users it is addressed. In addition, togetherwith other students, we have worked to create a new data modeling, which inturn have worked on other additions to the application, adapting it to all theseupdates.

iii

Page 6: Trabajo Fin de Gradooa.upm.es/68116/1/TFG_DAVID_RUIZ_CASADO.pdf · 2021. 7. 30. · Este Trabajo Fin de Grado se ha depositado en la ETSI Informáticos de la Universidad Politécnica
Page 7: Trabajo Fin de Gradooa.upm.es/68116/1/TFG_DAVID_RUIZ_CASADO.pdf · 2021. 7. 30. · Este Trabajo Fin de Grado se ha depositado en la ETSI Informáticos de la Universidad Politécnica

Tabla de contenidos

1. Introducción 11.1. TechPeopleCare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2. Motivación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.3. Contexto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.4. Objetivos del TFG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.5. Estructura de la memoria . . . . . . . . . . . . . . . . . . . . . . . . 3

2. Tipos de usuario 52.1. Instalador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.2. Usuario no alfabetizado . . . . . . . . . . . . . . . . . . . . . . . . . . 5

3. Punto de partida 73.1. Funcionamiento antiguo . . . . . . . . . . . . . . . . . . . . . . . . . 73.2. Modelado de datos previo . . . . . . . . . . . . . . . . . . . . . . . . . 93.3. Arquitectura de una aplicación Android . . . . . . . . . . . . . . . . 9

3.3.1. Actividades, fragmentos y vistas . . . . . . . . . . . . . . . . . 103.3.2. Ciclo de vida de un fragmento . . . . . . . . . . . . . . . . . . 11

3.4. Arquitectura de TechPeopleCare Android App . . . . . . . . . . . . . 133.4.1. Clean Architecture . . . . . . . . . . . . . . . . . . . . . . . . . 13

3.5. Fragmentos y UI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143.6. Estructura del código . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3.6.1. Model-View-Presenter . . . . . . . . . . . . . . . . . . . . . . . 153.6.2. Paquetes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163.6.3. API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

4. Diseño 194.1. Descripción de nuevas funcionalidades . . . . . . . . . . . . . . . . . 194.2. Nuevo modelo de datos . . . . . . . . . . . . . . . . . . . . . . . . . . 204.3. Impacto en la arquitectura . . . . . . . . . . . . . . . . . . . . . . . . 22

5. Implementación 255.1. AndroidPdfViewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255.2. Análisis de código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

6. Análisis de impacto 29

7. Conclusiones y trabajo futuro 31

v

Page 8: Trabajo Fin de Gradooa.upm.es/68116/1/TFG_DAVID_RUIZ_CASADO.pdf · 2021. 7. 30. · Este Trabajo Fin de Grado se ha depositado en la ETSI Informáticos de la Universidad Politécnica

TABLA DE CONTENIDOS

7.1. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317.2. Trabajo futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

Bibliografía 33

vi

Page 9: Trabajo Fin de Gradooa.upm.es/68116/1/TFG_DAVID_RUIZ_CASADO.pdf · 2021. 7. 30. · Este Trabajo Fin de Grado se ha depositado en la ETSI Informáticos de la Universidad Politécnica

Capítulo 1

Introducción

Este trabajo consistirá en el desarrollo e implementación de un visualizador dedocumentos con formato portable (PDF) sobre una aplicación Android centradaen la alfabetización digital. Dicha aplicación se encuentra dentro de un proyec-to llevado a cabo por la empresa TechPeopleCare (https://www.techpeople.care).

La aplicación, llamada TechPeopleCare Android App, está orientada a la alfabe-tización digital, ayudando al usuario en el aprendizaje del uso y facilidades queofrecen las nuevas tecnologías. Estos cursos van desde conceptos básicos comoel uso del teclado y ratón en un ordenador, a la búsqueda de farmacias cercanaso el pedir cita en el médico a través de Internet. Con estos cursos se preten-de conseguir que las personas con riesgo de exclusión tecnológica, por ejemplo,personas de tercera edad o aquellas que viven en zonas rurales, tengan acceso alos servicios de salud. Además, la aplicación tiene distintas opciones a elegir enel idioma, por lo que también es accesible para las personas que no entiendanel castellano. El hecho de realizar la enseñanza a través de un dispositivo móvilgenera que el método de enseñanza sea individual, lo que permite a cada usua-rio avanzar a su propio ritmo. Los cursos se descargan sobre los dispositivos deforma previa a su uso por el usuario, por lo que la realización de los cursos norequiere de conexión de Internet, permitiendo la accesibilidad a la enseñanza azonas que carecen de red.

Actualmente todos los cursos de la aplicación se encuentran en formato video-gráfico. Con el desarrollo de este trabajo se quiere conseguir la posibilidad deintercalar vídeos didácticos con documentos de texto, y de esta manera teneradaptado cada curso según su contenido al formato que más le convenga alusuario para su aprendizaje.

1.1. TechPeopleCare

La empresa social TechPeopleCare surge del Grupo de Tecnología para el De-sarrollo y la Cooperación (TEDECO) de la Universidad Politécnica de Madrid.Su misión es impactar de forma drástica en la reducción de la brecha digital,

1

Page 10: Trabajo Fin de Gradooa.upm.es/68116/1/TFG_DAVID_RUIZ_CASADO.pdf · 2021. 7. 30. · Este Trabajo Fin de Grado se ha depositado en la ETSI Informáticos de la Universidad Politécnica

1.2. Motivación

ayudando a la consecución de los objetivos sociales de las instituciones gu-bernamentales y sin ánimo de lucro y colaborando con el éxito profesional yla responsabilidad social corporativa de las empresas privadas. TechPeopleCareparticipa en el programa internacional EIT Health, cuyo objetivo es aportar so-luciones de I+D en el ámbito de la salud. Esta aplicación en concreto perteneceal programa de e-Health inclusion through ICT training, al cual está asociado elServicio Madrileño de Salud (SERMAS).

Esta empresa social ofrece servicios de auditoría, consultoría, diseño de cursosy mantenimiento de materiales. Actualmente, los cursos de alfabetización digitalque se ofrecen desde TechPeopleCare son orientados al aprendizaje del uso deun ordenador y de un dispositivo móvil.

1.2. Motivación

La principal motivación para la creación de la aplicación de TechPeopleCare sur-ge de la necesidad de crear un entorno útil para la alfabetización digital sinnecesitar la presencia de un profesor. Para realizar esto, no sirve únicamentecon guardar determinados vídeos en un dispositivo, ya que tendría inconvenien-tes como dificultad para la actualización de cursos o la imposibilidad de añadirnuevas funcionalidades a la propia aplicación. Otro objetivo de desarrollo de laaplicación es el de poder enviar cursos de cualquier tipo a lugares sin cone-xión a Intenet, haciendo que la enseñanza que ofrece TechPeopleCare sea lo másaccesible posible.

La necesidad de la implementación de un lector de documentos con formato PDFsurge del hecho de querer tener distintas opciones dentro de los propios cursos.El formato de vídeo aporta gran ayuda a la hora de la enseñanza a analfabetosdigitales1, pero es verdad que no siempre es la mejor opción como formato. Espor ello por lo que con la nueva funcionalidad del lector PDF se podrá adaptarcada unidad de aprendizaje al formato que más útil le sea a los usuarios de laaplicación.

1.3. Contexto

La aplicación TechPeopleCare Android App ha sido desarrollada desde un co-mienzo por Ángel Herranz Nieva. Además, esta aplicación ha sufrido algunasactualizaciones y depuraciones a través de alumnos de la Universidad Politécni-ca de Madrid.

El equipo de TechPeopleCare considera que aún se puede dotar a la aplicaciónde nuevas funcionalidades. Por esta razón, se sigue esta línea de trabajo grupal.Cada alumno se centra en una actualización en concreto, pero a su vez traba-ja con el resto del grupo en las modificaciones que afectan a la aplicación en

1Utilizamos el término para referirnos a personas sin “habilidad para localizar, analizar, orga-nizar, entender y evaluar información utilizando tecnología digital”, artículo Alfabetización digitalen la Wikipedia: https://es.wikipedia.org/wiki/Alfabetismo_digital

2

Page 11: Trabajo Fin de Gradooa.upm.es/68116/1/TFG_DAVID_RUIZ_CASADO.pdf · 2021. 7. 30. · Este Trabajo Fin de Grado se ha depositado en la ETSI Informáticos de la Universidad Politécnica

Introducción

conjunto. El caso más destacable es el de la modificación de todo el modela-do de datos interno de la aplicación, requerida por la gran cantidad de nuevascaracterísticas introducidas a la aplicación.

Además, durante los meses de realización del Trabajo de Fin de Grado se hanrealizado reuniones semanales con la tutora del trabajo Susana Muñoz Hernán-dez, el desarrollador de la aplicación Ángel Herranz Nieva, así como el resto dealumnos que han estado implicados en implementaciones o actualizaciones so-bre TechPeopleCare. Con estas reuniones semanales se ha conseguido tener unacomunicación grupal y dinámica.

1.4. Objetivos del TFG

El principal objetivo de TechPeopleCare Android App siempre será la de poderdar acceso al mayor número de personas que carecen de alfabetización digitalposible. Es por ello por lo que la aplicación de Android debe tener nuevas imple-mentaciones, así como mejora de sus características actuales, a pesar de estarrealizando actualmente un gran trabajo de alfabetización.

Con esta premisa de querer mejorar la aplicación, surge el requerimiento de am-pliar los formatos que se usan, eligiendo el formato de documento PDF para estaimplementación. Esto es debido a que los formatos de vídeo o de documento detexto tienen unas diferencias muy marcadas, por lo que se realizará un estudiode que cursos tienen más dificultad para los usuarios en formato de vídeo ycomprobar si estos problemas se desvanecen si la lección pasa a un formato detexto. Gracias a este estudio, se adaptarán parte de los cursos ya existentes, asícomo los venideros, según el formato que más facilite al usuario a comprenderel contenido del temario del curso.

De esta forma se conseguirá el objetivo prioritario de la aplicación con la imple-mentación de nuevos formatos para los cursos, que es el conseguir una ense-ñanza de mayor calidad.

1.5. Estructura de la memoria

En este apartado se explica cada capítulo contenido en esta memoria:

Tipos de usuario: capítulo dirigido a explicar al lector a que tipos de usuariosva dirigida TechPeopleCare Android App.

Punto de partida: apartado en el cual se da a conocer en que situación se en-cuentra el proyecto antes de empezar con el trabajo, así como el estudiorealizado para comprender la arquitectura usada en una aplicación Andro-id y, en concreto, en TechPeopleCare Android App.

Diseño: contiene aquellas modificaciones realizadas sober el modelo de datosde la aplicación y el impacto que tienen las nuevas implementaciones en laarquitectura de esta.

3

Page 12: Trabajo Fin de Gradooa.upm.es/68116/1/TFG_DAVID_RUIZ_CASADO.pdf · 2021. 7. 30. · Este Trabajo Fin de Grado se ha depositado en la ETSI Informáticos de la Universidad Politécnica

1.5. Estructura de la memoria

Implementación: en este capítulo se detallan las modificaciones realizadas so-bre el código del proyecto para la implementación de la nueva funcionalidaddel lector de documentos con formato PDF.

Análisis de impacto: búsqueda de la relación del proyecto de TechPeopleCareAndroid App con los objetivos propuestos por la Agenda 2030.

Conclusiones y trabajo futuro: apartado realizado una vez se ha terminado eldesarollo del trabajo, explicando las opiniones personales sobre este y de-sarrollando algunas ideas sobre futuras novedades sobre TechPeopleCareAndroid App.

4

Page 13: Trabajo Fin de Gradooa.upm.es/68116/1/TFG_DAVID_RUIZ_CASADO.pdf · 2021. 7. 30. · Este Trabajo Fin de Grado se ha depositado en la ETSI Informáticos de la Universidad Politécnica

Capítulo 2

Tipos de usuario

En este capítulo se describirán los dos tipos de usuarios que usan la aplicaciónde TechPeopleCare (usuario instalador y usuario no alfabetizable).

2.1. Instalador

Es el administrador del dispositivo dónde se impartirán los cursos de alfabeti-zación digital. Tendrá la labor de descargar la aplicación, introducir el códigoproporcionado por TechPeopleCare e instalar el curso especificado previamente,asegurándose de que el dispositivo tiene conexión a internet para poder descar-gar los vídeos y documentos para que el usuario no alfabetizado, una vez esténtodas las lecciones del curso descargadas, pueda hacer uso de la aplicación sinla necesidad de tener el dispositivo conectado a internet.

2.2. Usuario no alfabetizado

Las personas no alfabetizadas son aquellas que desconocen las nuevas tecnolo-gías y por lo tanto impide a estas acceder a las posibilidades que estas ofrecen.Son las personas a las que va dirigida la aplicación de TechPeopleCare.

El usuario no alfabetizado digitalmente será quien navegue a través de la listade vídeos y documentos del curso y quien reproducirá aquellos vídeos o leerálos documentos de texto según crea conveniente, con el fin de progresar en suaprendizaje en el ámbito de la alfabetización digital. Debido a los usuarios noalfabetizados, la aplicación cuenta con una interfaz muy sencilla en las pantallasque él accede, y cada nueva actualización o implementación debe seguir estafilosofía.

5

Page 14: Trabajo Fin de Gradooa.upm.es/68116/1/TFG_DAVID_RUIZ_CASADO.pdf · 2021. 7. 30. · Este Trabajo Fin de Grado se ha depositado en la ETSI Informáticos de la Universidad Politécnica
Page 15: Trabajo Fin de Gradooa.upm.es/68116/1/TFG_DAVID_RUIZ_CASADO.pdf · 2021. 7. 30. · Este Trabajo Fin de Grado se ha depositado en la ETSI Informáticos de la Universidad Politécnica

Capítulo 3

Punto de partida

Capítulo dedicado a resumir en detalle de en que situación se encontraba elproyecto de TechPeopleCare Android App antes del comienzo de este Trabajo deFin de Grado.

Se desarrollará como era el funcionamiento previo que tenía la aplicación a lasnuevas implementaciones, el modelado de datos que empleaba y la arquitecturaque tomaba de la herramienta de Android Studio junto con las filosofías elegidasa la hora de escribir código. Para la realización de estos apartados, se decidióleer detenidamente el Trabajo de Fin de Grado del alumno Álvaro Pérez Filoche[1]. Gracias a este capítulo se podrá explicar, posteriormente, que partes delproyecto necesitaron modificaciones y las razones de estas.

3.1. Funcionamiento antiguo

En este apartado se explicará cómo era el funcionamiento de la aplicación previoa las nuevas implementaciones realizadas a través de trabajos de fin de grado.

El funcionamiento interno de la aplicación se puede observar en la figura 3.1,en la que se observan todas las pantallas por las que pasaría una persona queacaba de instalar la aplicación y va a dar alguno de los cursos.

La primera pantalla mostrada es la que en la figura 3.1 se conoce como splash-Fragment. Con esta pantalla se pretendía mostrar al usuario que está iniciandola TechPeopleCare Android App. La duración de esta pantalla es de 1500ms yuna vez cumplidos estos, el usuario puede pasar a tres pantallas distintas. Siel usuario ya había instalado un curso, se navega a la pantalla courseFragment.En caso negativo se comprueba si había introducido previamente un código co-rrecto de un curso, navegando a la pantalla de courseListFragment. Si tampocohabía introducido un código, entonces pasa a la pantalla codeFragment parapoder introducirlo.

Esta última pantalla mencionada (codeFragment) es en la que el instaladordebe introducir un código correcto de un curso, proporcionado previamente porTechPeopleCare. Si el usuario introduce de forma correcta el código, y el código

7

Page 16: Trabajo Fin de Gradooa.upm.es/68116/1/TFG_DAVID_RUIZ_CASADO.pdf · 2021. 7. 30. · Este Trabajo Fin de Grado se ha depositado en la ETSI Informáticos de la Universidad Politécnica

3.1. Funcionamiento antiguo

Figura 3.1: Navegación interna antigua de TechPeopleCare App

contiene dos o más cursos, este pasará a la pantalla courseListFragment. Sipor el contrario, cuenta solamente con un curso, se avanza a la pantalla decourseFragment.

Si finalmente accede a la pantalla de courseListFragment, podrá elegir entreuna lista de cursos para instalar. Una vez decidido cual es el curso adecuado,pasará a la pantalla courseFragment. El idioma de la aplicación pasa a ser elmismo que el idioma del curso y comienza la descarga de los vídeos.

Una vez ya en la pantalla de un curso en concreto (courseFragment), cada vezque el usuario instalador abra la aplicación, este avanzará automaticamente aesta pantalla sin pasar por splashFragment. Esto se realiza de esta manera paraque el analfabeto digital pueda usar la aplicación y elegir el vídeo que quiera porsu cuenta y sin complicaciones. Cabe recordar que al ser una aplicación dirigidaa personas sin experiencia con dispositivos informáticos, esta debe ser lo másseniclla e intuitiva posible.

Una vez descargados los vídeos del curso en cuestión, el usuario podrá accedera ellos pulsando el botón Ver y pasaría a la pantalla conocida como playerFrag-ment.

En esta última pantalla es donde se reproducen los vídeos elegidos por el usua-rio. En esta pantalla se introdujeron 3 botones de forma que el analfabeto digitalno tenga problema en reconocerlos y usarlos como es debido. Estos son los bo-tones:

8

Page 17: Trabajo Fin de Gradooa.upm.es/68116/1/TFG_DAVID_RUIZ_CASADO.pdf · 2021. 7. 30. · Este Trabajo Fin de Grado se ha depositado en la ETSI Informáticos de la Universidad Politécnica

Punto de partida

Botón izquierdo (Vídeos): Retrocede a la lista de vídeos.

Botón central:

• Pausar: Se muestra durante la reproducción del vídeo. Pausa el vídeo.

• Continuar: Se muestra mientras el vídeo está pausado. Reanuda lareproducción.

Botón derecho:

• Rebobinar: Se muestra durante la reproducción del vídeo. Retrocedediez segundos en el vídeo.

• Siguiente: Se muestra una vez el vídeo ha finalizado, siempre y cuandono sea el último vídeo del curso. Reproduce el siguiente vídeo en elcurso.

• Salir: Se muestra una vez se ha terminado de reproducir el últimovídeo del curso. Cierra la aplicación.

La modificación en el funcionamiento de la aplicación no ha supuesto un cambioprofundo en una gran parte de ella, nos sirve para explicar en qué zonas se hanquerido añadir estas implementaciones y de esta forma dar una visión general dela situación en la que nos encontrábamos al comenzar. Todas las modificacionesque se han realizado a la navegación interna de la aplicación aparecen en elapartado Ánalisis de código (5.2).

3.2. Modelado de datos previo

El modelo de datos que tenía TechPeopleCare Android App antes de comenzarcon esta nueva racha de implementaciones era realmente sencilla. La aplicacióncontenía únicamente de una lista de cursos llamados courseList. Dentro de estalista se podían encontrar de 1 a n cursos (course), los cuales de entre distintosatributos que tienen, habría que destacar la lista que de vídeos que tienen (vi-deoList). Dentro de esta lista se encontraban todos los vídeos pertenecientes alcurso en cuestión. Estos vídeos también contaban con distintos atributos comose puede observar en la figura 3.2.

Debido al gran número de actualizaciones que sufre la aplicación, este modeladode datos queda obsoleto. El nuevo modelo de datos se detallará y explicará en elapartado 4.2.

3.3. Arquitectura de una aplicación Android

La aplicación TechPeopleCare Android App como su nombre indica está imple-mentada para la plataforma Android. En gran medida su arquitectura vieneimpuesta por dicha plataforma. Los detalles sobre cómo realizar la arquitectu-ra una aplicación Android están fuera del ámbito de este trabajo. Sin embargoofreceremos algunos principios comunes a cualquier desarrollo en Android.

9

Page 18: Trabajo Fin de Gradooa.upm.es/68116/1/TFG_DAVID_RUIZ_CASADO.pdf · 2021. 7. 30. · Este Trabajo Fin de Grado se ha depositado en la ETSI Informáticos de la Universidad Politécnica

3.3. Arquitectura de una aplicación Android

Figura 3.2: Modelado de datos antiguo de TechPeopleCare App

La elección de Android Studio como plataforma de desarrollo es algo muy evi-dente. Android representa el entorno con mayor número de potenciales usuariosy cuota de mercado. El hecho de ser un sistema operativo de código abierto ytener una interfaz tremendamente intuitiva y simple aumenta las razones pa-ra elegir Android como plataforma. Además, este sistema operativo más usado,por diferencia, en los dispositivos móviles de gama baja y media, siendo, por lotanto, el sistema operativo más accesible. Este último dato es de vital impor-tancia, pues esta aplicación es utilizada en lugares e instituciones cuyo poderadquisitivo es reducido.

Debe tenerse en cuenta que la aplicación se desarrolló en 2019 y que, por lo tan-to, es posible que parte de la arquitectura empleada pueda considerarse ahoraalgo obsoleta en el uso de los últimos recursos de Android. Aun así, como se ve-rá, la arquitectura de TechPeopleCare Android App es una arquitectura cuidaday actualmente vigente.

3.3.1. Actividades, fragmentos y vistas

Las aplicaciones Android se estructuran alrededor de tres elementos ofrecidospor el SDK (Software Development Kit) de Android:

Actividades (Activity): Las actividades son un componente crucial de las aplica-ciones para Android. A veces se define como una “pantalla” pero su alcancees mucho mayor. De algún modo son el main() de la aplicación. Cuandouna aplicación se pone en marcha, lo hace a través de una Activity.

10

Page 19: Trabajo Fin de Gradooa.upm.es/68116/1/TFG_DAVID_RUIZ_CASADO.pdf · 2021. 7. 30. · Este Trabajo Fin de Grado se ha depositado en la ETSI Informáticos de la Universidad Politécnica

Punto de partida

Fragmentos (Fragment): En muchas ocasiones cada pantalla de una aplicaciónestá sostenida por una Activity. Sin embargo, dado el carácter de las acti-vidades, este tipo de aplicaciones sobrecargan enormemente el dispositivoya que lanzar una nueva actividad no es “barato” desde el punto de vistade consumo de recursos. Los fragmentos permiten definir una pantalla oincluso partes reusables de una pantalla y permiten realizar navegacionesmás ágiles entre pantallas. La puesta en marcha de un Fragment es menoscostosa que la puesta en marcha de una Activity. La aplicación TechPeo-pleCare Android App usa fragmentos.

Vistas (View): Finalmente, el último componente relevante que vamos a mencio-nar son las vistas de Android. Las vistas son componentes que nos permiti-rán definir el UI (user interface) de la aplicación. Son componentes de muybajo nivel, por lo que una buena arquitectura exige que se mantengan bajocontrol, en general encapsuladas y aisladas en clases capaces de hablar unlenguaje más cercano a la lógica de la aplicación.

3.3.2. Ciclo de vida de un fragmento

Como ya se ha mencionado, la aplicación TechPeopleCare Android App está cons-truida sobre una única actividad que gestiona la navegación por cada pantalla.Cada pantalla, además, será controlada por un fragmento. Para entender la ar-quitectura de la aplicación es importante entender el ciclo de vida de los frag-mentos.

En la figura 3.3 se pueden observar las relaciones que tienen entre ellas lasfunciones internas de una actividad en un entorno Android.

Solo puede haber una actividad en primer plano a la vez, y la forma en la que seadministra esto es mediante el ciclo de vida, formado por las siguientes etapas:

1. onAttach: el fragmento se agrega a su actividad (cada fragmento vive enuna actividad).

2. onCreate: el fragmento se crea. Aunque como objeto obviamente se hacreado antes, es en este momento en el que se pueden inicializar sus com-ponentes esenciales, no antes.

3. onCreateView: cada fragmento se enlaza con un componente View, este esel método en el que debe hacerse y en el que deben establecerse las vias decomunicación entre ambos.

4. onActivityCreated: callback que se ejecuta cuando se ejecuta el métodoonCreate de la actividad (nada relevante para nosotros).

5. onStart: se ejecuta cuando el fragmento es mostrado al usuario.

6. onResume: se ejecuta cuando el fragmento se ha mostrado al usuario yestá ejecutando de forma activa.

11

Page 20: Trabajo Fin de Gradooa.upm.es/68116/1/TFG_DAVID_RUIZ_CASADO.pdf · 2021. 7. 30. · Este Trabajo Fin de Grado se ha depositado en la ETSI Informáticos de la Universidad Politécnica

3.3. Arquitectura de una aplicación Android

Figura 3.3: Ciclo de vida de los fragmentos Android

12

Page 21: Trabajo Fin de Gradooa.upm.es/68116/1/TFG_DAVID_RUIZ_CASADO.pdf · 2021. 7. 30. · Este Trabajo Fin de Grado se ha depositado en la ETSI Informáticos de la Universidad Politécnica

Punto de partida

3.4. Arquitectura de TechPeopleCare Android App

La aplicación TechPeopleCare Android App se ha construido siguiendo un patrónarquitectónico marcado por el ingeniero de software Robert Cecil Martin (tam-bién conocido como Uncle Bob). En su libro [2], Martin presenta un esquemaarquitectónico llamado Clean Architecture. La aplicación TechPeopleCare Andro-id App sigue dicho esquema.

3.4.1. Clean Architecture

Clean Architecture propone el seguimiento de algunos principios que permitenaislar brutalmente los detalles externos a la aplicación (persistencia, acceso aservidores, interfaz de usuario, etc.) de su lógica intrínseca.

Su característica más definitoria es lo que suele llamarse la regla de inversiónde dependencia. En las estructuraciones clásicas, los módulos encargados dela lógica de negocio (módulos superiores) necesitan saber detalles externos a laaplicación (módulos inferiores). De una u otra forma acaban dependiendo de unmódulo que a su vez depende de un módulo que acaba haciendo una llamada ala base de datos de turno.

En Clean Architecture, son las capas externas, el módulo encargado de la per-sistencia, por ejemplo, el que depende de la lógica de negocio. Es la capa de lalógica de negocio quien define el interfaz que debe cumplir la capa de persisten-cia y por lo tanto es la capa de persistencia la depende de la capa de negocio. Lafigura 3.4 trata de mostrar esta inversión de dependencia.

Como se puede ver en la figura 3.4, Clean Architecture propone la existencia dediferentes capas. La capa más externa representa los detalles de implementa-ción mientras que las capas interiores representan modelo de datos y lógica denegocio (llamada casos de uso en Clean Architecture). Hablemos en detalle decada una de estas capas:

Entidades: representan el modelo de datos puro, sin influencia del modelo depersistencia. Suelen ser objetos bastante planos y con poca lógica, poten-cialmente usables en otras aplicaciones.

Casos de uso: representan la lógica de la aplicación.

Adaptadores: capa encargada de transformar la información de los casos deuso y entidades en información entendible por las capas externas (per-sistencia, red, UI, etc.). En este punto es habitual utilizar patrones tipoModel-View-Controller (como pueden ser model-view-presenter, model-view-view-model, y otros) donde los controladores son los encargados de hacerlas adaptaciones.

Interfaces externos: son los frameworks y bibliotecas que comunican la apli-cación con el mundo exterior (UI, persistencia, red, Android SDK, etc.).

13

Page 22: Trabajo Fin de Gradooa.upm.es/68116/1/TFG_DAVID_RUIZ_CASADO.pdf · 2021. 7. 30. · Este Trabajo Fin de Grado se ha depositado en la ETSI Informáticos de la Universidad Politécnica

3.5. Fragmentos y UI

Figura 3.4: Diagrama representativo de Clean Architecture

3.5. Fragmentos y UI

Aunque Clean Architecture nos ofrece un marco para elaborar la arquitecturade la aplicación, a veces no es sencillo entrar en ciertos detalles. En concre-to, dentro de Android, hay desarrolladores que entienden los fragmentos comocomponentes que proporcionan una pantalla. Esto empuja a entender los frag-mentos en términos de UI.

Esta visión de los fragmentos es equivocada y quizás la mejor explicación sea laque ofrece el desarrollador Vasiliy Zukanov en su blog https://www.techyourchance.com.

In order to adhere to our “narrowed” Single Responsibility Principle,Activities in our applications should contain either UI logic only, or busi-ness logic only. Which approach is better?

Turns out that Android platform team has already decided for us. Thebelow list of Activity’s dependencies is sufficient in order to make sepa-ration of business logic from Activity practically impossible:

Activity extends Context

The exhaustive list of all the features that make Activity and app’s busi-ness logic inseparable is much longer (e.g. request runtime permission,integration with LoaderManager, etc.), but this one is sufficient by itself.It might be surprising that such a basic fact that all of us got accustomed

14

Page 23: Trabajo Fin de Gradooa.upm.es/68116/1/TFG_DAVID_RUIZ_CASADO.pdf · 2021. 7. 30. · Este Trabajo Fin de Grado se ha depositado en la ETSI Informáticos de la Universidad Politécnica

Punto de partida

to is of such importance, but it is really that simple.

Functionally, Context objects provide access to most platform’s featuresthat third party applications can use. This is a generalization, but wedon’t need a more detailed description for the discussion in this post.

Since Activity is Context’s subclass, our applications use its API in orderto take control over a subset of features and resources of the platform.And the logic that “orchestrates” these features and resources is ourbusiness logic. Therefore, no matter how hard we try, we will not beable to completely separate business logic from Activities.

Since we can’t separate business logic from Activities, we shall separateall UI logic from it. This is not a trivial task, but it is very well worth theeffort in a long run.

3.6. Estructura del código

Teniendo en cuenta todo lo anterior, el resultado de la arquitectura es el siguien-te:

3.6.1. Model-View-Presenter

El Model-View-Presenter, abreviado como MVP a partir de ahora, son una seriede patrones arquitectónicos, derivados del patrón Modelo-Vista-Controlador quese usan principalmente para construir interfaces de usuario. Estos patronespermiten profundizar en la filosofía Clean Architecture. El MVP está compuestopor los siguientes elementos:

Modelo: Guarda el estado del sistema.

Vista: Se encarga del input-output hacia y desde el usuario.

Presentador Encapsula la lógica funcional del sistema.

Figura 3.5: Interacción entre los componentes del Model-View-Presenter

Como se puede observar en la figura 3.5, la vista no sabe nada sobre el modeloy es el presentador el encargado de obtener datos actualizados sobre el modelopara así interpretar si la vista ha de ser o no actualizada.

15

Page 24: Trabajo Fin de Gradooa.upm.es/68116/1/TFG_DAVID_RUIZ_CASADO.pdf · 2021. 7. 30. · Este Trabajo Fin de Grado se ha depositado en la ETSI Informáticos de la Universidad Politécnica

3.6. Estructura del código

Usando la clase abstracta mvp.MvpView se pueden desconectar las vistas deAndroid del resto del patrón MVP aplicado.

Por cada pantalla hay un Fragment y una View. El fragmento está al cargo derealizar llamadas a la lógica de la aplicación y respetar sus exigencias para,posteriormente, actualizar la vista cuando sea necesario. Las acciones de unusuario sobre la pantalla son abstraídas a través de Listeners que informarán alfragmento sobre las acciones persistentes.

3.6.2. Paquetes

En esta sección se va a analizar brevemente la estructura general de los paque-tes del proyecto. Se va a explicar usando la estructura que tiene el entorno dedesarrollo empleado, Android Studio, para la aplicación de TechPeopleCare.

La forma predeterminada de Android Studio de mostrar los archivos no repre-senta la jerarquía real de los archivos en tu disco, sino que se organiza en mó-dulos y tipos de archivos para que la navegación entre los principales archivosfuente del proyecto en cuestión sea más sencilla. Debido a esto, se ocultan deter-minados archivos que la plataforma considera que no se usan frecuentemente.

TechPeopleCareApp: Inicializa la caché y la base de datos.

MainActivity: Contiene la base de la actividad de Android.

VideoDownloadService: Extiende el servicio de descarga de medios ofre-cido por Exoplayer.

Además de este paquete principal, nos encontramos con otros seis paquetes conuna función concreta para el funcionamiento de la aplicación (api, dal, domain,injection, logic y mvp).

El paquete de api, que se explica a continuación.

En el paquete dal, cuyas siglas responden a Capa de acceso a datos, se encuen-tran la base de datos de ObjectBox como el gestor de descargas de medios enla caché de Exoplayer. Además, existe otro Mapper cuya utilidad es transformarobjetos de dominio a objetos de entidad, siendo estos últimos los que se guardanen la base de datos.

Dentro del paquete domain es donde se define la estructura de los objetos dedominio, es decir, los cursos y vídeos. En este paquete se encuentran también losconceptos clave del proyecto, las interfaces para la inversión de dependencias.Estas interfaces (Repository para la base de datos y VideoCache para el gestorde descargas en caché) están relacionados con las dependencias externas a lalógica de negocio (dominio) y permiten abstraer el núcleo de la aplicación de otrosdetalles de la implementación. Esto es esencial a la hora de que sea un proyectofácil de testar y de mantener, requisito especificado en el patrón arquitectónicode CleanCode.

El paquete injection es el que contiene los métodos y anotaciones necesariaspara la implementación de dependencias.

16

Page 25: Trabajo Fin de Gradooa.upm.es/68116/1/TFG_DAVID_RUIZ_CASADO.pdf · 2021. 7. 30. · Este Trabajo Fin de Grado se ha depositado en la ETSI Informáticos de la Universidad Politécnica

Punto de partida

En el paquete logic de realizan los trabajos de ejecución de hilos para la efec-tuar las tareas de manera asíncrona. Dichas tareas son la obtención de cursosa través de GetCoursesLogic y cambios referidos a la orientación de los textoso a ajustes del idioma de la interfaz de la aplicación.

Finalmente, el paquete mvp donde se encuentran todos los fragmentos y vistas dela aplicación. Este es uno de los paquetes donde sabemos desde un principio quesufrirá añadidos respecto a la implementación del visualizador de documentosde texto.

3.6.3. API

El API de la aplicación consiste en: URL con listas de cursos (documentos JSON)y vídeos en URLs indicadas en el documento JSON. El documento JSON describeuna lista de cursos de esta forma:

{ "courses": [C1, C2, ..., Cn]}

Cada curso Ci sigue el siguiente formato:

{"title": "Alfabetización digital en Español","videos": [V1, V2, ..., Vm]

}

y cada vídeo Vj sigue este otro formato:

{"title": "El ratón","topic": "Uso del ratón","released": "2019-06-30T00:00:00.000Z","url": "http://tedeco.fi.upm.es/videos/03/03_01_el_raton.mp4","version": 3

}

17

Page 26: Trabajo Fin de Gradooa.upm.es/68116/1/TFG_DAVID_RUIZ_CASADO.pdf · 2021. 7. 30. · Este Trabajo Fin de Grado se ha depositado en la ETSI Informáticos de la Universidad Politécnica
Page 27: Trabajo Fin de Gradooa.upm.es/68116/1/TFG_DAVID_RUIZ_CASADO.pdf · 2021. 7. 30. · Este Trabajo Fin de Grado se ha depositado en la ETSI Informáticos de la Universidad Politécnica

Capítulo 4

Diseño

Este capítulo se dedicará a explicar todas las nuevas funcionalidades introdu-cidas a la aplicación de TechPeopleCare Android App por parte de este trabajo,así como todas las modificaciones que se han realizado sobre el proyecto. Estoscambios se especificarán recalcando las novedades sobre el punto de partida enel que se encontraba el proyecto, explicado en el capítulo Punto de partida (3).

4.1. Descripción de nuevas funcionalidades

Como ya se ha comentado anteriormente, el principal objetivo de Ampliaciónde formatos de documentos en una aplicación Android de cursos para personasajenas al uso de tecnología consiste en añadir a TechPeopleCare Android App lafuncionalidad de poder tener un lector de documentos PDF dentro de los cursosque ofrece la aplicación para los usuarios no alfabetizados como se puede ver enla figura 4.1.

Hasta el momento, la aplicación tenía cursos con una lista de vídeos en los queel propio usuario iría seleccionando para ver. Con esta nueva característica loscursos tendrían tanto vídeos como documentos de texto para elegir. En casode seleccionar un documento de texto, el usuario avanzará hasta una nuevapantalla en la que podrá leer detenidamente el documento en cuestión. Y esque, a diferencia de los vídeos, los documentos PDF tienen como ventaja que elusuario avanzará a su propio ritmo y podrá leer cada apartado del texto tantasveces desee sin tener que realizar ninguna acción sobre la aplicación, algo muya destacar dado los usuarios a los que va dirigida esta aplicación.

19

Page 28: Trabajo Fin de Gradooa.upm.es/68116/1/TFG_DAVID_RUIZ_CASADO.pdf · 2021. 7. 30. · Este Trabajo Fin de Grado se ha depositado en la ETSI Informáticos de la Universidad Politécnica

4.2. Nuevo modelo de datos

Figura 4.1: Visualizador de documentos de texto con formato PDF

La explicación de como se ha implementado dicha funcionalidad se realizará enel apartado de Implementación (5).

4.2. Nuevo modelo de datos

Como se ha explicado ya en el apartado 3.2, el modelo de datos de TechPeopleCa-re Android App era realmente sencillo. Consistía en cursos que se relacionabancon los vídeos que incluían.

Las modificaciones generadas por este trabajo de ampliación de formatos dedocumentos en una aplicación Android de cursos para personas ajenas al usode tecnología habría generado ya una necesidad de actualización de el modelode datos frontend de la aplicación, ya que los cursos ahora no solo se relacionancon vídeos si no con documentos de texto con formato PDF.

Además, esta no es la única modificación realizada sobre la aplicación de Tech-PeopleCare, y es que otros alumnos han realizado su trabajo de fin de gradotrabajando en la aplicación para dotarla de nuevas funcionalidades. Debido ala cantidad de actualizaciones y modificaciones que iba a sufrir la aplicación,

20

Page 29: Trabajo Fin de Gradooa.upm.es/68116/1/TFG_DAVID_RUIZ_CASADO.pdf · 2021. 7. 30. · Este Trabajo Fin de Grado se ha depositado en la ETSI Informáticos de la Universidad Politécnica

Diseño

se decidió realizar un nuevo modelo de datos de forma conjunta entre todos losalumnos (Figura 4.2).

Los cursos pasan a ser llamados Training, los cuales, en vez de contener vídeos,estarán compuestos por TrainingUnits. Estos nuevos TrainingUnits pueden serde dos tipos distintos:

Learning Unit: consisten en la parte de los TrainingUnits en los que elusuario no alfabetizado obtendrá nuevos conocimientos sobre un tema enconcreto. Estos LearningUnits a su vez pueden ser de dos tipos distintos.

• Vídeos (ya implementados anteriormente en la aplicación).

• Documentos de texto con formato PDF (implementación realizada den-tro de este trabajo).

Question: nueva implementación con la que el usuario tendrá que respon-der a algunas preguntas sobre el TrainingUnit. Estas question pueden sera su vez de dos tipos.

• SatisfactionQuestion en la que se pregunta al usuario no alfabetizadosobre su opinión sobre cómo está realizado dicho curso.

• TestQuestion en las que se realizan preguntas de carácter tecnológicoal usuario. Por ejemplo, se pregunta al usuario si ha utilizado anterior-mente un ratón o un teclado de ordenador y, de esta manera, conocersu nivel.

Estas no son las únicas modificaciones que se realizaron sobre el modelo dedatos. También se incluyeron los llamados Event. Estos eventos se han creadopara estudiar, por parte de los desarrolladores, como los usuarios no alfabeti-zados interaccionan con los vídeos, observando, por ejemplo, si en algún vídeoen concreto repiten mucho algunas partes, dando a entender que el vídeo no essuficiente explicativo. Dichos eventos se relacionan con los TrainingUnits.

21

Page 30: Trabajo Fin de Gradooa.upm.es/68116/1/TFG_DAVID_RUIZ_CASADO.pdf · 2021. 7. 30. · Este Trabajo Fin de Grado se ha depositado en la ETSI Informáticos de la Universidad Politécnica

4.3. Impacto en la arquitectura

Figura 4.2: Nuevo modelado de datos TechPeopleCare App

4.3. Impacto en la arquitectura

Durante la realización de ampliación de formatos de documentos en una aplica-ción Android de cursos para personas ajenas al uso de tecnología se han hechotanto modificaciones como añadidos sobre la arquitectura explicada en el apar-tado 3.4.

El primer paquete dentro del proyecto es el de api. Como ya se ha explicadodentro de este paquete una de las cosas que nos encontramos son los JSON delos objetos del dominio, así como el Mapper que se encarga de parsearlos. Espor ello por lo que, debido a la modificación del modelo de datos, este paqueteha necesitado de grandes cambios. Todos los JSON de los objetos como curso ovídeos tuvieron que modificarse y adaptarse al nuevo modelaje, dando lugar alos nuevos JSON de Training o TrainingUnit. Además, tanto el archivo Mappercomo la API de TechPeopleCare tuvieron que ser adaptadas a estos cambios.

22

Page 31: Trabajo Fin de Gradooa.upm.es/68116/1/TFG_DAVID_RUIZ_CASADO.pdf · 2021. 7. 30. · Este Trabajo Fin de Grado se ha depositado en la ETSI Informáticos de la Universidad Politécnica

Diseño

En el código siguiente se puede observar el nuevo JSON del objeto TrainingUnit.

1 public class JsonTrainingUnit {2 /**3 * ID of the Training Unit4 */5 public Long id;6 /**7 * Uri of the Training Unit.8 */9 public String url;

10 /**11 * Title of the Training Unit.12 */13 public String title;14 /**15 * Version of the Training Unit.16 */17 public Integer version;18 /**19 * Topic of the Training Unit.20 */21 public String topic;22 /**23 * Number representing the Training Unit’s position in the course’s list.24 */25 public Integer order;26 }

En el paquete dal también se han tenido que hacer bastantes modificacionesadaptando los objetos a los existentes en el nuevo modelo de datos de la apli-cación. Se eliminaron todas las entidades que ya no eran necesarias, así comose crearon las que sí lo eran. En este paquete se encuentra otro Mapper quetambién tuvo que ser actualizado para que siguiera funcionando el flujo de in-formación con la base de datos.

A continuación, se muestra una de las clases nuevas dentro de este paquete.

1 public class PdfEntity extends LearningUnitEntity{2 /**3 * Defines a one-to-many relation with the training.4 */5 ToOne<TrainingEntity> training;6

7 /**8 * Defines that a many-to-many relation.9 */

10 ToMany<CourseEntity> courses;11 }

En el paquete domain es donde se definía la estructura de los objetos de dominio(cursos y vídeos). Es por ello por lo que esto se tuvo que actualizar ya que ahoralos objetos de dominio pasan a ser los Training, así como los TrainingUnit.

El último de estos paquetes donde se ha realizado alguna modificación es sobreel paquete mvp, contenedor de todos los fragmentos y vistas de la aplicación.Dentro de este paquete se tuvo que introducir el fragmento y la vista pertene-ciente a la pantalla de visualización de documentos de texto. Se dispondrá deejemplos en el apartado 5.2.

23

Page 32: Trabajo Fin de Gradooa.upm.es/68116/1/TFG_DAVID_RUIZ_CASADO.pdf · 2021. 7. 30. · Este Trabajo Fin de Grado se ha depositado en la ETSI Informáticos de la Universidad Politécnica
Page 33: Trabajo Fin de Gradooa.upm.es/68116/1/TFG_DAVID_RUIZ_CASADO.pdf · 2021. 7. 30. · Este Trabajo Fin de Grado se ha depositado en la ETSI Informáticos de la Universidad Politécnica

Capítulo 5

Implementación

En este capítulo se expone la biblioteca AndroidPdfViewer usada durante la im-plementación así como las herramientas empleadas en el desarrollo.

5.1. AndroidPdfViewer

AndroidPdfViewer es una librería que sirve para mostrar documentos de textocon formato PDF, con soporte para animaciones, gestos, así como funciones dezoom. Se basa en PdfiumAndroid para decodificar los archivos de PDF. Funcionasobre la API 11 (Android 3.0) y superior.

Esta biblioteca (https://github.com/barteksc/AndroidPdfViewerV1), pue-de mostrar documentos PDF de formas distintas. La manera de cargar el docu-mento en la que nos centraremos para la implementación es en la que permiteobtener la vista del documento de texto a través de la URL de este.

La biblioteca AndroidPdfViewer nos permite personalizar algunas de las opcionesde visualización del documento PDF. Esto es crucial en TechPeopleCare AndroidApp ya que, al ser una aplicación dirigida a usuarios no habituados al uso detecnologías, necesitamos poder editar la visualización de documentos de la ma-nera que sea más sencilla para ellos. La biblioteca nos permite mostrar partedel documento, especificando previamente cuales son las páginas que mostrar,modificar el desplazamiento entre páginas de documento para que se realice deforma vertical u horizontal así como permitir o no que con un doble toque sobrela pantalla se haga zoom en el documento.

La implementación del código necesario para Ampliación de formatos de docu-mentos en una aplicación Android de cursos para personas ajenas al uso de tec-nología ha sido realizado en torno a AndroidPdfViewer.

5.2. Análisis de código

En este apartado se desarrollarán las implementaciones necesarias directamen-te para el visualizador de documentos con formato PDF. Se incluirá parte del

25

Page 34: Trabajo Fin de Gradooa.upm.es/68116/1/TFG_DAVID_RUIZ_CASADO.pdf · 2021. 7. 30. · Este Trabajo Fin de Grado se ha depositado en la ETSI Informáticos de la Universidad Politécnica

5.2. Análisis de código

código empleado que ayude a la explicación del capítulo.

Como ya se ha comentado, el entorno de desarrollo usado durante todo el trabajoha sido Android Studio, la herramienta oficial de desarrollo para aplicacionesAndroid que está basado en IntelliJ IDEA de JetBrains.

A la navegación interna de la aplicación, explicada en la figura 3.1, se le tuvo queañadir el nuevo pdfFragment, pantalla en la que se el usuario podrá visualizarlos documentos de texto de un Training como se puede observar en figura 5.1con la navegación de la aplicación ya actualizada.

Figura 5.1: Nueva navegación implementada con Navigation Component

Dentro de este pdfFragment, tal y como nos indica la biblioteca de AndroidPdf-Viewer se tuvo que introducir el PDFView que introduce en la pantalla referidael visualizador de documentos de texto.

1 <?xml version="1.0" encoding="utf-8"?>2 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"3 xmlns:tools="http://schemas.android.com/tools"4 android:layout_width="match_parent"5 android:layout_height="match_parent"6 tools:context=".mvp.PdfFragment">7

8 <!-- PDF View -->9 <com.github.barteksc.pdfviewer.PDFView

10 android:id="@+id/pdfView"11 android:layout_width="match_parent"12 android:layout_height="match_parent"/>

26

Page 35: Trabajo Fin de Gradooa.upm.es/68116/1/TFG_DAVID_RUIZ_CASADO.pdf · 2021. 7. 30. · Este Trabajo Fin de Grado se ha depositado en la ETSI Informáticos de la Universidad Politécnica

Implementación

13

14 </FrameLayout>

Como se puede observar, el diseño de esta pantalla está directamente relacio-nado con el nuevo fragmento del paquete mvp PdfFragment, así como con suvista PdfView. En esta última se realiza la implementación de los botones queva a tener la pantalla de visualización de los documentos PDF. Finalmente, estaconstará de dos botones:

Botón izquierdo (Curso): Retrocede a la lista de Training Units que contie-ne el curso que se está realizando. Esté botón siempre se encontrará enpantalla.

Botón derecho:

• Siguiente: Pasa al siguiente Training Units que tiene el curso. Estebotón solo aparece cuando el usuario se encuentra en la última páginadel documento de texto.

• Salir: Se muestra cuando el usuario se encuentra en el último TrainingUnits del curso en cuestión. Al igual que el anterior botón, solo aparececuando el usuario se encuentra en la última página del documentoPDF. Cierra la aplicación.

1 mButtonBack.setOnClickListener((v) -> listener.onBack());2

3 mButtonExit.setOnClickListener((v) -> listener.onExit());4

5 mButtonNext.setOnClickListener((v) -> listener.onNext());

La obtención del documento PDF en cuestión, que como ya se ha comentadoanteriormente es a través de su URL, se realizará en el PdfFragment medianteun AsyncTask.

También se hace uso de la clase InputStream. La clase Java InputStream re-presenta un flujo ordenado de bytes. En otras palabras, puede leer datos de unJava InputStream como una secuencia ordenada de bytes. Esto es útil cuandose leen datos de un archivo, o se reciben a través de la red.

Cuando se ejecuta esta función, la URL que se ha obtenido previamente acce-diendo al JSON del curso en el cual se encuentra el usuario, ya que uno delos atributos de los LearningUnits es su dirección URL, se intenta hacer unaconexión con ella mediante HttpURLConnection. En caso de que la conexión seacorrecta, es decir, la respuesta sea de 200 (OK), el InputStream realizará un getde esta conexión y la devolverá.

1 class RetrivePDFfromUrl extends AsyncTask<String, Void, InputStream> {2 @Override3 protected InputStream doInBackground(String... strings) {4 // We are using inputstream5 // for getting out PDF.6 InputStream inputStream = null;7 try {8 URL url = new URL(strings[0]);

27

Page 36: Trabajo Fin de Gradooa.upm.es/68116/1/TFG_DAVID_RUIZ_CASADO.pdf · 2021. 7. 30. · Este Trabajo Fin de Grado se ha depositado en la ETSI Informáticos de la Universidad Politécnica

5.2. Análisis de código

9 // below is the step where we are10 // creating our connection.11 HttpURLConnection urlConnection = (HttpsURLConnection) url.

openConnection();12 if (urlConnection.getResponseCode() == 200) {13 // response is success.14 // we are getting input stream from url15 // and storing it in our variable.16 inputStream = new BufferedInputStream(urlConnection.getInputStream()

);17 }18

19 } catch (IOException e) {20 // this is the method21 // to handle errors.22 e.printStackTrace();23 return null;24 }25 return inputStream;26 }

Una vez tenemos el InputStream, se puede realizar la carga del documento PDFsobre la aplicación. Como se comentaba en el apartado anterior 5.1, la libre-ría AndroidPdfViewer permite realizar esta carga de múltiples maneras. En estecaso, ya que obtenemos el documento a través de la red se usa la función pdf-View.fromStream(InputStream).

1 pdfView.fromStream(inputStream)2 .enableDoubletap(false)3 .load();

Como se puede observar en el código, se decidió modificar la experiencia deusuario, impidiendo que se realice zoom sobre la pantalla en caso de que elusuario no alfabetizado toque dos veces esta, ya que es algo que no se esperany podría confundirles e impedirles leer el documento.

Una vez conseguida la pantalla en la que el usuario podrá leer los documentos detexto, hubo que estudiar y modificar el código de la aplicación, para que, desdelos cursos, se pueda acceder a ella. Se investigó la manera en la que ocurre estoactualmente con los vídeos y de esta manera, se adaptó el código para que elusuario sea llevado a la pantalla pdfFragment cuando el LearningUnit a seguires un documento con formato PDF o a playerFragment en caso de ser un vídeo.

Dichas modificaciones se realizaron sobre la vista y el fragmento de los cursos,en el paquete mvp ya que como se muestra en la figura 5.1, la única manera enla que el usuario podrá acceder a la pantalla de visualización del documento detexto es a través de la vista de alguno de los cursos.

28

Page 37: Trabajo Fin de Gradooa.upm.es/68116/1/TFG_DAVID_RUIZ_CASADO.pdf · 2021. 7. 30. · Este Trabajo Fin de Grado se ha depositado en la ETSI Informáticos de la Universidad Politécnica

Capítulo 6

Análisis de impacto

El 25 de septiembre de 2015, los líderes mundiales adoptaron un conjunto deobjetivos globales para erradicar la pobreza, proteger el planeta y asegurar laprosperidad para todos como parte de una nueva agenda de desarrollo soste-nible llamada Agenda 2030. Cada objetivo tiene metas específicas que debenalcanzarse en los próximos 15 años.

De los 17 objetivos propuestos, se han destacado 4 en los que la aplicación deTechPeopleCare, así como la empresa TEDECO, están influyendo sobre estosfines.

Objetivo 4: Educación de calidad.

El objetivo quiere garantizar una educación inclusiva, equitativa y de calidad yde promover oportunidades de aprendizaje durante toda la vida para todos. Laeducación permite la movilidad socioeconómica ascendente y es clave para salirde la pobreza.

La aplicación de TechPeopleCare tiene mucha implicación sobre este objetivo yaque una de sus metas es llegar a países con menos oportunidades y, a través desus cursos, conseguir que estas personas obtengan un aprendizaje digno y decalidad. Gracias a la aplicación se podría abaratar todo el proceso, ya que estoscursos no requieren de profesores de manera presencial y tan solo necesita elmaterial tecnológico con los cursos ya incluidos.

Objetivo 8: Trabajo decente y crecimiento económico.

Este objetivo promueve el crecimiento económico inclusivo y sostenible, así co-mo empleo y trabajo decente para todos. Un crecimiento económico inclusivoy sostenido puede impulsar el progreso, crear empleos decentes para todos ymejorar los estándares de vida.

Gracias a los cursos de TechPeopleCare Android App, se pueden dar cursos encualquier parte del mundo sin necesidad de que profesores se tengan que des-plazar a esos lugares. Además, no requiere que esa zona tenga Internet ya quese puede enviar el material tecnológico necesario con los cursos ya descarga-dos. Esto da la posibilidad de aprender nuevos conocimientos y, por lo tanto,

29

Page 38: Trabajo Fin de Gradooa.upm.es/68116/1/TFG_DAVID_RUIZ_CASADO.pdf · 2021. 7. 30. · Este Trabajo Fin de Grado se ha depositado en la ETSI Informáticos de la Universidad Politécnica

dando oportunidades para tener un trabajo decente. Esto, a su vez, ayudaría alcrecimiento económico de esos lugares.

Objetivo 9: Industria, innovación e infraestructura.

En este objetivo se quiere construir infraestructuras resilientes, promover la in-dustrialización sostenible y fomentar la innovación. Esto desempeñan un papelclave a la hora de introducir y promover nuevas tecnologías.

Como se ha comentado, a través de TechPeopleCare Android App, se puedenenviar cursos incluso a lugares sin Internet y, con esto, introducir nuevos cono-cimientos y tecnologías en zonas más desfavorecidas.

Objetivo 10: Reducir la desigualdad en y entre los países.

Este objetivo trata de reducir las desigualdades y garantizar que nadie se que-da atrás forma parte integral de la consecución de los Objetivos de DesarrolloSostenible.

Uno de los objetivos TechPeopleCare es el de ofrecer nuevos conocimientos apersonas de lugares que no tienen una enseñanza óptima. A través de estasenseñanzas, se puede reducir la desigualdad que existe con las personas que síque han tenido acceso a una educación de calidad.

30

Page 39: Trabajo Fin de Gradooa.upm.es/68116/1/TFG_DAVID_RUIZ_CASADO.pdf · 2021. 7. 30. · Este Trabajo Fin de Grado se ha depositado en la ETSI Informáticos de la Universidad Politécnica

Capítulo 7

Conclusiones y trabajo futuro

7.1. Conclusiones

Una vez implementada la nueva funcionalidad del lector de documentos de textocon formato PDF se puede concluir que esta mejora supondrá un incrementode la calidad que ofrece TechPeopleCare Android App en lo que respecta a loscursos que se enseñan a los usuarios no alfabetizados. Para poder llegar a estameta, se tuvo que rehacer todo el modelaje de datos y adaptar la aplicación atodas las implementaciones y mejoras que iba a sufrir, a través del entorno deAndroid Studio. Esta situación hizo que, en un principio, no se pudieran dedicartodos los esfuerzos a la implementación del lector de los documentos de texto,pero, a su vez, ayudó a comprender la importancia de los modelos de datossobre proyectos reales de programación. Esta modificación del modelo de datos,como se ha comentado, se realizó de manera grupal, por lo que también ayudóa aprender cómo organizarse de manera grupal.

Trabajar con el equipo de TechPeopleCare también ha recordado que las inno-vaciones tecnológicas tienen que tratar avanzar juntamente con la sociedad sinolvidarse de ningún colectivo, ya sea por su edad o lugar de procedencia y desdenuestro sector tecnológico tenemos el deber de hacer que esto se cumpla.

7.2. Trabajo futuro

Algunas de las mejoras que puede recibir TechPeopleCare Android App es la deimplementar propios exámenes o cuestionarios para los usuarios no alfabeti-zados, de esta manera se podrían conseguir distintos objetivos. Se conseguiríasaber el nivel que consiguen los usuarios después de realizar sus cursos, cono-ciendo, de esta forma, si alguno de los cursos necesita mejoras debido a muchosfallos por parte de los usuarios o si por el contrario un curso se encuentra enun nivel óptimo y los usuarios consiguen aprender a través del curso.

Otra posible mejora sería la de añadir la persistencia de un estado de visto paralos vídeos una vez se finaliza su visualización o la de un estado de leído cuando elusuario termina de leer el documento de texto. Además, se podría implementar

31

Page 40: Trabajo Fin de Gradooa.upm.es/68116/1/TFG_DAVID_RUIZ_CASADO.pdf · 2021. 7. 30. · Este Trabajo Fin de Grado se ha depositado en la ETSI Informáticos de la Universidad Politécnica

7.2. Trabajo futuro

una función con la que, en caso de que el usuario deje un vídeo a mitad de vero un documento sin terminar de leer, pueda retomarlo desde donde estaba.

Estos son algunos de los cambios que la aplicación puede tener para un futuro,pero las aplicaciones Android que se encuentran en auge acabarán llegando amás usuarios y por lo tanto desarrollando nuevas necesidades para ellas.

32

Page 41: Trabajo Fin de Gradooa.upm.es/68116/1/TFG_DAVID_RUIZ_CASADO.pdf · 2021. 7. 30. · Este Trabajo Fin de Grado se ha depositado en la ETSI Informáticos de la Universidad Politécnica

Bibliografía

[1] A. PÉREZ FILOCHE, Evoluciones y refactorizaciones de una aplicación Andro-id para alfabetización digital, Trabajo de Fin de Grado, Lenguajes y Siste-mas Informáticos e Ingeniería de Software, U. Politécnica, Madrid, España,2020.

[2] R.C. MARTIN, Clean Architecture: A Craftsman’s Guide to Software Structureand Design, primera edición, Boston, Massachusetts, Estados Unidos deAmérica: Prentice Hall, 2017.

33

Page 42: Trabajo Fin de Gradooa.upm.es/68116/1/TFG_DAVID_RUIZ_CASADO.pdf · 2021. 7. 30. · Este Trabajo Fin de Grado se ha depositado en la ETSI Informáticos de la Universidad Politécnica

Este documento esta firmado porFirmante CN=tfgm.fi.upm.es, OU=CCFI, O=Facultad de Informatica - UPM,

C=ES

Fecha/Hora Thu Jun 03 18:19:35 CEST 2021

Emisor delCertificado

[email protected], CN=CA Facultad deInformatica, O=Facultad de Informatica - UPM, C=ES

Numero de Serie 630

Metodo urn:adobe.com:Adobe.PPKLite:adbe.pkcs7.sha1 (AdobeSignature)