ARNOLD STIVEN ALFONSO CONTRERAS

200
1 APLICACIÓN MÓVIL PARA EL APRENDIZAJE DEL LENGUAJE BRAILLE Y LA SIGNOGRAFÍA BÁSICA USADA EN LAS ÁREAS DE MATEMÁTICAS Y MÚSICA EN PERSONAS VIDENTES ARNOLD STIVEN ALFONSO CONTRERAS UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS FACULTAD TECNOLÓGICA TECNOLOGÍA EN SISTEMATIZACIÓN DE DATOS BOGOTÁ 2016

Transcript of ARNOLD STIVEN ALFONSO CONTRERAS

Page 1: ARNOLD STIVEN ALFONSO CONTRERAS

1

APLICACIÓN MÓVIL PARA EL APRENDIZAJE DEL LENGUAJE BRAILLE Y LA

SIGNOGRAFÍA BÁSICA USADA EN LAS ÁREAS DE MATEMÁTICAS Y MÚSICA

EN PERSONAS VIDENTES

ARNOLD STIVEN ALFONSO CONTRERAS

UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS FACULTAD TECNOLÓGICA

TECNOLOGÍA EN SISTEMATIZACIÓN DE DATOS BOGOTÁ

2016

Page 2: ARNOLD STIVEN ALFONSO CONTRERAS

2

APLICACIÓN MÓVIL PARA EL APRENDIZAJE DEL LENGUAJE BRAILLE Y LA

SIGNOGRAFÍA BÁSICA USADA EN LAS ÁREAS DE MATEMÁTICAS Y MÚSICA

EN PERSONAS VIDENTES

ARNOLD STIVEN ALFONSO CONTRERAS

Trabajo de grado para optar por el título de Tecnólogo en Sistematización de

Datos

Tutor

ING. JOSE VICENTE REYES MOZO

UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS

FACULTAD TECNOLOGICA

TECNOLOGIA EN SISTEMATIZACION DE DATOS

BOGOTA

2016

Page 3: ARNOLD STIVEN ALFONSO CONTRERAS

3

AGRADECIMIENTOS

Para empezar deseo agradecer a mi familia por ser un punto de apoyo durante mi

carrera, sin su ellos habría sido muy difícil poder cumplir las metas que me

propuse cuando ingresé a la universidad.

Por otro lado, quiero agradecer a mi querida amiga Nathaly Jaimes quien me dio

su apoyo y me animó a culminar este proyecto cuando estaba pasando por

momentos difíciles.

Un reconocimiento especial a los docentes y estudiantes del Centro Integral José

María Córdoba por participar en las pruebas del software, sin ellos habría sido

muy difícil encontrar las falencias en la aplicación que se pudieron solucionar

gracias a sus sugerencias.

Quiero agradecer a mi Tutor José Vicente Reyes por orientarme en el desarrollo

de este documento respondiendo algunas dudas que tenía.

Por ultimo a la Universidad Distrital Francisco José de Caldas pues sin ella no

habría sido posible que este proyecto llegara a elaborarse

A todos ellos muchas gracias.

Page 4: ARNOLD STIVEN ALFONSO CONTRERAS

4

DEDICATORIA

Dedico esta monografía a mis padres y hermanos por su apoyo en todo momento, por darme la oportunidad de tener una excelente educación en el transcurso de este proceso, por los valores que me enseñaron desde muy temprana edad y su ayuda en momentos difíciles, es para mí un orgullo mostrar el resultado de los esfuerzos que

ellos realizaron para que pueda crecer profesionalmente. No fue fácil y sin su ayuda habría sido muy difícil lograrlo.

A los profesores de la Universidad Distrital Francisco José de Caldas los cuales fueron los encargados de brindarme el conocimiento necesario para finalizar

este proyecto.

Para obtener sabiduría es necesario experimentar ciertas vivencias, es decir, sumergirse en ella. Muchos se ahogan al intentar alcanzarla otros logramos salir victoriosos. Sin embargo, esto es sólo el comienzo, aún queda más terreno en el

cual sumergirse y luchar.

Arnold Alfonso

Page 5: ARNOLD STIVEN ALFONSO CONTRERAS

5

Contenido

Contenido ............................................................................................................................................ 5

1. FASE DE PLANEACIÓN, DEFINICIÓN Y ORGANIZACIÓN ............................................................... 8

1.1 TÍTULO: ................................................................................................................................ 8

1.2 TEMA: .................................................................................................................................. 8

1.3 PLANTEAMIENTO DEL PROBLEMA ............................................................................................ 8

1.3.1 Descripción ......................................................................................................................... 8

1.3.2 Formulación ........................................................................................................................ 9

1.4 JUSTIFICACIÓN .......................................................................................................................... 9

1.5 OBJETIVOS ............................................................................................................................... 10

1.5.1 Objetivo General .............................................................................................................. 10

1.5.2 Objetivos Específicos ........................................................................................................ 10

1.6 ALCANCES Y DELIMITACIONES ................................................................................................ 11

1.6.1 Alcances ............................................................................................................................ 11

1.6.2 Delimitaciones .................................................................................................................. 11

1.7 MARCO DE REFERENCIA .......................................................................................................... 12

1.7.1 Marco Histórico ................................................................................................................ 12

1.7.2 Marco Teórico ...................................................................................................................... 15

1.7.2.1 El Sistema Braille ........................................................................................................... 15

1.7.2.2 Metodología de desarrollo de software........................................................................ 21

1.7.2.3 Clasificación Metodologías de desarrollo de software ................................................ 22

1.7.2.4 Aplicación Móvil .......................................................................................................... 24

1.7.3 Marco Conceptual ................................................................................................................ 25

Android ...................................................................................................................................... 25

MÓVIL ........................................................................................................................................ 26

Telefonía móvil .......................................................................................................................... 26

Dispositivos Móviles .................................................................................................................. 26

Entorno De Desarrollo Integrado (IDE) ..................................................................................... 26

1.8 MARCO METODOLÓGICO ........................................................................................................ 27

Metodología XP ............................................................................................................................. 27

Definición .................................................................................................................................. 27

Historias de Usuario .................................................................................................................. 27

Page 6: ARNOLD STIVEN ALFONSO CONTRERAS

6

Principales Características ......................................................................................................... 28

Fases de la Programación Extrema ............................................................................................... 28

Exploración ................................................................................................................................ 28

Planificación de la Entrega (Release) ........................................................................................ 29

Iteraciones ................................................................................................................................. 29

Producción................................................................................................................................. 30

Mantenimiento ......................................................................................................................... 30

Muerte del Proyecto ................................................................................................................. 30

Bliseo ......................................................................................................................................... 31

1.9 FACTIBILIDAD .......................................................................................................................... 31

1.9.1 Técnica .............................................................................................................................. 31

Smartphone: .............................................................................................................................. 33

1.9.2 Operativa .......................................................................................................................... 33

1.9.3 Legal ................................................................................................................................. 33

1.9.4 Económica ........................................................................................................................ 35

1.10 CRONOGRAMA ...................................................................................................................... 36

2. ANÁLISIS .................................................................................................................................... 38

2.1 Consulta a fuentes de información apropiadas e identificación de problemas................ 38

2.2 Análisis de alternativas de solución .................................................................................. 38

2.3 Establecimiento del papel del computador ...................................................................... 39

2.4 Selección de la Herramienta de Programación ................................................................. 40

3. DISEÑO ...................................................................................................................................... 42

3.1 Entorno Para El Diseño Del MEC ....................................................................................... 42

3.2 Diseño De La Aplicación .................................................................................................... 43

Alcance: ......................................................................................................................................... 43

3.3 Diseño De La Interfaz ........................................................................................................ 44

3.4 Diseño Computacional ...................................................................................................... 45

Diagrama de Caso de Uso ............................................................................................................. 45

3.5 Preparación Y Evaluación Del Prototipo............................................................................ 46

4. FASE DE IMPLEMENTACIÓN ...................................................................................................... 46

TARJETAS CRC (Clase - Responsabilidad – Colaborador)............................................................... 46

5. Fase de Prueba Piloto ................................................................................................................ 53

Resultados obtenidos: ................................................................................................................... 56

Page 7: ARNOLD STIVEN ALFONSO CONTRERAS

7

9. Fase De Implantación ................................................................................................................ 63

10. Metodología .......................................................................................................................... 63

10.1 Exploración: ....................................................................................................................... 63

10.2 Planificación de La entrega: .............................................................................................. 64

10.3 Iteraciones: ........................................................................................................................ 65

10.4 Producción: ....................................................................................................................... 67

10.5 Mantenimiento: ................................................................................................................ 69

7.6 Muerte Del Proyecto: .............................................................................................................. 71

Roles: ............................................................................................................................................. 71

PRUEBAS DE ACEPTACIÓN ............................................................................................................ 72

Conclusiones ..................................................................................................................................... 78

Recomendaciones ............................................................................................................................. 78

BIBLIOGRAFÍA .................................................................................................................................... 80

INFOGRAFÍA....................................................................................................................................... 82

Page 8: ARNOLD STIVEN ALFONSO CONTRERAS

8

1. FASE DE PLANEACIÓN, DEFINICIÓN Y ORGANIZACIÓN

1.1 TÍTULO: Aplicación móvil para el aprendizaje del Lenguaje Braille y la

Signografía Básica usada en las áreas de matemáticas y música en personas

videntes.

1.2 TEMA: Enseñanza del lenguaje Braille y la Signografía básica usada para las

áreas de matemáticas y música.

1.3 PLANTEAMIENTO DEL PROBLEMA

1.3.1 Descripción

La discapacidad visual en la primera infancia es una consecuencia de las

malformaciones, deficiencias biológicas, accidentes fortuitos de la vida u

otros factores. Por ende, el desarrollo de los niños invidentes depende de

las condiciones históricas, culturales, sociales y políticas del país en el cual

nacen. Respecto a la inclusión educativa de los niños y las niñas con

discapacidad visual entre los 5 y 11 años, según el Sistema de Información

de Matrículas SIMAT en el año 2011, estaban matriculados 3.425 niños,

de los cuales 3.042 tienen baja visión y 383 son ciegos. No obstante, la

información del registro de discapacidad muestra que el 41.6% de los niños

en este rango de edad siguen excluidos de la educación regular.1

Por lo tanto, los niños invidentes carecen de oportunidades significativas a

nivel educativo ya que acceder a la educación no garantiza un pleno

desarrollo de sus actividades, puesto que, como lo evidencia Deam Lermer,

catedrático del Externado y exdirector del Instituto Nacional de Ciegos. Sólo

el 2% de los colegios en Colombia tiene material de estudio para niños

invidentes y no todos los docentes están capacitados para atender a esta

población2.

De esta manera, se puede evidenciar que existe un abandono a esta

población y los colegios que no son especializados en atender a personas

con discapacidad visual no pueden ofrecer una educación con la que los

menores puedan desarrollar sus habilidades de forma adecuada.

1 Niños y niñas con discapacidad visual en Colombia. Disponible en internet:<

http://www.mineducacion.gov.co/cvn/1665/w3-article-303293.html > [con acceso el 30-08-2015 ] 2 Invidentes afectados por derechos de autor. Disponible en internet:< http://www.elespectador.com/dean-lermer/invidentes-afectados-derechos-de-autor-articulo-366637 > [con acceso el 29-08-2015 ]

Page 9: ARNOLD STIVEN ALFONSO CONTRERAS

9

1.3.2 Formulación

¿La existencia de una herramienta que facilite la enseñanza y

acompañamiento de los docentes de los niños con discapacidad visual

ayudará a mitigar la falta de concentración, Retraimiento y frustración que

se manifiesta en los menores respecto al desempeño académico?

1.4 JUSTIFICACIÓN

Sólo el 2% de los colegios en Colombia tiene material de estudio para niños

invidentes lo que impide su desarrollo integral. Además, si un niño con

discapacidad visual se educa un ambiente donde sus allegados conozcan el

lenguaje Braille lo motivará a mejorar sus habilidades en lectoescritura evitando

que se aísle, pierda interés o sienta frustración durante su proceso académico.3

Por otra parte, podemos evidenciar con algunos proyectos similares realizados

que las herramientas tecnológicas motivan al niño a obtener más conocimiento

como es el caso del dispositivos IRIS®4 que permite a estudiantes en situación de

discapacidad visual la posibilidad de percibir “figuras y colores” usando las manos,

el muñeco Braillin5 Un elemento que permite el aprendizaje de lectoescritura del

Sistema Braille, apoyándose en la lúdica y los sentidos, dirigido tanto a la

población vidente como a la invidente. El dispositivo IRIS® se implementó en el

Instituto para Niños Ciegos Fundación Juan Antonio Pardo Ospina en Bogotá.

La difusión y conocimiento del sistema braille entre las personas que ven, así

como unas pautas básicas en la relación con personas con discapacidad visual,

supone un elemento facilitador y de colaboración con ellas y, en consecuencia,

una contribución inestimable a su integración, inclusión y participación social.

La entidad que se encarga de garantizar el derecho a la educación en Colombia

es el congreso de la República, la cual ha realizado varias leyes para garantizar el

derecho a la educación inclusiva y acceso a las tecnologías de información a las

personas con discapacidad visual, de las cuales podemos poner como ejemplo la

ley 1680 de Noviembre 20 de 2013 “por la cual se garantiza a las personas ciegas

3 Dificultades de aprendizaje en el alumnado con déficit visual y ciego. Disponible en internet:<

http://www.foal.es/sites/default/files/docs/4_dificultad_de_aprendizaje_0.pdf > [con acceso el 15-09-2015 ]

4 IRIS en Colombia. Disponible en internet:< http://www.duto.org/proyectos/iris_en_colombia/ > [con acceso el 07-09-2015 ]

5 Guía didáctica para uso de Braillín. Disponible en internet:

< http://www.juntadeandalucia.es/averroes/caidv/interedvisual/ftp/guia_didactica_uso_braillin.doc > [con acceso el 07-09-2015 ]

Page 10: ARNOLD STIVEN ALFONSO CONTRERAS

10

y con baja visión, el acceso a la información, a las comunicaciones, al

conocimiento y a las tecnologías de la información y de las comunicaciones"6 y la

ley 1618 del 27 de Febrero de 2013 "por medio de la cual se establecen las

disposiciones para garantizar el pleno ejercicio de los derechos de las personas

con discapacidad".7

Sin embargo, no existe mucho material o personal calificado para impartir clases

de música en lenguaje braille lo que le impide a una persona invidente tener una

buena formación en esta área8 y en las clases de matemáticas se debe recurrir a

material improvisado para enseñar fórmulas matemáticas.9

1.5 OBJETIVOS

1.5.1 Objetivo General

Desarrollar una aplicación móvil mediante la plataforma Android v 4.4 que

permita a los docentes y familiares de personas invidentes, aprender el

lenguaje Braille y la Signografía básica usada en las áreas de matemáticas

y música.

1.5.2 Objetivos Específicos

Realizar una investigación en el centro integral José María Córdoba, que

admite a niños con limitación visual, para Identificar los principales

problemas que tienen los docentes y personas cercanas a los niños con

esta limitación para aprender el lenguaje Braille.

Diseñar una aplicación móvil como solución preliminar para realizar las

respectivas mejoras y determinar problemas.

Instaurar un Módulo de transcripción Braille a la aplicación

Establecer un Glosario de Signos por cada una de las temáticas a tratar:

Notas musicales, Figuras musicales, Números, símbolos usados en las

matemáticas.

Generar un Módulo de evaluación para analizar el avance del usuario en el

aprendizaje del lenguaje Braille.

6 Congreso de Colombia, ley no. 1680. Disponible en internet:< http://www.mintic.gov.co/portal/604/articles-

5006_documento.pdf > [con acceso el 27-09-2015 ] 7 Congreso de Colombia, ley estatutaria no. 1618. Disponible en internet:<

http://wsp.presidencia.gov.co/Normativa/Leyes/Documents/2013/LEY%201618%20DEL%2027%20DE%20FEBRERO%20DE%202013.pdf > [con acceso el 27-09-2015 ]

8 La educación musical de personas con deficiencia visual y la musicografía braille. Disponible en internet:<

http://www.saccom.org.ar/2010_reunion9/actas/11.Bertevelli.pdf > [con acceso el 15-09-2015 ]

9 Matemáticas para invidentes. . Disponible en internet:< http://discapacidadcero.weebly.com/matematicas-para-no-

videntes.html#.VfkcDxF_NBc > [con acceso el 15-09-2015 ]

Page 11: ARNOLD STIVEN ALFONSO CONTRERAS

11

Efectuar pruebas al software una vez terminado para comprobar que

cumpla con las expectativas esperadas y detectar posibles problemas.

1.6 ALCANCES Y DELIMITACIONES

1.6.1 Alcances

Este proyecto se realizará para generar y desarrollar una aplicación que

permita a los docentes o personas cercanas a niños invidentes aprender

el lenguaje Braille de una forma sencilla. A su vez, el usuario también

tendrá la posibilidad de aprender la Signografía básica que se utiliza en

las áreas de música y matemáticas para que puedan acompañar al

menor en su proceso de aprendizaje.

1.6.2 Delimitaciones

1.6.2.1 Geográfica

El área geográfica seleccionada para el desarrollo del proyecto, es el

Centro Integral José María Córdoba ubicado en la localidad de

Tunjuelito, en el barrio el Tunal.

1.6.2.2 Temporal

El proyecto se realizará en un periodo de 6 meses, comprendido desde Noviembre de 2015 hasta Abril de 2016

1.6.2.3 Temática

Este proyecto abordará el aprendizaje del lenguaje Braille, el desarrollo de aplicaciones móviles y la Signografía que se usa en las áreas de matemáticas y música.

1.6.2.4 Técnica

Para realizar este proyecto se usará un computador proporcionado por el ejecutante que cuenta con el IDE de Eclipse ya que este fue el primer entorno que se utilizó para crear aplicaciones Android, y por lo tanto es el más extendido.10 La versión de Android que se va a usar es KitKat 4.4.

10 MONTERO, Miguel. Android Desarrollo De Aplicaciones. Primera Edición. Editorial Ra-ma. p. 27

Page 12: ARNOLD STIVEN ALFONSO CONTRERAS

12

1.7 MARCO DE REFERENCIA

1.7.1 Marco Histórico

Población con discapacidad en Colombia11

De acuerdo a las encuestas realizadas por el Censo Nacional De Población DANE en el 2005 las personas con discapacidad son 6.19 por cada 100 habitantes con un total de 2.549.153 casos detectados en esa fecha. Se identificó que las frecuencias más altas se presentaron en Bogotá, Antioquia y Valle del Cauca en ese orden.

Como proporción de las personas con limitaciones el mayor grupo para la fecha fue el de limitaciones visuales con un 36.3%. Las limitaciones para caminar ocuparon un segundo lugar con 24.7%. Es importante señalar que las limitaciones auditivas tiene un menor peso en cuanto a la principal limitación de las personas pero como en un mayor número de casos está asociado a otro tipo de discapacidad.

Educación personas Discapacitadas en Colombia12

En el año 2008, sólo el 0.4% de los alumnos matriculados en secundaria media tenían alguna discapacidad, pero en la secundaria básica este porcentaje era de 0.7% lo que implicó que había una tendencia importante en el abandono de los estudios por parte de los jóvenes con alguna discapacidad a su paso hacia la educación secundaria media.

Los mayores porcentajes de deserción de estudio para la fecha se tuvieron en Caldas, Chocó y Antioquia, departamentos donde el porcentaje de alumnos con discapacidad en media decreció con mayor proporción frente al porcentaje en secundaría básica.

Por otro lado, de acuerdo con el SIMAT en el año 2011 el 41.6% de niños con discapacidad visual entre los 5 y 11 años estaban excluidos de la educación regular. De esta manera es evidente que la población discapacitada tiene un gran problema al acceder a la educación tanto así que terminan dejando sus estudios por no poder entrar a sitios especializados al ser excluidos de la educación regular.

11 Sarmiento, Alfredo .Situación Educación. Tercera Edición. Observatorio de Educación de Uninorte. p.64-73 12 Ibid

Page 13: ARNOLD STIVEN ALFONSO CONTRERAS

13

Desarrollo Aplicaciones Móviles en Colombia13

Desde los últimos cuatro años, Colombia ha tenido una industria de contenidos digitales y aplicaciones cada vez más sólida y mejor estructurada. El 32% de los desarrolladores tiene por objetivo crear videojuegos, el 31% animación digital, 12% diseña eBooks y el 25% restante proyectos con impacto social para la base del país.

En cuanto a la regionalización de las empresas, 69% pertenecen a Bogotá, el 13% a Medellín, 6% Cali, 3% Manizales, 2% Bucaramanga y 2% Barranquilla.

Proyectos de Investigación en Desarrollo y terminados

Dispositivo tecnológico para la optimización del tiempo de aprendizaje del lenguaje Braille en personas invidentes14

Integrantes: Cesar Hernández, Luis F. Pedraza y Danilo López

Descripción:

Un prototipo electrónico, con el fin de mejorar los tiempos de aprendizaje inicial de la escritura Braille en personas con situación de discapacidad visual especialmente en niños. El desarrollo de ese proyecto, se basó en un prototipo electrónico digital, el cual después de realizar la escritura por parte del usuario, identifica y hace una traducción del Braille por medio de un sistema de síntesis de voz que genera las palabras de manera artificial con el objeto de verificar si la escritura en Braille es o no correcta. Para medir los tiempos de aprendizaje se contó con la colaboración de los docentes de la Biblioteca El Tunal y el INCI, a través de reuniones periódicas prácticas.

El aporte que se puede tomar de este proyecto es el proceso de aprendizaje en Braille, ya que puede mejorar el aprendizaje en la aplicación que se desea elaborar.

Proyectos Relacionados

A B Sé! Sistema para el aprendizaje de Lectoescritura en Braille15

Integrantes: Silvia Castañeda Meziat y Ernesto Maldonado Camargo.

13 Aplicaciones móviles colombianas con calidad de exportación. Disponible en internet:< http://www.mintic.gov.co/portal/604/w3-article-8396.html > [con acceso el 20-10-2015 ] 14 Dispositivo tecnológico para la optimización del tiempo de aprendizaje del lenguaje Braille en personas invidentes.

Disponible en internet:< http://www.scielosp.org/pdf/rsap/v13n5/v13n5a15.pdf > [con acceso el 07-09-2015 ]

15 A B Sé! Sistema para el aprendizaje de Lectoescritura en Braille. Disponible en internet:<

http://repository.javeriana.edu.co/bitstream/10554/4234/1/tesis97.pdf> [con acceso el 07-09-2015 ]

Page 14: ARNOLD STIVEN ALFONSO CONTRERAS

14

Descripción:

Elemento que permite el aprendizaje de lectoescritura del Sistema Braille, apoyándose en la lúdica y los sentidos, dirigido tanto a la población vidente como a la invidente. Se implementó en el Instituto para Niños Ciegos Fundación Juan Antonio Pardo Ospina en Bogotá. Se comprobó si la forma y dimensiones del A B Sé! eran las adecuadas, al igual que los agarres y alcances tanto máximos como mínimos. Se ve que el A B Sé! tiene un tamaño que permite su fácil manipulación por parte de los niños; El tamaño de los botones permite que los niños los presionen utilizando la palma de la mano, los dedos o la punta de un solo dedo. Los niños expresaron agrado por la forma del A B Sé!

Al ser un dispositivo que puede usar personas videntes e invidentes por igual, se puede plantear que la interfaz de la aplicación tenga alguna similitud en su diseño para que las personas videntes que la van a usar se puedan asociar fácilmente con el lenguaje.

BrailleSoft: Software traductor de lenguaje Braille a digital y viceversa16 Integrantes: Edith Johana Espitia Riaño y Gonzalo Gutiérrez López Descripción: Herramienta, en software libre y código abierto, que tomando documentos impresos en Braille Simple (una sola cara previamente escaneado) y por medio de un algoritmo matemático, interpreta las imágenes generadas traduciéndolas a texto digital en lenguaje español, con un margen de error del 5%, este texto digital, puede ser exportado a un archivo de texto. Por otra parte, la herramienta cuenta con la función de pasar el texto que ha sido traducido a formato de voz, para que el usuario pueda escuchar la traducción. A su vez la herramienta permite, que a partir de un texto en formato digital en lenguaje español, realice la traducción a lenguaje de comunicación Braille, con un margen de error del 2% El aporte destacable de este proyecto es el algoritmo que se usó para traducir del lenguaje Braille al lenguaje español, para tenerlo en cuenta a la hora de implementar el módulo de transcripción que tendrá la aplicación.

16 BrailleSoft: Software traductor de lenguaje Braille a digital y viceversa. Disponible en internet:<

http://reposital.cuaed.unam.mx:8080/jspui/bitstream/123456789/3774/1/VE13.295.pdf> [con acceso el 07-09-2015 ]

Page 15: ARNOLD STIVEN ALFONSO CONTRERAS

15

1.7.2 Marco Teórico

1.7.2.1 El Sistema Braille17

Historia

Desde la antigüedad hubo diversos inventos para facilitar la lectura y escritura a las personas sin visión (letras de madera, letras en relieve, regletas y pautas, nudos de distinto grosor en una cuerda, etc.), pero su utilización fue poco extendida por las deficiencias intrínsecas de estos códigos o los materiales empleados. La ceguera se convertía, por tanto, en un obstáculo para el acceso a la comunicación escrita.

En la segunda mitad del siglo XVIII empieza a cambiar la actitud de la sociedad ante la discapacidad en general y la ceguera en particular. Concretamente, en 1784, en París, Valentin Haüy funda el primer centro educativo para personas ciegas «Institution National des Jeunes Aveugles». Allí utilizaban para leer el sistema de Haüy que consistía en la grabación en alto relieve de los caracteres que se utilizan en vista. Con este sistema las personas ciegas podían leer, aunque muy despacio, pero no podían escribir.

En 1821, Charles Barbier de la Serre (1767-1861), capitán de artillería, presenta en el centro educativo de Haüy un sistema puntiforme (escritura nocturna o sonografía) que inventó para que los soldados se enviaran mensajes en relieve, para poder ser leídos al tacto, en la oscuridad. Eran signos que representaban sonidos que se leían con las yemas de los dedos y que se podían escribir con una pauta y un punzón. Pero los signos resultaban demasiado grandes y no representaban la ortografía de las palabras, sino su sonido.

Louis Braille (1809-1852), estudiante ciego del instituto fundado por Haüy, analiza el sistema de Barbier y realiza varias modificaciones: reduce el tamaño de los signos e inventa un alfabeto. En 1827 se publica, finalmente, el código de lectoescritura para ciegos: el sistema braille. Además, Luis Braille adapta el sistema a las matemáticas, la música y las ciencias, y desarrolla un sistema de abreviaturas. Inventa también una pauta que permite la escritura.

Como curiosidad, es interesante saber que el título de la presentación del sistema braille es exactamente: «Procedimiento para la escritura de palabras, música y canto llano por medio de puntos para uso de los ciegos y arreglado por ellos». Intentaba, también, facilitar a las personas sin visión la lectura y escritura de partituras musicales (de hecho, Luis Braille era profesor de música).

17 Educación inclusiva: discapacidad visual módulo 5: el sistema braille. Disponible en internet:<

http://www.ite.educacion.es/formacion/materiales/129/cd/pdf/m5_dv.pdf> [con acceso el 15-09-2015 ]

Page 16: ARNOLD STIVEN ALFONSO CONTRERAS

16

El sistema braille no fue aceptado ni difundido fácilmente ya que suponía un cambio drástico con respecto a la tendencia anterior. Es en el año 1840 cuando se acepta oficialmente. En 1878, en el Congreso Internacional celebrado en París, se decide promoverlo como método universal al considerarlo el mejor sistema de lectoescritura para personas con ceguera, por su probada utilidad didáctica.

Estructura del Sistema

El sistema braille se adecua estructural y fisiológicamente a las características del sentido del tacto. Se adapta perfectamente a las terminaciones nerviosas de la yema de los dedos, y así los signos son transmitidos al cerebro, como una totalidad.

Este sistema está diseñado para ser utilizado a través del tacto, por medio de puntos en relieve. La unidad básica o signo generador es el cajetín o celdilla. En este espacio se sitúan los 6 puntos en relieve, distribuidos en dos columnas de tres puntos cada una. Esta celdilla o cajetín, mide aproximadamente unos 5 mm de alto por 2,5 mm de ancho. La distancia horizontal entre celdillas es de unos 6,30 milímetros y la vertical entre líneas es de 10,20 milímetros, aproximadamente. Estas medidas hacen que la información quepa dentro de la yema de un dedo.

Cada letra o signo se representa en un solo cajetín, en el que aparecen o no los 6 puntos en relieve, que son percibidos a través del tacto por las yemas de los dedos. En un texto en braille los cajetines no están presentes, siendo visibles sólo los puntos. Para identificar los puntos, se les atribuye un número del 1 al 6.

Figura 1. Signo Generador

Page 17: ARNOLD STIVEN ALFONSO CONTRERAS

17

Mediante las diferentes combinaciones de puntos en un mismo cajetín se pueden obtener 64 formas distintas de disposición de los puntos, incluyendo el cajetín en blanco, que se utiliza para separar las palabras. Como el número de posibilidades es limitado, por economía del sistema, un mismo signo braille puede significar cosas distintas, según el contexto donde lo utilicemos o si le antepongamos otro signo. Por esta razón, el braille es un sistema y no un simple alfabeto ya que, utilizando sus 64 combinaciones se han desarrollado distintos códigos: para matemáticas, ciencias, música, estenografía (braille abreviado), signografía específica para diferentes idiomas, etc.

En braille cada letra se representa con una combinación de puntos en relieve. Para dejar espacios en blanco entre palabras, se emplean también un espacio o cajetín en blanco. Al comenzar a escribir se dejan dos espacios en blanco (sangría) y, entre párrafo y párrafo, es conveniente dejar un renglón en blanco, igual que en tinta. Estos espacios son muy útiles para que el lector pueda localizar fácilmente el inicio de cada párrafo y, así, darle facilidades para ubicarse en el texto.

El código está diseñado de manera lógica, mediante series:

1º serie: se utilizan únicamente los cuatro puntos superiores (1, 2, 4, 5) y con ellos se forman las diez primeras letras del alfabeto

Figura 2. Primera Serie Del Lenguaje Braille

2º serie: se forma con los puntos de la primera serie, añadiéndoles el punto número 3 y, así, obtenemos las siguientes letras, a excepción de la letra ñ (conviene recordar aquí que Luis Braille era francés)

Figura 3. Segunda Serie Del Lenguaje Braille

Page 18: ARNOLD STIVEN ALFONSO CONTRERAS

18

3ª serie: se forma con los puntos de la serie 2ª, añadiendo el punto número 6:

Figura 4. Tercera Serie Del Lenguaje Braille

4ª serie: son los elementos de la 1ª serie, añadiendo el punto número 6. En esta serie se forman signos propios del francés, por lo que aquí sólo presentamos las letras que nos interesan en español:

Figura 5. Cuarta Serie Del Lenguaje Braille

5ª serie: son los signos de la primera serie, pero utilizando los puntos de la mitad inferior de la celdilla o cajetín. Así, conseguimos los signos de puntuación:

Figura 6. Quinta Serie Del Lenguaje Braille

Page 19: ARNOLD STIVEN ALFONSO CONTRERAS

19

Metodologías de la enseñanza del Lenguaje Braille

Cada método defiende su propio orden en la presentación de las letras. Sin embargo, podemos decir que lo más aconsejable es seguir, siempre que sea posible, el mismo método de aprendizaje de la lectoescritura en tinta establecido en el aula para el resto de los compañeros videntes del alumno con ceguera, ya que este es el caso de la mayoría de los alumnos con discapacidad visual.

Muchos métodos se basan en que el niño debe conocer previamente el espacio rectangular que ocupan los 6 puntos de la celdilla y su ubicación. Para ello, se pueden utilizar algunos materiales que reproducen la celdilla braille en grande y facilitan al niño el aprendizaje. Existen, por ejemplo, pizarras «macrobraille», con celdillas grandes en las que hay que insertar pivotes con los que el alumno se va familiarizando con los signos. No obstante, nos sirve cualquier material de desecho que tenga esta forma (hueveras de media docena, etc.).

A continuación se presentan los métodos más utilizados:

Alborada

Cartilla para el aprendizaje de la lectura. Presenta las letras en un orden bastante lógico, con frases de creciente complejidad. Aunque el contenido de las frases ha quedado algo desfasado, resulta un método fácil de utilizar y motivador para los alumnos adultos ya que, desde las primeras páginas, leen palabras y frases con significado. El orden de presentación de las letras tiene en cuenta la sencillez o complejidad de los signos: a, o, u, e, l, p, i, b, m, s, n, v, d, ñ, g, t, f, ll, r, c, y, j, q, h, z, x, ch, k, punto, signo de mayúscula, sílabas trabadas, á, é, ó, coma, punto y coma, dos puntos, guion, í, ú, ü, w, interrogación, admiración y signo de número.

Bliseo

Es un método para aprendizaje del sistema braille para adultos alfabetizados. Empieza profundizando en el conocimiento especial del signo generador y va introduciendo las letras de la primera serie (de la «a» a la «j»), para seguir con la siguiente serie, añadiendo el punto 3 (de la «k» a la «t», excepto la «ñ») y las 5 últimas letras, añadiendo el punto 6.

Pérgamo

Método de alfabetización para personas ciegas adultas. Realiza una presentación de letras pensada para evitar confusiones y facilitar la percepción en braille. Comienza el método con ejercicios para discriminar las posiciones de los puntos en el cajetín, independientemente de su significado. El orden de presentación de las letras es el siguiente: a, e, i, o, u, l, s, p, m, f, d, n, t, ñ, c, h, á, é, b, v, ll, y, r, í, ó, ú, g, j, z, mayúsculas, punto y coma. Al final, se introducen las letras que suelen aparecer menos: x, q, ch, k, w, ü. Después van apareciendo las sílabas trabadas (pl, cl, bl, dr, tr, etc.), el signo de número y signos de puntuación: guion, dos puntos, punto y coma, interrogación, admiración, comillas, paréntesis, etc.

Punto a punto

Se presenta en castellano y catalán. Consta de dos series de 5 y 4 tomos, respectivamente. La primera serie presenta un programa de prelectura y

Page 20: ARNOLD STIVEN ALFONSO CONTRERAS

20

preescritura y la segunda se dedica a la enseñanza del sistema braille propiamente dicho:

Primera serie: en los tres primeros tomos se ofrecen una serie de ejercicios de prelectura, para el reconocimiento de formas (cuadrado, círculo, triángulo, rectángulo) y tamaños, líneas horizontales y verticales, y seguimiento de líneas y orientación espacial con cuadrados, líneas y series de varios elementos (conjuntos de puntos), para proceder a su discriminación, aun sin darles un significado. En el cuarto tomo es cuando se inicia el aprendizaje del sistema braille: el signo generador, en grandes caracteres con el objetivo de ir disminuyendo el tamaño e ir reconociendo las diferentes posiciones y las primeras letras: a, b, l, e, o. También se comienza la preescritura. En el último tomo se hacen consideraciones metodológicas para el profesor.

Segunda serie: en los tres primeros tomos, se van presentando una a una todas las letras del alfabeto, se hacen ejercicios de reconocimiento táctil, identificación y discriminación, combinando con las letras ya sabidas, para pasar a la lectura de sílabas, palabras y frases. El orden de presentación de las letras es el siguiente: a, o, u, e, l, p, b, m, n, f, i, signo de mayúscula y punto, r, s, apóstrofe, t, ll, c, admiración, d, interrogación, g, j, á, í, ú, v, coma, x, h, q, punto y coma, ñ, z, dos puntos, é, ó, ü, t y k; (en la versión en catalán, se añaden las letras è, ò, ç, ï) El cuarto tomo está dedicado a los maestros, donde se les explica en qué consiste el método y cómo utilizarlo.

Se acompaña de dibujos en relieve para motivar al alumno y de ejercicios para reforzar la discriminación de las letras.

Tomillo

Es un método de iniciación a la lectura braille dirigido, especialmente, a la población infantil. Apoya la presentación de contenidos significativos, al mismo tiempo que respeta las peculiaridades de la exploración táctil. Además, se adecua a la edad a la que va dirigido, utilizándose palabras y frases cortas con sentido, con estructuras lingüísticas familiares para el niño. Se emplean materiales atractivos para estas edades, con representaciones en relieve. Además ofrece ejercicios. La secuencia de presentación de grafemas es: a, o, u, e, l, p, á, b, c, d, m, signo de mayúscula, punto, i, n v, ó, s g, t, f, r í, ll, j, z, ñ, é, h, y, ch, ú, q, rr, r, gu. Es decir, se presentan, en primer lugar, las letras que se perciben más fácilmente al tacto, las que no presentan dificultades fonéticas y se evita unir letras simétricas. Se van introduciendo desde el principio las vocales con tilde. Utilizan doble espacio para facilitar la lectura y el cambio de línea.

Como hemos ido analizando, existen diferentes factores que inciden en la capacidad lectora: la motivación, la cantidad de estímulos lectores que recibe el niño, la edad de comienzo de la lectura, el grado de desarrollo de las destrezas previas, la maduración del alumno, los apoyos que encuentra en el entorno y la

Page 21: ARNOLD STIVEN ALFONSO CONTRERAS

21

metodología empleada. En función de todas estas variables, debemos elegir el método a utilizar.

No obstante, para respetar la inclusión del niño en su centro educativo, se debería utilizar el método con el que se esté trabajando en el aula realizando las adaptaciones de material que fueran necesarias.

Braille para personas adultas

Un adulto que acaba de perder la visión necesita aprender un nuevo código de lectoescritura: el código braille. Para ello, deberá dominar las destrezas necesarias para acceder al sistema y tener las condiciones y capacidades necesarias para iniciar el aprendizaje, es decir:

Desarrollar destrezas manipulativas y táctiles (entrenar el sentido del tacto)

Adaptación psicológica a la nueva situación: evidentemente si la persona aún no tiene asumida su nueva situación puede sentirse muy bloqueado ante el aprendizaje del sistema por lo que podríamos provocar rechazo. En cambio, a otras personas les puede suponer un alivio descubrir que el aprendizaje del sistema les abre expectativas y posibilidades que creían perdidas. Siempre habrá que valorar la situación entre los distintos profesionales y el alumno.

No parece adecuado enseñar el sistema braille a una persona ciega adulta con la misma metodología que se enseña a un niño. El adulto, en primer lugar, debe adaptarse a su nueva situación. Además, hay que tener en cuenta que va a tener menor facilidad para discriminar táctilmente las letras, ya que no tiene desarrollada la percepción táctil.

La enseñanza del braille a las personas adultas debe formar parte de un programa de rehabilitación individual.

Se debe evitar que el alumno llegue a rechazar el sistema a causa de las dificultades con la discriminación. Incluso, hay autores que defienden la posibilidad de representar el sistema con tablillas que representen las celdillas a mayor tamaño.

Si la persona aún conserva un buen resto visual puede ser aconsejable, en un primer momento, aprender el sistema braille utilizando la vista. Hay investigaciones que afirman que, de esta forma, es más fácil, después, acceder al braille a través del tacto.

1.7.2.2 Metodología de desarrollo de software18

Las metodologías de desarrollo de software son un conjunto de procedimientos, técnicas y ayudas a la documentación para el desarrollo de productos software.

18 Capítulo 2. IAGP 2005/06. Metodologías de desarrollo de software. Disponible en internet:<

http://www.um.es/docencia/barzana/IAGP/Iagp2.html> [con acceso el 20-10-2015 ]

Page 22: ARNOLD STIVEN ALFONSO CONTRERAS

22

Es como un libro de recetas de cocina, en el que se van indicando paso a paso todas las actividades a realizar para lograr el producto informático deseado, indicando además qué personas deben participar en el desarrollo de las actividades y qué papel deben de tener. Además detallan la información que se debe producir como resultado de una actividad y la información necesaria para comenzarla.

Actualmente es imprescindible considerar los riesgos, aunque habitualmente las empresas, no han sido concienciadas de los riesgos inherentes al procesamiento de la información mediante ordenadores, a lo que han contribuido, a veces, los propios responsables de informática, que no han sabido explicar con la suficiente claridad las consecuencias de una política de seguridad insuficiente o incluso inexistente. Por otro lado, debido a una cierta deformación profesional en la aplicación de los criterios de coste/beneficio, el directivo desconocedor de la informática no acostumbra a autorizar inversiones que no lleven implícito un beneficio demostrable, tangible y mensurable.

Las técnicas indican cómo debe ser realizada una actividad técnica determinada identificada en la metodología. Combina el empleo de unos modelos o representaciones gráficas junto con el empleo de unos procedimientos detallados. Se debe tener en consideración que una técnica determinada puede ser utilizada en una o más actividades de la metodología de desarrollo de software. Además se debe tener mucho cuidado cuando se quiere cambiar una técnica por otra.

1.7.2.3 Clasificación Metodologías de desarrollo de software19

Definición

Una metodología de desarrollo de software es un conjunto de pasos y procedimientos que deben seguirse para desarrollar software. Una metodología está compuesta por:

Cómo dividir un proyecto en etapas.

Qué tareas se llevan a cabo en cada etapa.

Qué restricciones deben aplicarse.

Qué técnicas y herramientas se emplean.

Cómo se controla y gestiona un proyecto.

Clasificación de las metodologías

Las metodologías se clasifican de la siguiente forma:

Estructuradas. Orientadas a procesos Orientadas a datos Mixtas

19 Metodologías de desarrollo de software. Disponible en internet:<

http://www2.rhernando.net/modules/tutorials/doc/ing/met_soft.html> [con acceso el 20-10-2015 ]

Page 23: ARNOLD STIVEN ALFONSO CONTRERAS

23

No estructuradas. Orientadas a objetos Sistemas de tiempo real

Metodologías estructuradas

Se basan en la forma top-down

Metodologías orientadas a procesos

La ingeniería del software se basa en el modelo básico de entrada/proceso/salida de un sistema.

Está compuesta por:

Diagrama de flujo de datos (DFD). Diccionario de datos. Especificaciones de proceso.

Metodologías orientadas a datos

Son metodologías basadas en la información. Primero se definen las estructuras de datos y, a partir de éstos, se derivan los componentes procedimentales.

Metodologías no estructuradas

Metodologías orientadas a objeto

La orientación a objetos unifica procesos y datos encapsulándolos en el concepto de objetos.

Tiene dos enfoques distintos:

Revolucionario, puro u ortodoxo. Rompen con las metodologías tradicionales.

Sintetista o evolutivo. Toman como base los sistemas estructurados y conforman elementos de uno y otro tipo.

Sistemas de tiempo real

Procesan información orientada al control más que a los datos.

Se caracterizan por concurrencia, priorización de procesos, comunicación entre tareas y acceso simultáneo a datos comunes.

Page 24: ARNOLD STIVEN ALFONSO CONTRERAS

24

1.7.2.4 Aplicación Móvil 20

Una Aplicación Móvil, es un conjunto de instrucciones lógicas, procedimientos, reglas, documentación, datos e información asociada a estas que funcionan específicamente en dispositivos móviles, como por ejemplo teléfonos inteligentes, televisores inteligentes, tabletas, reloj, entre otros.

Las aplicaciones móviles se desarrollan bajo diferentes lenguajes de programación y funcionan actualmente específicamente en sistemas operativos móviles, en estos momentos los lenguajes más usados para desarrollar aplicaciones móviles son: Java, Objetic C, Xcode C#, C++, WebOS, HTML5, Bad, XML, entre otros

Una aplicación móvil se identifica en la actualidad porque puede funcionar en dispositivos móviles como característica principal, sin embargo, dentro de las aplicaciones móviles existen unas características especiales que se nombraran a continuación:

La aplicación puede desarrollarse de forma nativa, quiere decir que se desarrolla en el lenguaje definido específicamente para el sistema operativo por la empresa u organización dueña del mismo, también se pueden desarrollar de forma hibrida es decir utilizando diferentes lenguajes de programación y herramientas, además se pueden desarrollar para el funcionamiento multiplataforma, es decir, para diferentes sistemas operativos, utilizando lenguajes como HTML 5.0, entre otros en los cuales podría funcionar en los diferentes sistemas operativos móviles.

Las aplicaciones móviles deben ser construidas teniendo el enfoque de la movilidad intrínseco en todo momento, una aplicación móvil no es una aplicación de escritorio o de servidor instalada en un dispositivo móvil, tampoco es una aplicación web funcionando en un dispositivo móvil, es una aplicación desarrollada específicamente para la tener una disponibilidad en todo momento y en todo lugar, debe estar en constante cambio de acuerdo a las necesidades de los usuarios y clientes en momentos específicos, debe movilizar procesos, soluciones, ayudas y apoyos necesarios, en general una aplicación móvil específicamente debe mejorar la experiencia del usuario, hacerle la vida más fácil sea cual sea la aplicación y el dispositivo móvil.

Algunas de las características que deben tener las aplicaciones móviles, ya sean aplicaciones de tipo empresarial, entretenimiento o de uso personal.

Funcionamiento en plataforma única o multiplataforma.

Eficiencia en el manejo de los recursos de hardware y software que se encuentren disponibles en el dispositivo móvil

Interfaz de manejo intuitivo, es decir que no sea complicado el uso de la interfaz de la aplicación.

20 Lección 2 ¿Que es una Aplicación Móvil?. Disponible en internet:<

http://datateca.unad.edu.co/contenidos/233016/EXE_SAM/leccin_2_que_es_una_aplicacin_mvil.html > [con acceso el 20-10-2015 ]

Page 25: ARNOLD STIVEN ALFONSO CONTRERAS

25

Utilizar estándares de programación en la construcción de la aplicación.

Generar una buena documentación de la aplicación.

Utilizar estrategias de seguridad en la aplicación para evitar fallos y problemas de inseguridad.

Encriptar los datos de los usuarios de la aplicación.

Utilizar comunicaciones seguras de la aplicación a los servicios web.

Definir perfiles, roles y procesos de autenticación de usuarios.

Utilizar contraseñas.

Cifrar los datos de la base de datos del dispositivo.

No almacenar datos sensibles en los dispositivos móviles.

Utilizar sistemas de recuperación y localización de dispositivos.

Para concluir lo que se debe trabajar en aplicaciones móviles son el desarrollo de aplicaciones de diferentes tipos empresariales, entrenamiento, educación, gubernamental, ciencia, entre muchas otras, teniendo mucha innovación, emprendimiento, reinvención.

Generar un ecosistema de negocio enfocado en el tema de la movilidad, teniendo en cuenta los contextos regionales, nacionales y mundiales, siendo incluyentes en todos los sentidos, es un mercado emergente que debe ser trabajado desarrollado y madurado.

1.7.3 Marco Conceptual21

Android

Android es un sistema operativo para dispositivos móviles como teléfonos inteligentes y tabletas basado en el núcleo Linux. Es desarrollado por la Open Handset Alliance, la cual es liderada por Google, usando diversos conjuntos de herramientas de software de código abierto para dispositivos moviles.

Fue construido para permitir a los desarrolladores la creación de aplicaciones móviles que aprovechan al máximo el uso de todas las herramientas que un dispositivo como este puede ofrecer.

Implementa una arquitectura en la que cualquier aplicación puede obtener acceso a las capacidades del teléfono móvil. Por ejemplo, una aplicación puede llamar una o varias de las funcionalidades básicas de los dispositivos móviles, tales como realizar llamadas, enviar mensajes de texto, o utilizar la cámara, facilitando a los

21 Sistema operativo Android: características y funcionalidad para dispositivos móviles. Disponible en internet:<

http://repositorio.utp.edu.co/dspace/bitstream/11059/2687/1/0053M722.pdfintegrado > [con acceso el 20-10-2015 ]

Page 26: ARNOLD STIVEN ALFONSO CONTRERAS

26

desarrolladores crear experiencias más ricas y con más coherencia para los usuarios.

Está construido sobre el kernel de Linux. Además, se utiliza una máquina personalizada virtual que fue diseñada para optimizarlos recursos de memoria y de hardware en un entorno móvil. Android es de código abierto, y además puede ser libremente ampliado para incorporar nuevas tecnologías de vanguardia que van surgiendo. La plataforma continuará evolucionando a medida que la comunidad de desarrolladores trabajando juntos puedan crear aplicaciones móviles innovadoras.

MÓVIL

Del latín mobilis, la noción de móvil permite el desarrollo de varios conceptos vinculados. En esencia, un móvil es aquello que puede moverse o que se mueve por sí mismo, que no tiene estabilidad o que mueve, ya sea de forma material o moral, algo.

Telefonía móvil

El teléfono móvil es un dispositivo inalámbrico electrónico que permite tener acceso a la red de telefonía celular o móvil. Se denomina celular en la mayoría de países latinoamericanos debido a que el servicio funciona mediante una red de celdas, donde cada antena repetidora de señal es una célula, si bien también existen redes telefónicas móviles satelitales. Su principal característica es su portabilidad, que permite comunicarse desde casi cualquier lugar. La principal función es la comunicación de voz, como el teléfono convencional.

Dispositivos Móviles

Los dispositivos móviles (también conocidos como computadora de mano, «Palmtop» o simplemente handheld) son aparatos de pequeño tamaño, con algunas capacidades de procesamiento, móviles o no, con conexión permanente o intermitente a una red, con memoria limitada, están diseñados para funciones específicas, pero que pueden llevar a cabo otras funciones más generales.

Entorno De Desarrollo Integrado (IDE)

Es un programa compuesto por un conjunto de herramientas para un programador. Puede dedicarse en exclusiva a un solo lenguaje de programación o bien, poder utilizarse para varios. Un IDE es un entorno de programación que ha sido empaquetado como un programa de aplicación, es decir, consiste en un editor de código, un compilador, un depurador y un constructor de interfaz gráfica GUI. Los IDEs pueden ser aplicaciones por si solas o pueden ser parte de aplicaciones existentes. El leguaje Basic por ejemplo puede ser usado dentro de las aplicaciones de Microsoft Office, lo que hace posible escribir sentencias Basic en forma de macros para Word. Los IDEs proveen un marco de trabajo amigable para la mayoría de los lenguajes de programación tales como C++, Java, C#, Basic, Object Pascal.

Page 27: ARNOLD STIVEN ALFONSO CONTRERAS

27

1.8 MARCO METODOLÓGICO

Metodología XP22

Se escogió esta metodología porque permite un desarrollo rápido e incremental. Además, se ejerce un constante contacto con el usuario esto implica que se pueda desarrollar un prototipo y según las historias del usuario se le puedan agregar mejoras al prototipo e identificar problemas.

Definición

La programación extrema es una metodología reciente (tiene alrededor de 5 años) en el desarrollo de software. La filosofía de X.P es satisfacer al completo las necesidades del cliente, por eso lo integra como una parte más del equipo de desarrollo.

X.P fue inicialmente creada para el desarrollo de aplicaciones dónde el cliente no sabe muy bien lo que quiere, lo que provoca un cambio constante en los requisitos que debe cumplir la aplicación. Por este motivo es necesaria una metodología ágil como X.P que se adapta a las necesidades del cliente y dónde la aplicación se va reevaluando en periodos cortos de tiempo.

X.P está diseñada para el desarrollo de aplicaciones que requieran un grupo de programadores pequeño, dónde la comunicación sea más factible que en grupos de desarrollo grandes. La comunicación es un punto importante y debe realizarse entre los programadores, los jefes de proyecto y los clientes.

Historias de Usuario23

Se trata de una lista de características que el cliente necesita que existan en el producto final. Estas constan de dos fases.

• En la primera fase, el cliente describe con sus propias palabras las características y, es el responsable del equipo, el encargado de informarlo de las dificultades técnicas de cada una de ellas y de su coste. A consecuencia de este diálogo, el cliente deja por escrito un conjunto de historias y las ordena en función de la prioridad que tiene para él. De esta manera ya es posible definir unas fechas aproximadas para ellos.

• En la segunda fase, el cliente cogerá las primeras historias a implementar y las dividirá en trabajos a realizar. El cliente también participa, pero hay más peso por parte del equipo de desarrolladores, esto dará como resultado una planificación más exacta. Este método se repetirá para cada historia.

A diferencia de otras técnicas, como puede ser UML, en el caso de XP, se exige que sea el cliente el encargado de escribir los documentos con las

22 Programación Extrema. Disponible en internet:< http://programacionextrema.tripod.com/index.htm > [con acceso el

20-10-2015 ] 23 Programación Extrema. Disponible en internet:< http://eisc.univalle.edu.co/materias/WWW/material/lecturas/xp.pdf>

[con acceso el 20-10-2015 ]

Page 28: ARNOLD STIVEN ALFONSO CONTRERAS

28

especificaciones de lo que realmente quiere, como un documento de requisitos de usuario.

En esta fase, el equipo técnico será el 'encargado de catalogar las historias del cliente y asignarles una duración. La norma es que cada historia de usuario tiene que poder ser realizable en un espacio entre una y tres semanas de programación. Las que requieran menos tiempo serán agrupadas, y las que necesiten más serán modificadas o divididas.

Finalmente decir que las historias de los usuarios serán escritas en tarjetas, lo que facilitará que el cliente pueda especificar la importancia relativa entre las diferentes historias de usuario, así como el trabajo de los programadores que podrán catalogarlas correctamente. Este formato también es muy útil en el momento de las pruebas de aceptación.

Principales Características

Comunicación: Los programadores están en constante comunicación con los clientes para satisfacer sus requisitos y responder rápidamente a los cambios de los mismos. Muchos problemas que surgen en los proyectos se deben a que después de concretar los requisitos que debe cumplir el programa, no hay una revisión de los mismos, pudiendo dejar olvidados puntos importantes.

Simplicidad: Codificación, diseños simples y claros. Muchos diseños son tan complicados que cuando se quieren ampliar resulta imposible hacerlo, por eso se tienen que desechar y partir de cero.

Realimentación (Feedback): Mediante la realimentación se ofrece al cliente la posibilidad de conseguir un sistema apto a sus necesidades ya que se le va mostrando el proyecto a tiempo para poder ser cambiado y poder retroceder a una fase anterior para rediseñarlo a su gusto.

Coraje: Se debe tener coraje o valentía para cumplir los tres puntos anteriores; Hay que tener valor para comunicarse con el cliente y enfatizar algunos puntos, a pesar de que esto pueda dar sensación de ignorancia por parte del programador, hay que tener coraje para mantener un diseño simple y no optar por el camino más fácil y por último hay que tener valor y confiar en que la realimentación sea efectiva

Fases de la Programación Extrema

Exploración

En esta fase, los clientes plantean a grandes rasgos las historias de usuario que son de interés para la primera entrega del producto. Al mismo tiempo el

Page 29: ARNOLD STIVEN ALFONSO CONTRERAS

29

equipo de desarrollo se familiariza con las herramientas, tecnologías y prácticas que se utilizarán en el proyecto. Se prueba la tecnología y se exploran las posibilidades de la arquitectura del sistema construyendo un prototipo. La fase de exploración toma de pocas semanas a pocos meses, dependiendo del tamaño y familiaridad que tengan los programadores con la tecnología.

Planificación de la Entrega (Release)

En esta fase el cliente establece la prioridad de cada historia de usuario, y correspondientemente, los programadores realizan una estimación del esfuerzo necesario de cada una de ellas. Se toman acuerdos sobre el contenido de la primera entrega y se determina un cronograma en conjunto con el cliente. Una entrega debería obtenerse en no más de tres meses. Esta fase dura unos pocos días. Las estimaciones de esfuerzo asociado a la implementación de las historias la establecen los programadores utilizando como medida el punto. Un punto, equivale a una semana ideal de programación. Las historias generalmente valen de 1 a 3 puntos. Por otra parte, el equipo de desarrollo mantiene un registro de la “velocidad” de desarrollo, establecida en puntos por iteración, basándose principalmente en la suma de puntos correspondientes a las historias de usuario que fueron terminadas en la última iteración. La planificación se puede realizar basándose en el tiempo o el alcance. La velocidad del proyecto es utilizada para establecer cuántas historias se pueden implementar antes de una fecha determinada o cuánto tiempo tomará implementar un conjunto de historias. Al planificar por tiempo, se multiplica el número de iteraciones por la velocidad del proyecto, determinándose cuántos puntos se pueden completar. Al planificar según alcance del sistema, se divide la suma de puntos de las historias de usuario seleccionadas entre la velocidad del proyecto, obteniendo el número de iteraciones necesarias para su implementación.

Iteraciones

Esta fase incluye varias iteraciones sobre el sistema antes de ser entregado. El Plan de Entrega está compuesto por iteraciones de no más de tres semanas. En la primera iteración se puede intentar establecer una arquitectura del sistema que pueda ser utilizada durante el resto del proyecto. Esto se logra escogiendo las historias que fuercen la creación de esta arquitectura, sin embargo, esto no siempre es posible ya que es el

Page 30: ARNOLD STIVEN ALFONSO CONTRERAS

30

cliente quien decide qué historias se implementarán en cada iteración (para maximizar el valor de negocio). Al final de la última iteración el sistema estará listo para entrar en producción. Los elementos que deben tomarse en cuenta durante la elaboración del Plan de la Iteración son: historias de usuario no abordadas, velocidad del proyecto, pruebas de aceptación no superadas en la iteración anterior y tareas no terminadas en la iteración anterior. Todo el trabajo de la iteración es expresado en tareas de programación, cada una de ellas es asignada a un programador como responsable, pero llevadas a cabo por parejas de programadores.

Producción

La fase de producción requiere de pruebas adicionales y revisiones de rendimiento antes de que el sistema sea trasladado al entorno del cliente. Al mismo tiempo, se deben tomar decisiones sobre la inclusión de nuevas características a la versión actual, debido a cambios durante esta fase. Es posible que se rebaje el tiempo que toma cada iteración, de tres a una semana. Las ideas que han sido propuestas y las sugerencias son documentadas para su posterior implementación (por ejemplo, durante la fase de mantenimiento).

Mantenimiento

Mientras la primera versión se encuentra en producción, el proyecto XP debe mantener el sistema en funcionamiento al mismo tiempo que desarrolla nuevas iteraciones. Para realizar esto se requiere de tareas de soporte para el cliente. De esta forma, la velocidad de desarrollo puede bajar después de la puesta del sistema en producción. La fase de mantenimiento puede requerir nuevo personal dentro del equipo y cambios en su estructura.

Muerte del Proyecto

Es cuando el cliente no tiene más historias para ser incluidas en el sistema. Esto requiere que se satisfagan las necesidades del cliente en otros aspectos como rendimiento y confiabilidad del sistema. Se genera la documentación final del sistema y no se realizan más cambios en la arquitectura. La muerte del proyecto también ocurre cuando el sistema no genera los beneficios esperados por el cliente o cuando no hay presupuesto para mantenerlo.

Page 31: ARNOLD STIVEN ALFONSO CONTRERAS

31

Bliseo24

Es un método para aprendizaje del sistema braille para adultos alfabetizados. Empieza profundizando en el conocimiento especial del signo generador y va introduciendo las letras de la primera serie (de la «a» a la «j»), para seguir con la siguiente serie, añadiendo el punto 3 (de la «k» a la «t», excepto la «ñ») y las 5 últimas letras, añadiendo el punto 6.

1.9 FACTIBILIDAD

1.9.1 Técnica

La solución técnica planteada involucra una serie de herramientas las cuales son:

Eclipse25: entorno de desarrollo integrado, de Código abierto y Multiplataforma. Mayoritariamente se utiliza para desarrollar lo que se conoce como "Aplicaciones de Cliente Enriquecido", opuesto a las aplicaciones "Cliente-liviano" basadas en navegadores. Es una potente y completa plataforma de Programación, desarrollo y compilación de elementos tan variados como sitios web, programas en C++ o aplicaciones Java. No es más que un entorno de desarrollo integrado (IDE) en el que se pueden encontrar todas las herramientas y funciones necesarias para realizar el proyecto.

Ventajas en la utilización de Eclipse

1- El entorno de desarrollo integrado (IDE) de Eclipse emplea módulos (en inglés plug-in) para proporcionar toda su funcionalidad al frente de la Plataforma de Cliente rico, a diferencia de otros entornos monolíticos donde las funcionalidades están todas incluidas, las necesite el usuario o no.

2- Este mecanismo de módulos es una plataforma ligera para componentes de software. Adicionalmente a permitirle a Eclipse extenderse usando otros lenguajes de programación como son C/C++ y Python, permite a Eclipse trabajar con lenguajes para procesado de texto como LaTeX, aplicaciones en red como Telnet y Sistema de gestión de base de datos.

3-La arquitectura plug-in permite escribir cualquier extensión deseada en el ambiente, como sería Gestión de la configuración. Se provee soporte para Java y CVS en el SDK de Eclipse. Y no tiene por qué ser usado únicamente para soportar otrosLenguajes de programación.

4- La definición que da el proyecto Eclipse acerca de su Software es: "una especie de herramienta universal - un IDE abierto y extensible para todo y nada en particular".

24 Educación inclusiva: discapacidad visual módulo 5: el sistema braille. Disponible en internet:<

http://www.ite.educacion.es/formacion/materiales/129/cd/pdf/m5_dv.pdf> [con acceso el 15-09-2015 ] 25 Eclipse, entorno de desarrollo integrado. Disponible en internet:<

http://www.ecured.cu/index.php/Eclipse,_entorno_de_desarrollo_integrado > [con acceso el 20-10-2015 ]

Page 32: ARNOLD STIVEN ALFONSO CONTRERAS

32

En cuanto a la utilización de eclipse para la creación de aplicaciones clientes se puede decir que:

1- Eclipse provee al programador con Frameworks muy ricos para el desarrollo de aplicaciones gráficas, definición y manipulación de modelos de Software, Aplicaciones web, etc. Por ejemplo, GEF (Graphic Editing Framework - Framework para la edición gráfica) es un plug-in de Eclipse para el desarrollo de editores visuales que pueden ir desde procesadores de texto wysiwyg hasta editores de diagramas UML, interfaces gráficas para el usuario (GUI), etc. Dado que los editores realizados con GEF "viven" dentro de Eclipse, además de poder ser usados conjuntamente con otros plugins, hacen uso de su interfaz gráfica personalizable y profesional.

2- El SDK de Eclipse incluye las herramientas de desarrollo de Java, ofreciendo un IDE con un compilador de Java interno y un modelo completo de los archivos fuente de Java. Esto permite técnicas avanzadas de refactorización y análisis de código.

3- El IDE también hace uso de un espacio de trabajo, en este caso un grupo de metadata en un espacio para archivos plano, permitiendo modificaciones externas a los archivos en tanto se refresque el espacio de trabajo correspondiente.

Bases de Datos SQLite26: es un motor de bases de datos muy popular en la actualidad por ofrecer características tan interesantes como su pequeño tamaño, no necesitar servidor, precisar poca configuración, ser transaccional y por supuesto ser de código libre.

Android incorpora de serie todas las herramientas necesarias para la creación y gestión de bases de datos SQLite, y entre ellas una completa API para llevar a cabo de manera sencilla todas las tareas necesarias. Sin embargo, en este primer artículo sobre bases de datos en Android no vamos a entrar en mucho detalle con esta API. Por el momento nos limitaremos a ver el código necesario para crear una base de datos, insertaremos algún dato de prueba, y veremos cómo podemos comprobar que todo funciona correctamente.

En Android, la forma típica para crear, actualizar, y conectar con una base de datos SQLite será a través de una clase auxiliar llamada SQLiteOpenHelper, o para ser más exactos, de una clase propia que derive de ella y que debemos personalizar para adaptarnos a las necesidades concretas de nuestra aplicación.

La clase SQLiteOpenHelper tiene tan sólo un constructor, que normalmente no necesitaremos sobrescribir, y dos métodos abstractos, onCreate() y onUpgrade(), que deberemos personalizar con el código necesario para crear nuestra base de datos y para actualizar su estructura respectivamente.

26 Bases de Datos en Android (I): Primeros pasos. . Disponible en internet:< http://www.sgoliver.net/blog/bases-de-

datos-en-android-i-primeros-pasos/> [con acceso el 20-10-2015 ]

Page 33: ARNOLD STIVEN ALFONSO CONTRERAS

33

Smartphone: Es un teléfono inteligente que puede comunicarse a través de Wi-Fi, bluetooth, conexión a internet, envío de mensajería, y con e-mails. Generalmente se define como dispositivo electrónico de mano que integra la funcionalidad de un teléfono celular, PDA o similar. Opera añadiendo funciones de teléfono a un PDA existente o añadiendo funcionalidades "inteligentes", como las funciones del PDA, en un teléfono celular.

1.9.2 Operativa

El ejecutante del proyecto será un estudiante de la Universidad Distrital Francisco José de Caldas el cual cuenta con una serie de conocimientos y habilidades adquiridas a lo largo de su carrera, pero no son suficientes para llevar a cabo el proyecto, por lo tanto se contará con la asesoría del Ingeniero En Sistemas José Vicente Reyes Mozo que es profesor de la Facultad. También se debe contactar a un experto en el lenguaje Braille, por esta razón se cuenta con la asesoría de un tiflólogo, el INCI ofrece estas asesorías por un tiempo determinado.

1.9.3 Legal

En cuanto al marco legal del proyecto, el congreso de la República ha realizado

varias leyes para garantizar el derecho a la educación inclusiva y acceso a las

tecnologías de información a las personas con discapacidad visual, de las cuales

podemos poner como ejemplo la ley 1680 de Noviembre 20 de 2013 “por la cual

se garantiza a las personas ciegas y con baja visión, el acceso a la información, a

las comunicaciones, al conocimiento y a las tecnologías de la información y de las

comunicaciones"27 y la ley 1618 del 27 de Febrero de 2013 "por medio de la cual

se establecen las disposiciones para garantizar el pleno ejercicio de los derechos

de las personas con discapacidad".28

Por otra parte también existe la ley 1341 de julio de 2009 por la cual se “determina

el marco general para la formulación de las políticas públicas que regirán el sector

de las Tecnologías de la Información y las Comunicaciones, su ordenamiento

general, el régimen de competencia, la protección al usuario, así como lo

concerniente a la cobertura, la calidad del servicio, la promoción de la inversión en

el sector y el desarrollo de estas tecnologías, el uso eficiente de las redes y del

espectro radioeléctrico, así como las potestades del Estado en relación con la

planeación, la gestión, la administración adecuada y eficiente de los recursos,

regulación, control y vigilancia del mismo y facilitando el libre acceso y sin

27 Congreso de Colombia, ley no. 1680. Disponible en internet:< http://www.mintic.gov.co/portal/604/articles-

5006_documento.pdf > [con acceso el 27-09-2015 ]

28 Congreso de Colombia, ley estatutaria no. 1618. Disponible en internet:<

http://wsp.presidencia.gov.co/Normativa/Leyes/Documents/2013/LEY%201618%20DEL%2027%20DE%20FEBRERO%20DE%202013.pdf > [con acceso el 27-09-2015 ]

Page 34: ARNOLD STIVEN ALFONSO CONTRERAS

34

discriminación de los habitantes del territorio nacional a la Sociedad de la

Información.”29

En cuanto a la protección del software, o programas de ordenador, de acuerdo con la Decisión Andina 351 de 1993 “la siguiente decisión tiene por finalidad reconocer una adecuada y efectiva protección a los autores y demás titulares de derechos, sobre las obras de ingenio, en el campo literario, artístico o científico, cualquiera quesea el género o forma de expresión y sin importar el mérito literario o artístico ni su destino”.30

En cuanto a las licencias de Software se utilizará la Licencia Pública General Affero que está basada en la GPL de GNU, pero contiene una cláusula adicional que permite a los usuarios interactuar con el programa licenciado a través de una red para recibir el código fuente de ese programa.31

29 Congreso de Colombia, ley no. 1341. Disponible en internet:< http://www.mintic.gov.co/portal/604/articles-

3707_documento.pdf > [con acceso el 20-10-2015 ] 30 Decisión Andina 351 de 1993 Régimen Común sobre derecho de autor y derechos conexos. Disponible en

internet:< http://www.egeda.com.pe/documentos/Decision_351.pdf> [con acceso el 20-10-2015 ] 31 El sistema Operativo GNU. Disponible en internet:< http://www.gnu.org/licenses/licenses.es.html > [con acceso el 20-10-2015 ]

Page 35: ARNOLD STIVEN ALFONSO CONTRERAS

35

1.9.4 Económica

A continuación se dará a conocer la estimación de la factibilidad económica

estimada como se muestra en la siguiente tabla.

Tabla 1. Factibilidad Económica Estimada

Descripción Valor

Hardware Computador: 400 Horas de Internet *($1.000 Pesos c/u) $ 400.000,00

Celular: 70 Horas de uso*(1.200 Pesos c/u) $ 84.000,00

Software Licencia Pública Eclipse (EPL) Licencia Dominio público SQLite Licencia GNU GPL Android

$ 0,00 $ 0,00 $ 0,00

Humano Ejecutante 1: 500 Horas trabajadas *(10,000 día) $ 5.000.000,00

Tiflólogo: 48 Horas trabajadas *(50,000 día) $ 2.400.000,00

Tutor: 48 Horas trabajadas *(30,000 día) $ 1.440.000,00

Otros Libros Desplazamiento, Pruebas

$ 350.000,00 $ 81.000,00

Total $ 9.755.000,00

Page 36: ARNOLD STIVEN ALFONSO CONTRERAS

36

1.10 CRONOGRAMA

1a Fase: Exploración.

Recolección Historias de Usuario.

Recolección de Información

Construcción de Prototipo

2a Fase: Planificación de la Entrega.

Lista inicial de clases

Modelo de interfaz

Modelo lógico

Modelo físico

3ª Fase: Iteraciones.

Elección Historias de Usuario

4ª Fase: Producción.

Realizar Pruebas al Software

Incluir Nuevas características

5ª Fase: Mantenimiento.

Dar Soporte al Usuario

Nuevas Iteraciones

6ª Fase: Muerte del Proyecto.

Comprobar que se satisfacen las necesidades del usuario.

Page 37: ARNOLD STIVEN ALFONSO CONTRERAS

37

1.10.1 Cronograma de Actividades

Page 38: ARNOLD STIVEN ALFONSO CONTRERAS

38

2. ANÁLISIS

2.1 Consulta a fuentes de información apropiadas e identificación de

problemas32

Para empezar, se debe definir el concepto de educación inclusiva el cual

consiste en atender con calidad y equidad las necesidades comunes y

específicas que presentan los estudiantes, y para lograrlo se requiere

desarrollar estrategias organizativas que ofrezcan respuestas eficaces para

abordar la diversidad, implementar formas de enseñanza flexibles e

innovadoras que permitan dar una educación personalizada a estudiantes en

estado de discapacidad o con talentos excepcionales.

Para el tema que nos atañe, las políticas internacionales exigen que las

instituciones educativas se adecuen para hacer efectivos los derechos a la

educación, la participación y la igualdad para todos los niños, niñas, jóvenes y

adultos con discapacidad, los colegios públicos como privados tienen la

obligatoriedad de recibirlos en sus planteles, pero en la mayoría de los casos

los docentes no tienen los conocimientos necesarios para atender a

estudiantes en estado de discapacidad.

Por otra parte, los menores con discapacidad visual tienen temor a no ser

aceptados cuando ingresan en un centro educativo donde la mayoría de sus

compañeros no tienen este tipo de discapacidad, lo cual repercute en su

comportamiento y aprendizaje.33 La educación inclusiva sugiere que todos los

estudiantes pueden aprender, siempre y cuando su entorno educativo ofrezca

condiciones de accesibilidad para todos y provea experiencias de aprendizaje

significativas para todos los actores que allí se encuentran. Lo que garantiza

que todos los niños y niñas de una comunidad determinada puedan estudiar

juntos.

2.2 Análisis de alternativas de solución

Como primera medida, se debe buscar la manera para que los docentes

puedan adquirir conocimientos en el lenguaje braille para poder garantizar que

el estudiante en estado de discapacidad reciba una educación personalizada,

los docentes recurren a un tiflólogo para que les ayuden a preparar material

para sus alumnos con discapacidad visual, lo que implica que se tengan

dificultades para cumplir con los tiempos establecidos para evaluar las

actividades.

32 Colombia avanza hacia una educación inclusiva con calidad (I). Disponible en Internet:<http://www.mineducacion.gov.co/cvn/1665/article-168443.html>[con acceso el 12-03-2016 ] 33 Dificultades de aprendizaje en el alumnado con déficit visual y ciego. Disponible en internet:<http://www.foal.es/sites/default/files/docs/4_dificultad_de_aprendizaje_0.pdf >[con acceso el 12-03-2016]

Page 39: ARNOLD STIVEN ALFONSO CONTRERAS

39

Como alternativa para solucionar este problema, la aplicación cuenta con un

módulo de aprendizaje del lenguaje braille para que el docente pueda adquirir

conocimientos y le sea más fácil enseñarle a su estudiante con discapacidad

visual. Además, se cuenta con el módulo de transcripción con el que se puede

facilitar al docente la elaboración de un material de estudio si no tiene mucho

tiempo para aprender el lenguaje braille.

Para tratar de reducir un poco el temor por parte del niño invidente a no ser

aceptado por sus compañeros, se plantea que la aplicación a desarrollar sea

usada también por sus compañeros para que aprendan el lenguaje braille y

puedan ayudar a su compañero con las lecciones que les son impartidas a

todos. Lo cual puede facilitar a que se forme un ambiente más favorable para

el niño invidente y provea experiencias de aprendizaje significativas, que es lo

que se busca con la educación inclusiva.

2.3 Establecimiento del papel del computador

Actualmente, la mayoría de población tiene acceso a dispositivos móviles ya

sea con fines recreativos, informativos o de carácter laboral, entre otros. El uso

de este tipo de dispositivos más que un lujo se ha convertido en una necesidad

por lo expuesto anteriormente, además este tipo de dispositivos facilitan el

acceso a la información con aplicativos que permiten acceder al aprendizaje de

otros idiomas o reforzar el conocimiento en ciertas áreas.

El dispositivo móvil tiene un papel muy importante en el problema que se

desea tratar y es el de permitir el acceso a información referente al lenguaje

braille en dos áreas específicas que son matemáticas y música. El docente o

una persona (vidente) que quiera aprender el lenguaje o acceder a este tipo de

información pueden usar la aplicación para aprender o realizar sus consultas

en el momento que lo desee para acompañar a un niño o persona invidente en

su proceso educativo.

Por otro lado, se busca que los compañeros de los niños invidentes con acceso

a un dispositivo móvil usen la aplicación y de esta manera se pueda realizar

una mayor interacción con el niño invidente, generando un ambiente de

estudio agradable, con lo que se evitará que el niño presente problemas de

conducta o aprendizaje.34

34 Dificultades de aprendizaje en el alumnado con déficit visual y ciego. Disponible en internet:<http://www.foal.es/sites/default/files/docs/4_dificultad_de_aprendizaje_0.pdf >[con acceso el 13-03-2016]

Page 40: ARNOLD STIVEN ALFONSO CONTRERAS

40

2.4 Selección de la Herramienta de Programación

A continuación se presenta un cuadro comparativo entre 4 lenguajes y/o

herramientas de programación describiendo sus principales características para

determinar cuál de ellas usar en el proyecto.

Tabla 2. Cuadro Comparativo Herramientas De Programación35

Lenguaje y/o Herramienta

Logo Características

LENGUAJE SELECCIONADO

JAVA

Este lenguaje está diseñado para la programación orientada a objetos.

Una plataforma estándar para el desarrollo de aplicaciones.

Abarca un gran tipo de dispositivos limitados no sólo teléfonos móviles

Se puede ahorrar demasiadas líneas de código

Se utiliza en el sistema operativo Android

Se ha convertido en una excelente opción para desarrollar juegos para móviles ya que se puede desarrollar desde un PC y luego ser pasado fácilmente al dispositivo móvil.

PYTHON

Es un lenguaje de programación fácil de aprender y potente.

Es un lenguaje de programación dinámico orientado a objetos que se puede utilizar para muchos tipos de desarrollo de software

Funciona en Windows, Linux / Unix, Mac OS X, OS / 2, computadoras de mano Palm y los teléfonos móviles de Nokia

Código 100% libre Es un lenguaje interpretado,

fuertemente tipado y multiplataforma.

35 CARATERISTÍCAS DE LENGUAJES DE PROGRAMACIÓN PARA DISPOSITIVOS MÓVILES. Disponible en internet: < https://www.xmind.net/m/33M9/> [con acceso el 13-03-2016 ]

Page 41: ARNOLD STIVEN ALFONSO CONTRERAS

41

HTML5

El objetivo de HTML5 no es solo para utilidad en la programación en los navegadores actuales, sino en la gran variedad de dispositivos móviles que hay en el mercado, tales como PDA, tablets, etc.

Se usa el lenguaje HTML5 web móvil para la creación de web móviles y aplicaciones móviles

Es una tecnología sin igual que funciona en las principales plataformas móviles (Phone, iPad, Android, Android Tablet, BlackBerry y Windows Phone 7) como una aplicación instalada y en navegadores móviles.

Tiene un soporte para la reproducción de vídeo sin necesidad de plugins.

Permite efectos visuales y animaciones más atractivas

APP INVENTOR

Es una aplicación

proporcionada por Google. Permite a cualquiera crear

aplicaciones de software para el sistema operativo Android.

Utiliza una interfaz gráfica muy sencilla, ya que permite a los/as usuarios/as arrastrar y soltar objetos visuales para crear una aplicación que pueda ejecutarse en los terminales cuyo sistema operativo sea Android.

No se limita únicamente a juegos , pues también es posible construir aplicaciones para educar

Page 42: ARNOLD STIVEN ALFONSO CONTRERAS

42

3. DISEÑO

3.1 Entorno Para El Diseño Del MEC

Destinatarios:

Esta aplicación está destinada a personas sin discapacidad visual como

docentes, personas que convivan con invidentes o interesados en aprender el

lenguaje braille para que apoyen a un menor con discapacidad visual en su

aprendizaje.

Área de contenido:

La aplicación contará con 4 módulos (Aprendizaje, Glosario, Transcripción y

Evaluación) dentro de estos módulos se encuentra encapsulada la información

referente al lenguaje Braille y su aplicación en dos asignaturas (Música y

Matemáticas) lo que se busca es facilitar al docente u otro usuario acceder a

esta información para que pueda acompañar a un menor con discapacidad

visual en su proceso de aprendizaje.

Necesidad educativa36:

Para el proceso de atención educativa de un alumno con discapacidad visual

se deben garantizar ciertos elementos básicos entre los cuales se pueden

encontrar:

Material didáctico adaptado: loterías, dominó, cajas de texturas, tamaños

y pesos, fichas y otros que sean fácilmente manipulables por él.

Material: Impreso en Braille y Macrotipo que puede ser solicitado en la

sede central del INCI.

Cuentos, libros y cartillas que deben ser adaptadas por los padres y

maestro de apoyo para ser utilizadas por el estudiante.

Impresoras Braille y Software de transcripción: Las características de

estos equipos y programas los hacen particularmente útiles, no solo en

relación con la lectoescritura sino como apoyo a todas las áreas.

De esta forma, la aplicación tiene como objetivo ser una herramienta para que

los docentes, padres o familiares de un menor con discapacidad visual puedan

crear material de apoyo al tener acceso al aprendizaje del idioma Braille.

Además, ya que la aplicación tendrá un módulo de transcripción esto facilitará

adaptar los cuentos u otros textos al lenguaje braille.

36 Orientaciones Pedagógicas para La Atención Educativa a Estudiantes con Limitación Visual ministerio De Educación

Nacional. Disponible en internet:<http://www.colombiaaprende.edu.co/html/micrositios/1752/articles-320691_archivo_2.pdf> [con acceso el 13-03-2016 ]

Page 43: ARNOLD STIVEN ALFONSO CONTRERAS

43

Limitaciones:

o El aplicativo es solo para dispositivos con sistema operativo Android. o La aplicación debe instalarse en el dispositivo, sea celular o Tablet. o El usuario debe tener algunos conocimientos musicales para

entender la parte del glosario dedicada a esta área.

o El módulo de transcripción sólo trabaja con texto, caracteres de tipo

numérico no están soportados.

Recursos para los usuarios:

La aplicación cuenta con menús elaborados con el componente ListView para

facilitar su navegación por la misma, cuando el usuario ingresa al módulo de

glosario puede escoger entre tres opciones (Alfabeto, Música Y Matemáticas)

que están ubicadas en un menú expandible para facilitar su comprensión, cada

opción tiene encapsulada información referente a un tema en específico lo cual

facilita encontrar la información que se desea. Aquí se puede encontrar

imágenes con la representación en Braille del signo o letra deseado.

Soporte lógico que se va a utilizar:

Para el desarrollo del aplicativo se trabajó con: Adroid Studio, SQLite (Base de

Datos), ListView para que el usuario se desplazara de manera más rápida por los

menús y ExpandableListView para encapsular la información referente a cada

asignatura por temas.

3.2 Diseño De La Aplicación

Alcance:

Este proyecto se centra en proporcionar información referente al sistema Braille, facilitar su aprendizaje a personas que lo deseen y ayudar a elaborar material de estudio para que sean usados por un estudiante invidente. En primer lugar se encuentra el módulo de glosario:

Se elabora un menú desplegable para acceder a tres opciones (Alfabeto, Música Y Matemáticas) cada opción tiene encapsulada temas referentes a cada una para facilitar el acceso a la información deseada.

Se desarrollan imágenes referentes a cada símbolo incluido en el glosario para facilitar su comprensión.

En segundo lugar se encuentra el módulo de evaluación:

Se desarrolla test en los que se evalúan los conocimientos adquiridos en el módulo de aprendizaje o según lo aprendido a través del glosario.

Page 44: ARNOLD STIVEN ALFONSO CONTRERAS

44

En tercer lugar se encuentre el módulo de Transcripción:

En este módulo el usuario puede transcribir el texto que digite en el campo asignado a lenguaje Braille.

Contenido: La aplicación está diseñada para que el usuario acceda al contenido disponible a través de tres módulos (Glosario, Evaluación, Transcripción) cada módulo le permite al usuario interactuar de manera diferente con la aplicación: Módulo de Glosario: En este módulo el usuario podrá acceder a toda la signografía disponible por la aplicación en los temas disponibles (Alfabeto, Música y Matemáticas) los cuales están subdivididos en categorías referentes a cada tema. Módulo de Evaluación: En este módulo se encuentran pruebas referentes a cada tema para evaluar el conocimiento que ha adquirido el usuario. Módulo de Transcripción: El módulo de transcripción cuenta con un campo de texto para que el usuario digite lo que deseé transcribir, una vez se presione el botón “transcribir” el texto digitado por el usuario aparecerá en lenguaje braille en un Listview.

3.3 Diseño De La Interfaz

Para que el usuario pueda usar la aplicación necesitará de un dispositivo móvil

(Smartphone o Tablet) que use el sistema operativo Android, para el menú

principal se utilizó el componente Listview para que el usuario pueda navegar

de una forma más sencilla por la aplicación, este menú también cuenta con

imágenes asociadas a cada opción para que sean más fáciles de identificar por

el usuario.

En el módulo se Glosario se cuenta con un ExpandableListView el cual permite

hacer una división más apropiada de la información que se encuentra en esta

sección, lo que evita usar otros elementos para encapsular la información en

categorías respecto al tema a tratar.

En el módulo de transcripción se cuenta con un campo de texto para que el

usuario digite la información que desea transcribir a Braille, una vez se realice

la transcripción se mostrará un grupo de imágenes en un Listview

correspondiente a la transcripción del texto digitado anteriormente por el

usuario.

Page 45: ARNOLD STIVEN ALFONSO CONTRERAS

45

3.4 Diseño Computacional

Diagrama de Caso de Uso

Este diagrama permite ver cómo interactúa el usuario y la aplicación, dando más

detalle a la descripción textual de la descripción de la aplicación. Con base a este

diagrama se puede ver cuáles pueden ser las necesidades de información en cada

escenario de interacción y se puede establecer cuáles pueden ser los algoritmos

que serán usados.

Figura 8. Diagrama de Casos de Uso

Page 46: ARNOLD STIVEN ALFONSO CONTRERAS

46

3.5 Preparación Y Evaluación Del Prototipo

Para saber si los compañeros de los menores invidentes estaban interesados en

aprender el lenguaje Braille ya sea para ayudarlos a ellos, amigos o algún familiar

el ejecutor del proyecto desarrolló una encuesta en la cual se pregunta si les

gustaría aprender el lenguaje, si alguna vez han tomado clases y otras de la

misma índole. El test quedo definido con 10 preguntas de selección múltiple con

única respuesta.

4. FASE DE IMPLEMENTACIÓN

TARJETAS CRC (Clase - Responsabilidad – Colaborador).

Estas tarjetas se dividen en tres secciones que contienen la información del

nombre de la clase, sus responsabilidades y sus colaboradores.

Clase: Es cualquier persona, cosa, evento, concepto, pantalla o reporte.

Responsabilidades: Son sus atributos y métodos.

Colaboradores: Son las demás clases con las que trabaja en conjunto para llevar a

cabo sus responsabilidades

Las Tarjetas CRC sirven para diseñar el sistema en conjunto entre todo el equipo

permiten reducir el modo de pensar procedural y apreciar la tecnología de objetos.

Acentos

Responsabilidades Colaboradores

Atributos Métodos - Ítem

- Menuexp

- ImageView:ImageView

- Letrat: TextView

- letra_ac: ítem

- list: ListView

- arrayletra: List<ítem>

- adapter: ArrayAdapter<item>

- letra_act: item

- letras(): void

- verletra(): void

- getView(int, View, ViewGroup):View

- onCreate(Bundle): void

Page 47: ARNOLD STIVEN ALFONSO CONTRERAS

47

Aprendizaje

Responsabilidades Colaboradores

Atributos Métodos - DbHelper

- Atras: ImageButton

- Siguiente: ImageButton

- Text: TextView

- Imagen: ImageView

- niv: int

- p: int

- dbHp: DbHelper

- db: SQLiteDatabase

- Query: String

- c: Cursor

- texto: String

- Ruta: String

-

- onCreate(Bundle): void

- poner_letras(int): void

- avanzar(): void

Asig_Adapter

Responsabilidades Colaboradores

Atributos Métodos - ctx: Context

- Asignaturas:<<HashMap<String,List<String>>

- Temas: List<String>

- getGroupCount(): int

- getChildrenCount(int): int

- getGroup(int): Object

- getChild(int, int): Object

- getGroupId(int): long

- getChildId(int, int): long

- hasStableIds(): Boolean

- getGroupView(int,boolean,View,ViewGroup):View

- getChildView(int,int,boolean,View,ViewGroup):View

- isChildSelectable(int,int): boolean

cont_ej

Responsabilidades Colaboradores

Atributos Métodos - Ejercicios

- DbHelper

- Cancelar:Button

- Siguiente: Button

- Preg: TextView

- Imgp: ImageView

- r1:RadioButton

- p: int

- niv: int

- aciertos: int

- Resp: String

- BPreg: String

- Ruta: String

- onCreate(Bundle): void

- analizarrespuestas(String): void

- avanzar_nivel(): void

- regresar_nivel(): void

- poner_letras(int): void

Page 48: ARNOLD STIVEN ALFONSO CONTRERAS

48

- Op: String

- Array: String[]

- dbHp: DbHelper

- db: SQLiteDatabase

- Query: String

- r2:RadioButton

- r3:RadioButton

- r4: :RadioButton

DataProvider

Responsabilidades Colaboradores

Atributos Métodos Glosario: List<String>

Musica: List<String> Matematicas: List<String> Det_asig: HashMap<String,List<String>>

- <String,List<String>>getinfo(): static HashMap

DbHelper

Responsabilidades Colaboradores

Atributos Métodos

- DB_NAME: static final String

- DB_SCHEME_VERSION: static final int

- Crea_Us:String

- Crea_Silencio: String

- String Crea_Num

- String Crea_Signos

- String Crea_Notas

- String Crea_PBraille

- String Crea_Braille

- String Ins_Us

- String Ins_Num

- String Ins_Sig

- String Ins_Nota

- String Ins_Silencio

- String Ins_PBraille1

- String Ins_PBraille2

- String Ins_PBraille3

- String Ins_PBraille4

- String Ins_PBraille5

- String Ins_Braille1

- String Ins_Braille2

- String Ins_Braille3

- String Ins_Braille4

- String Ins_Braille5

- void onCreate(db)

- void onUpgrade(SQLiteDatabase,int, int)

Page 49: ARNOLD STIVEN ALFONSO CONTRERAS

49

Ejercicios

Responsabilidades Colaboradores

Atributos Métodos - FloatingActionButton fab

- Cont_ej

- Num_ej

- Sigosmate_ej

- Notas_ej

- Silencios_ej

- HashMap<String,List<String>> lista_asignaturas

- List<String>Lista_temas

- ExpandableListView Exp_list

- Asig_Adapter Adapter

void onCreate(Bundle)

ExpAdapter

Responsabilidades Colaboradores

Atributos Métodos - ctx: Context

- Asignaturas:<<HashMap<String,List<String>>

- Temas: List<String>

- getGroupCount(): int

- getChildrenCount(int): int

- getGroup(int): Object

- getChild(int, int): Object

- getGroupId(int): long

- getChildId(int, int): long

- hasStableIds(): Boolean

- getGroupView(int,boolean,View,ViewGroup):View

- getChildView(int,int,boolean,View,ViewGroup):View

- isChildSelectable(int,int): boolean

Glosario

Responsabilidades Colaboradores

Atributos Métodos - Ítem

- Menuexp

- ImageView:ImageView

- Letrat: TextView

- letra_ac: ítem

- list: ListView

- arrayletra: List<ítem>

- adapter: ArrayAdapter<item>

- letra_act: item

- letras(): void

- verletra(): void

- getView(int, View, ViewGroup):View

- onCreate(Bundle): void

item

Responsabilidades Colaboradores

Atributos Métodos - private String op

- private int img

public void setop(String let) public void setsimb(int simb) public int getimg()

Page 50: ARNOLD STIVEN ALFONSO CONTRERAS

50

public String getop()

Menuexp

Responsabilidades Colaboradores

Atributos Métodos ExpandableListView Exp_list;

HashMap<String,List<String>> lista_asignaturas;+ List<String>Lista_temas Asig_Adapter Adapter;

Música

Responsabilidades Colaboradores

Atributos Métodos - notas

- Menuexp

- ImageView:ImageView

- ImageView2:ImageView

- nota_ac: notas

- list: ListView

- arraynotas: List<ítem>

- adapter: ArrayAdapter<item>

- nota_act: notas

- notas(): void

- verlnotas(): void

- getView(int, View, ViewGroup):View

- onCreate(Bundle): void

notas

Responsabilidades Colaboradores

Atributos Métodos - private int nota

- private int notab

public void setnot(int) public void setnotbb(int) public int getimg() public String getop()

num_ej

Responsabilidades Colaboradores

Atributos Métodos - Ejercicios

- DbHelper

- Cancelar:Button

- Siguiente: Button

- Preg: TextView

- Imgp: ImageView

- r1:RadioButton

- r2:RadioButton

- p: int

- niv: int

- aciertos: int

- Resp: String

- BPreg: String

- Ruta: String

- Op: String

- onCreate(Bundle): void

- analizarrespuestas(String): void

- poner_letras(int): void

Page 51: ARNOLD STIVEN ALFONSO CONTRERAS

51

- Array: String[]

- dbHp: DbHelper

- db: SQLiteDatabase

- Query: String

- r3:RadioButton

- r4:RadioButton

Numeros

Responsabilidades Colaboradores

Atributos Métodos - Ítem

- Menuexp

- ImageView:ImageView

- Letrat: TextView

- letra_ac: ítem

- list: ListView

- arrayletra: List<ítem>

- adapter: ArrayAdapter<item>

- letra_act: item

- num(): void

- vernum(): void

- getView(int, View, ViewGroup):View

- onCreate(Bundle): void

Principal

Responsabilidades Colaboradores

Atributos Métodos - Ítem

- Menuexp

- ImageView:ImageView

- Letrat: TextView

- letra_ac: ítem

- list: ListView

- Aprendizaje

- Ejercicios

- Transcriptor

- arrayop: List<ítem>

- adapter: ArrayAdapter<item>

- letra_act: item

- opciones(): void

- veropciones(): void

- click(): void

- getView(int, View, ViewGroup):View

- onCreate(Bundle): void

signos_mate

Responsabilidades Colaboradores

Atributos Métodos - Ítem

- Menuexp

- ImageView:ImageView

- Letrat: TextView

- letra_ac: ítem

- list: ListView

- arraylnum: List<ítem>

- adapter: ArrayAdapter<item>

- letra_act: item

- num(): void

- vernum(): void

- getView(int, View, ViewGroup):View

- onCreate(Bundle): void

Page 52: ARNOLD STIVEN ALFONSO CONTRERAS

52

Signosmate_ej

Responsabilidades Colaboradores

Atributos Métodos - Ejercicios

- DbHelper

- Cancelar:Button

- Siguiente: Button

- Preg: TextView

- Imgp: ImageView

- r1:RadioButton

- r2:RadioButton

- r3:RadioButton

- r4:RadioButton

- p: int

- niv: int

- aciertos: int

- Resp: String

- BPreg: String

- Ruta: String

- Op: String

- Array: String[]

- dbHp: DbHelper

- db: SQLiteDatabase

- Query: String

- onCreate(Bundle): void

- analizarrespuestas(String): void

- poner_letras(int): void

Silencios

Responsabilidades Colaboradores

Atributos Métodos - notas

- Menuexp

- ImageView:ImageView

- ImageView2:ImageView

- nota_ac: notas

- list: ListView

- arraynotas: List<ítem>

- adapter: ArrayAdapter<item>

- nota_act: notas

- notas(): void

- verlnotas(): void

- getView(int, View, ViewGroup):View

- onCreate(Bundle): void

Silencios_ej

Responsabilidades Colaboradores

Atributos Métodos - Ejercicios

- DbHelper

- Cancelar:Button

- Siguiente: Button

- Preg: TextView

- Imgp: ImageView

- r1:RadioButton

- r2:RadioButton

- r3:RadioButton

- r4:RadioButton

- p: int

- niv: int

- aciertos: int

- Resp: String

- BPreg: String

- Ruta: String

- Op: String

- Array: String[]

- dbHp: DbHelper

- db: SQLiteDatabase

- Query: String

- onCreate(Bundle): void

- analizarrespuestas(String): void

- poner_letras(int): void

Splash

Responsabilidades Colaboradores

Page 53: ARNOLD STIVEN ALFONSO CONTRERAS

53

Atributos Métodos - Principal

- ImageView:

ImageView

- final ImageView ImageView

- final Animation animation

- final Animation animation2

- void onCreate(Bundle)

- void onAnimationStart(Animation)

- void onAnimationEnd(Animation)

- void onAnimationRepeat(Animation)

trans_l

Responsabilidades Colaboradores

Atributos Métodos

- int letra - public void setnot(int)

- public int getnota()

Transcriptor

Responsabilidades Colaboradores

Atributos Métodos - Button button;

- EditText editText;

- ListView list

- FloatingActionButton fab

- Trans_l

- principal

- List<trans_l> arraynotas

- int let

- String car

- View itemView

- trans_l letra_act

- void onCreate(Bundle)

- void verimg()

- void img(String)

5. Fase de Prueba Piloto

Figura 9- Menor con discapacidad visual con sus compañeros de clase

Page 54: ARNOLD STIVEN ALFONSO CONTRERAS

54

Fuente: Autor.

Figura 10- Menor Discapacitado con su docente.

Fuente: Autor.

Page 55: ARNOLD STIVEN ALFONSO CONTRERAS

55

NOTA: La identidad de los menores se encuentra protegida en cumplimiento a la LEY

ESTATUTARIA 1581 DE 2012 para mayor información consultar en el siguiente enlace

http://www.alcaldiabogota.gov.co/sisjur/normas/Norma1.jsp?i=49981

Para saber si las personas se encontraban familiarizadas con el uso de dispositivos

móviles, el sistema de lectura Braille y si estarían interesadas en una aplicación basada

en el mismo, se realizó la siguiente encuesta:

Encuesta Sobre Lenguaje Braille

Nombre: _____________________________________________________

1. ¿Tiene familiares o amigos con discapacidad visual? Si___ No____

Si su respuesta fue si, conteste la pregunta 1.1 de lo contrario siga con la pregunta 2.

1.1 Si su familiar o amigo es invidente, ¿Considera necesario aprender el lenguaje Braille para

acompañarlo en su proceso académico u otros aspectos? Si____ No____

2. ¿Cree usted que aprender el lenguaje Braille le ayudará a socializar más con una persona

invidente? Si__ No__

3. ¿Está Familiarizado(a) con los Dispositivos Móviles? Si____ No____

4. De 1 a 10 ¿Qué tanto conoce sobre el Lenguaje Braille? Siendo 1 muy poco o nada y 10

alto

1 2 3 4 5 6 7 8 9 10

5. ¿Alguna vez le han dado clases sobre el Sistema Braille? Si___ No____

Si su respuesta fue Si conteste la pregunta 5.1 por favor, si su respuesta fue No continúe con

la pregunta 6.

5.1 ¿Qué tan fluida y comprensible resultó? Siendo 1 nada comprensible y 10 perfectamente

comprensible.

1 2 3 4 5 6 7 8 9 10

6. ¿Conoce algún software móvil para aprender el lenguaje Braille? Si____ No____

7. ¿Qué tan interesado(a) estaría de aprender el lenguaje Braille si puede hacerlo desde un

dispositivo movil? Siendo 1 Nada interesado(a) y 10 muy interesado(a).

1 2 3 4 5 6 7 8 9 10

8. De los siguientes Items, ¿Cuál le gustaría encontrar en una aplicación sobre el lenguaje

Braille? (Marque con una X)

Signografía Musical

Signografía Numérica

Alfabeto

Aprendizaje

Test

Transcriptor

Page 56: ARNOLD STIVEN ALFONSO CONTRERAS

56

Ninguna de las anteriores

Todas las anteriores

Fue aplicada a un total de 60 personas que constaba de estudiantes y algunos

docentes, por cuestiones de seguridad e integridad personal el listado de

encuestados no se anexa, pero si en algún momento es requerido se podrá

mostrar a quien así lo disponga.

Resultados obtenidos:

1, ¿Tiene Familiares con discapacidad Visual?

El 37% de los encuestados afirma tener algún familiar o amigo en estado de discapacidad visual.

1.1 Si su familiar o amigo es invidente, ¿Considera necesario aprender el lenguaje Braille para

acompañarlo en su proceso académico u otros aspectos?

63%

37%

¿Tiene familiares o amigos con discapacidad visual?

no

si

33%

67%

Si su familiar o amigo es invidente, ¿Considera necesario aprender el

lenguaje Braille para acompañarlo en su proceso académico u otros aspectos?

no

si

Page 57: ARNOLD STIVEN ALFONSO CONTRERAS

57

Según esta pregunta una gran mayoría está consciente de que deben aprender el lenguaje Braille

para poder ayudar a sus familiares o amigos en algún aspecto.

2. ¿Cree usted que aprender el lenguaje Braille le ayudará a socializar más con una persona

invidente?

De nuevo una gran mayoría piensa que aprender el lenguaje Braille les puede ayudar a socializar

mejor con una persona invidente.

3. ¿Está Familiarizado(a) con los Dispositivos Móviles?

El 77% de los encuestados sabe cómo usar un dispositivo móvil, esto nos indica que es una

buena plataforma para tener una aplicación donde puedan acceder a la información sobre el

lenguaje Braille.

37%

63%

¿Cree usted que aprender el lenguaje Braille le ayudará a socializar más con

una persona invidente?

no

si

23%

77%

¿Está Familiarizado(a) con los Dispositivos Móviles?

no

si

Page 58: ARNOLD STIVEN ALFONSO CONTRERAS

58

4. De 1 a 10 ¿Qué tanto conoce sobre el Lenguaje Braille? Siendo 1 muy poco o nada y 10

alto

En esta pregunta están muy divididos, pero se puede analizar que una gran mayoría no

domina el lenguaje Braille.

5. ¿Alguna vez le han dado clases sobre el Sistema Braille?

Un gran porcentaje no ha recibido adiestramiento sobre este tipo de lenguaje, lo que

indica que las falencias son altas.

13%

12%

11%

9%11%

10%

4%4%

15%

11%

¿De 1 a 10 ¿Qué tanto conoce sobre el Lenguaje Braille? Siendo 1 muy poco o

nada y 10 alto

1

2

3

4

5

6

7

8

9

75%

25%

¿Alguna vez le han dado clases sobre el Sistema Braille?

no

si

Page 59: ARNOLD STIVEN ALFONSO CONTRERAS

59

5.1 ¿Qué tan fluida y comprensible resultó? Siendo 1 nada comprensible y 10 perfectamente

comprensible.

Las personas que tuvieron una clase sobre este lenguaje no quedaron muy conformes en

su gran mayoría, es decir, las clases que recibieron no fueron muy buenas.

6. ¿Conoce algún software móvil para aprender el lenguaje Braille?

El 80% de los encuestados no conoce ningún software móvil que lo ayude a aprender el

lenguaje así que realizar una aplicación para este tipo de dispositivos ayudará a acceder a

in formación sobre este lenguaje a las personas que lo deseen.

15%

23%

35%

12%

15%

¿Qué tan fluida y comprensible resultó? Siendo 1 nada comprensible

y 10 perfectamente comprensible

1

2

3

4

5

80%

20%

¿Conoce algún software móvil para aprender el lenguaje Braille?

no

si

Page 60: ARNOLD STIVEN ALFONSO CONTRERAS

60

7. ¿Qué tan interesado(a) estaría de aprender el lenguaje Braille si puede hacerlo desde un

dispositivo móvil? Siendo 1 Nada interesado(a) y 10 muy interesado(a).

De acuerdo a la gráfica podemos analizar que un sector importante de personas está interesada

en aprender este lenguaje, ya sea para ayudar a sus compañeros o sólo para adquirir este

conocimiento.

3%5%5%

11%

10%

18%2%3%

43%

¿Qué tan interesado(a) estaría de aprender el lenguaje Braille si puede hacerlo desde un

dispositivo movil? Siendo 1 Nada interesado(a) y 10 muy interesado(a).

1

2

3

4

5

6

7

8

10

Page 61: ARNOLD STIVEN ALFONSO CONTRERAS

61

8. De los siguientes Ítems, ¿Cuál le gustaría encontrar en una aplicación sobre el lenguaje

Braille? (Marque con una X)

Un sector importante se sintió atraído por una aplicación que cumpliera con los módulos que se

han propuesto para este proyecto.

Figura 11- Estudiante usando AppBraille

Fuente:Autor.

12%

15%

18%10%8%

37%

De los siguientes Items, ¿Cuál le gustaría encontrar en una aplicación sobre el lenguaje Braille? (Marque con una X)

Alfabeto

Aprendizaje

Ninguna de las anteriores

Signografía Musical

Signografía Numérica

Todas las anteriores

Page 62: ARNOLD STIVEN ALFONSO CONTRERAS

62

Se entregó a aplicación a los interesados en aprender el lenguaje. Dos semanas después volví al

colegio a revisar si ahora socializaban más con sus compañeros invidentes y así fue, los vinculaban

en actividades en las que no participaban antes.

Figura 12- Estudiante ayudando a su compañera a jugar “Cajurzoo” un elemento desarrollado por

un docente del plantel.

Fuente: Autor.

Figura 13- Estudiantes en una celebración con su compañera invidente.

Fuente: Autor.

Page 63: ARNOLD STIVEN ALFONSO CONTRERAS

63

Los Docentes Elsa López, Maritza Castañeda, y Raúl Sánchez manifestaron que la aplicación les

ayudó a mejorar su método de enseñanza con los menores invidentes, y que sus compañeros los

ayudaban a aprender lo que mejoró sus notas un poco. Pero dijeron que algunas veces no los

dejaban aprender por sí mismos, así que esto podría empeorar la situación porque los haría más

dependientes.

9. Fase De Implantación

10. Metodología

Para el desarrollo del presente trabajo, se escogió la metodología XP la cual

implica un desarrollo incremental iterativo de pequeñas partes, con entregas y

pruebas frecuentes, proporciona un flujo de retro-información valioso para detectar

los problemas o desviaciones.

Generalmente se siguen los siguientes pasos:

El cliente define el valor de negocio a implementar

El programador estima el esfuerzo necesario para su implementación

El cliente selecciona qué construir, de acuerdo con sus prioridades y las

restricciones de tiempo

El programador construye ese valor de negocio

Vuelve al paso 1

Las fases que se plantearon para el presente proyecto son:

10.1 Exploración:

Durante esta etapa, se identificaron las historias de usuario más relevantes para la

primera entrega del producto, mientras el programador (ejecutante) se

HARDWARE SOTWARE

Pantalla 768x1280 -dpi Memoria: 5MB libres para su instalación. RAM: 1GB

Sistema Operativo: Android 4.4.4(API 19) o superior posterior hasta Android 4.1.1 (API 16) Aplicaciones: Antivirus. (Opcional) Procesador de texto Visor de imágenes Lector de archivos PDF

Page 64: ARNOLD STIVEN ALFONSO CONTRERAS

64

familiarizaba con las herramientas y buscaba documentación para iniciar con el

proyecto.

10.2 Planificación de La entrega:

En esta etapa se estableció una prioridad para las historias de usuario. Además,

se realizó una estimación del tiempo y esfuerzo que tomaría realizar cada una de

las historias, se determinó un cronograma y la fecha para realizar la primera

entrega.

Las Historias de usuario escogidas para la primera entrega fueron las siguientes:

Historia de Usuario

Número: 1 Nombre: Bienvenida

Usuario: Usuario

Modificación de Historia Número: Iteración Asignada: 1

Prioridad en Negocio (Alta/Media/Baja): Baja Puntos Estimados: 1

Riesgo en Desarrollo (Alta/Media/Baja): Baja Puntos Reales:1

Descripción.

Realizar una animación de bienvenida para que el usuario sienta más interés en la aplicación.

Observaciones

Que sea atractiva a la vista

Historia de Usuario

Número: 2 Nombre: Menú Principal

Usuario: Usuario

Modificación de Historia Número: Iteración Asignada: 1

Prioridad en Negocio (Alta/Media/Baja): Baja Puntos Estimados: 2

Riesgo en Desarrollo (Alta/Media/Baja): Baja Puntos Reales:2

Descripción.

Realizar el menú principal de la aplicación para verificar que sea intuitivo y llamativo.

Observaciones

Debe tener imágenes.

Historia de Usuario

Número: 3 Nombre: Glosario (Alfabeto)

Page 65: ARNOLD STIVEN ALFONSO CONTRERAS

65

Usuario: Usuario

Modificación de Historia Número: Iteración Asignada: 1

Prioridad en Negocio (Alta/Media/Baja): Media Puntos Estimados: 2

Riesgo en Desarrollo (Alta/Media/Baja): Media Puntos Reales:2

Descripción.

Realizar la primera parte del glosario, es decir la parte que contiene el alfabeto en braille.

Observaciones

Se debe determinar fácilmente la representación de cada letra.

La primera entrega se estableció en 5 semanas y se cumplió con el plazo

establecido.

10.3 Iteraciones:

En esta fase se estableció el siguiente pasó a seguir antes de entrar en la fase

de producción, en esta etapa lo recomendable es realizar iteraciones que no

tomen más de tres semanas y determinar una arquitectura que se pueda

reutilizar durante el proyecto; ya que una de las prácticas de Xp es

Implementar la solución más simple que pueda funcionar. Por lo tanto las

siguientes iteraciones tienen como objetivo terminar el glosario.

Historia de Usuario

Número: 4 Nombre: Glosario (Dividir en Categorías)

Usuario: Usuario

Modificación de Historia Número:3 Iteración Asignada: 2

Prioridad en Negocio (Alta/Media/Baja): Media Puntos Estimados: 2

Riesgo en Desarrollo (Alta/Media/Baja): Alta Puntos Reales:2

Descripción.

Realizar la división del glosario por las categorías que se quieren ubicar allí.

Observaciones

Agrupar el glosario por asignaturas.

Historia de Usuario

Número: 5 Nombre: Glosario (Matemáticas)

Page 66: ARNOLD STIVEN ALFONSO CONTRERAS

66

Usuario: Usuario

Modificación de Historia Número: Iteración Asignada: 2

Prioridad en Negocio (Alta/Media/Baja): Baja Puntos Estimados: 1

Riesgo en Desarrollo (Alta/Media/Baja): Baja Puntos Reales:1

Descripción.

Agregar la parte numérica del Braille al glosario dentro de la categoría “Matemáticas”

Observaciones

El glosario debe estar agrupado por categorías.

Historia de Usuario

Número: 6 Nombre: Glosario (Música)

Usuario: Usuario

Modificación de Historia Número: Iteración Asignada: 3

Prioridad en Negocio (Alta/Media/Baja): Baja Puntos Estimados: 1

Riesgo en Desarrollo (Alta/Media/Baja): Baja Puntos Reales:1

Descripción.

Agregar al glosario las notas musicales en braille.

Observaciones

Agregar la representación por notas y figuras.

Historia de Usuario

Número: 7 Nombre: Glosario (agregar acentuación al alfabeto)

Usuario: Usuario

Modificación de Historia Número:3 Iteración Asignada: 3

Prioridad en Negocio (Alta/Media/Baja): Baja Puntos Estimados: 1

Riesgo en Desarrollo (Alta/Media/Baja): Baja Puntos Reales:1

Descripción.

Agregar una lista de las vocales con tilde y su representación en Braille.

Observaciones

Que esté dentro de la categoría alfabeto.

Page 67: ARNOLD STIVEN ALFONSO CONTRERAS

67

Historia de Usuario

Número: 8 Nombre: Glosario (Signos Matemáticos)

Usuario: Usuario

Modificación de Historia Número:5 Iteración Asignada: 3

Prioridad en Negocio (Alta/Media/Baja): Baja Puntos Estimados: 1

Riesgo en Desarrollo (Alta/Media/Baja): Baja Puntos Reales:1

Descripción.

Agregar una lista de signos matemáticos Básicos en Braille.

Observaciones

Debe estar en la sección de Matemáticas.

Las iteraciones 2 y 3 tomaron 3 semanas respectivamente en ser completadas,

por lo que se cumplió el objetivo de hacer iteraciones que no sobrepasaran el

tiempo recomendado. Se terminó el primer módulo y se decidió que ya estaba listo

para entrar a la fase de producción y hacer unas pruebas preliminares.

10.4 Producción:

Durante esta etapa se realizaron pruebas preliminares, se encontró un problema

con la aplicación, este era que las actividades se ejecutaban en segundo plano al

cambiar a otra lo que hacía que se consumiera más recursos de los esperados; se

sugirió solucionar este problema y agregar nuevas característica a la aplicación

antes de pasar a la fase de Mantenimiento.

Historia de Usuario

Número: 9 Nombre: Finalizar Actividades

Usuario: Usuario

Modificación de Historia Número: Iteración Asignada: 4

Prioridad en Negocio (Alta/Media/Baja): Baja Puntos Estimados: 1

Riesgo en Desarrollo (Alta/Media/Baja): Baja Puntos Reales:1

Descripción.

Las actividades se ejecutan en segundo plano, al presionar el botón “regresar” del .,dispositivo se regresa a las actividades que se abrieron anteriormente.

Observaciones

Cuando pase de una actividad a otra no se debe ejecutar en segundo plano.

Page 68: ARNOLD STIVEN ALFONSO CONTRERAS

68

Historia de Usuario

Número: 10 Nombre: Glosario (Silencios Musicales)

Usuario: Usuario

Modificación de Historia Número:6 Iteración Asignada: 4

Prioridad en Negocio (Alta/Media/Baja): Baja Puntos Estimados: 1

Riesgo en Desarrollo (Alta/Media/Baja): Baja Puntos Reales:1

Descripción.

Agregar una lista de la representación de los Silencios Musicales en Braille.

Observaciones

Debe estar en la sección de Música.

Historia de Usuario

Número: 11 Nombre: Base de Datos

Usuario: Usuario

Modificación de Historia Número: Iteración Asignada: 5

Prioridad en Negocio (Alta/Media/Baja): Alta Puntos Estimados: 2

Riesgo en Desarrollo (Alta/Media/Baja): Alta Puntos Reales:2

Descripción.

Crear una base de datos para almacenar los ejercicios que se van a plantear para reforzar.

Observaciones

Historia de Usuario

Número: 12 Nombre: Transcriptor

Usuario: Usuario

Modificación de Historia Número: Iteración Asignada: 6

Prioridad en Negocio (Alta/Media/Baja): Alta Puntos Estimados: 2

Riesgo en Desarrollo (Alta/Media/Baja): Alta Puntos Reales:2

Descripción.

Realizar la Programación del módulo de transcripción

Observaciones

Page 69: ARNOLD STIVEN ALFONSO CONTRERAS

69

Debe transcribir el texto que el usuario digite.

Historia de Usuario

Número: 13 Nombre: Evaluación

Usuario: Usuario

Modificación de Historia Número:11 Iteración Asignada: 7

Prioridad en Negocio (Alta/Media/Baja): Alta Puntos Estimados: 2

Riesgo en Desarrollo (Alta/Media/Baja): Alta Puntos Reales:2

Descripción.

Realizar la programación del módulo de Evaluación, agregar una prueba.

Observaciones

El examen se debe cargar desde la base de datos.

Historia de Usuario

Número: 14 Nombre: Evaluación

Usuario: Usuario

Modificación de Historia Número:13 Iteración Asignada: 7

Prioridad en Negocio (Alta/Media/Baja): Media Puntos Estimados: 1

Riesgo en Desarrollo (Alta/Media/Baja): Baja Puntos Reales:1

Descripción.

Agregar los exámenes de los temas que trata la aplicación.

Observaciones

El usuario ingresa al módulo de examen y desde allí debe poder elegir la evaluación del tema que deseé, algo parecido al glosario.

Con la última iteración se considera que se cumplió con los requerimientos para

pasar a la fase de mantenimiento y realizar nuevas pruebas a la aplicación.

10.5 Mantenimiento:

En esta etapa se considera finalizada la primera versión de la aplicación, después

de las pruebas elaboradas se determinaros nuevas iteraciones para mejorar la

aplicación.

Page 70: ARNOLD STIVEN ALFONSO CONTRERAS

70

Historia de Usuario

Número: 15 Nombre: Aprendizaje

Usuario: Usuario

Modificación de Historia Número: Iteración Asignada: 8

Prioridad en Negocio (Alta/Media/Baja): Media Puntos Estimados: 1

Riesgo en Desarrollo (Alta/Media/Baja): Baja Puntos Reales:1

Descripción.

Desarrollar un módulo de aprendizaje para que el usuario pueda entender mejor el lenguaje Braille.

Observaciones

La información que va a usar este módulo debe tomarse de la base de datos.

Historia de Usuario

Número: 16 Nombre: Error Evaluación

Usuario: Usuario

Modificación de Historia Número:14 Iteración Asignada: 8

Prioridad en Negocio (Alta/Media/Baja): Baja Puntos Estimados: 1

Riesgo en Desarrollo (Alta/Media/Baja): Baja Puntos Reales:1

Descripción.

La evaluación de uno de los niveles de Braille es incorrecta, porque se está tomando el nivel 4 como 5 y viceversa.

Observaciones

Modificar la base de datos.

Historia de Usuario

Número: 17 Nombre: Transcriptor

Usuario: Usuario

Modificación de Historia Número:12 Iteración Asignada: 9

Prioridad en Negocio (Alta/Media/Baja): Alta Puntos Estimados: 2

Riesgo en Desarrollo (Alta/Media/Baja): Media Puntos Reales:2.5

Descripción.

El método en que se transcribe el texto es algo ineficiente, se recomienda buscar otra manera de mostrar la transcripción.

Observaciones

Page 71: ARNOLD STIVEN ALFONSO CONTRERAS

71

Se recomienda generar un documento o algo parecido, donde el usuario pueda usar de forma eficiente al material generado.

7.6 Muerte Del Proyecto:

Con la iteración número 9 se alcanza la Muerte del proyecto, tanto el cliente, tester

y el Coach no tienen más historias de usuario para agregar al proyecto. Se deja

en manos del programador hacer una revisión exhaustiva y agregar correcciones

si lo cree necesario.

Después de trabajar un máximo de 40 horas por semana como lo recomienda la

metodología, porque el trabajo extra desmotiva al equipo; se calculó que se

trabajaron un total de 980 horas.

Roles:

En la metodología XP existen diferentes roles y responsabilidades para llevar a

cabo las tareas y los planes durante el proceso de desarrollo los cuales son:

El programador: escribe las pruebas unitarias y produce el código del

sistema. Define las tareas que conlleva cada historia de usuario, y estima el

tiempo que requerirá cada una. El ejecutante (Arnold Alfonso) fue el

encargado de asumir este rol.

El cliente escribe las historias de usuario y las pruebas funcionales para

validar su implementación. Asigna la prioridad a las historias de usuario y

decide cuáles se implementan en cada iteración centrándose en aportar

mayor valor al negocio.

El ejecutante asumió el rol de cliente, junto con la ayuda de una amiga

(Nathaly Jaimes), se consideró que el cliente debería ser alguien externo al

grupo de trabajo que tuviera conocimientos en el área para evaluar

adecuadamente la aplicación.

El encargado de pruebas ayuda al cliente a escribir las pruebas

funcionales. Ejecuta las pruebas regularmente, difunde los resultados en el

equipo y es responsable de las herramientas de soporte para pruebas. Los

alumnos y docentes que probaron la aplicación fueron los encargados de

asumir este rol.

El entrenador es responsable del proceso global. Experto en XP, provee

de las guías a los miembros del equipo para que se apliquen las prácticas

XP y se siga el proceso correctamente. Determina la tecnología y

metodologías a usar por el equipo de desarrollo.

José Vicente Reyes fue el responsable del proceso, brindando asesorías y

seguimiento al desarrollo del proyecto.

Page 72: ARNOLD STIVEN ALFONSO CONTRERAS

72

PRUEBAS DE ACEPTACIÓN

Permite confirmar que la historia ha sido implementada correctamente:

CASO DE PRUEBA DE ACEPTACIÓN

Código: 1 Historia de Usuario: 1

Nombre: Bienvenida.

Descripción: Realizar una animación de bienvenida para que el usuario sienta más interés en la aplicación.

Condiciones de Ejecución: La animación debe ejecutarse al iniciar la aplicación.

Entrada/Pasos de ejecución: 1. Se debe ejecutar la aplicación en el dispositivo. 2. Se debe validar que sea agradable para el usuario.

Resultado esperado: Cuando se ejecuté la animación debe proceder al menú principal.

Evaluación de la prueba: Positiva.

CASO DE PRUEBA DE ACEPTACIÓN

Código: 3 Historia de Usuario: 3

Nombre: Glosario (Alfabeto).

Descripción: Realizar la primera parte del glosario, es decir la parte que contiene el alfabeto en braille

Condiciones de Ejecución: El menú debe enviar al usuario a una actividad donde pueda acceder al glosario y consultar el alfabeto.

Entrada/Pasos de ejecución: 1. Se debe ejecutar la aplicación en el dispositivo. 2. Se debe cargar la animación. 3. Debe aparecer el menú principal. 4. Al acceder al glosario este debe mostrar la opción de consultar el alfabeto.

Resultado esperado: Se debe determinar fácilmente la representación de cada letra.

Evaluación de la prueba: Positiva.

CASO DE PRUEBA DE ACEPTACIÓN

Código: 4 Historia de Usuario: 4

Nombre: Glosario (Dividir en Categorías).

Descripción: Realizar la división del glosario por las categorías que se quieren ubicar allí.

Condiciones de Ejecución: Al entrar al glosario, este debe estar dividido por categorías.

Entrada/Pasos de ejecución:

Page 73: ARNOLD STIVEN ALFONSO CONTRERAS

73

1. Se debe ejecutar la aplicación en el dispositivo. 2. Acceder al glosario desde el menú principal. 3. Cargar el módulo dividido en categorías.

Resultado esperado: Se debe poder elegir la categoría que se desee consultar.

Evaluación de la prueba: Positiva.

CASO DE PRUEBA DE ACEPTACIÓN

Código: 5 Historia de Usuario: 5

Nombre: Glosario (Matemáticas).

Descripción: Agregar la parte numérica del Braille al glosario dentro de la categoría “Matemáticas”.

Condiciones de Ejecución: El glosario debe estar dividido en categorías y subcategorías.

Entrada/Pasos de ejecución: 1. Se debe ejecutar la aplicación en el dispositivo. 2. Acceder al glosario desde el menú principal. 3. Cargar el módulo dividido en categorías. 4. Elegir matemáticas y acceder a la opción para consultar los números.

Resultado esperado: Cuando se elija la categoría de números dentro de matemáticas se deben mostrar los números y su representación en braille.

Evaluación de la prueba: Positiva.

CASO DE PRUEBA DE ACEPTACIÓN

Código: 6 Historia de Usuario: 6

Nombre: Glosario (Música).

Descripción: Agregar al glosario las notas musicales en braille.

Condiciones de Ejecución: El glosario debe estar dividido en categorías y subcategorías.

Entrada/Pasos de ejecución: 1. Se debe ejecutar la aplicación en el dispositivo. 2. Acceder al glosario desde el menú principal. 3. Cargar el módulo dividido en categorías. 4. Elegir música y acceder a la opción para consultar las notas.

Resultado esperado: Cuando se elija la categoría de notas dentro de música se deben mostrar las notas y su representación en braille.

Evaluación de la prueba: Positiva.

Page 74: ARNOLD STIVEN ALFONSO CONTRERAS

74

CASO DE PRUEBA DE ACEPTACIÓN

Código: 7 Historia de Usuario: 7

Nombre: Glosario (agregar acentuación al alfabeto).

Descripción: Agregar una lista de las vocales con tilde y su representación en Braille.

Condiciones de Ejecución: El glosario debe estar dividido en categorías y subcategorías.

Entrada/Pasos de ejecución: 1. Se debe ejecutar la aplicación en el dispositivo. 2. Acceder al glosario desde el menú principal. 3. Cargar el módulo dividido en categorías. 4. Elegir alfabeto y acceder a la opción para consultar los acentos.

Resultado esperado: Cuando se elija la categoría de acentos dentro de alfabeto se deben mostrar las vocales acentuadas y su representación en braille.

Evaluación de la prueba: Positiva.

CASO DE PRUEBA DE ACEPTACIÓN

Código: 8 Historia de Usuario: 8

Nombre: Glosario (Signos Matemáticos).

Descripción: Agregar una lista de signos matemáticos Básicos en Braille.

Condiciones de Ejecución: El glosario debe estar dividido en categorías y subcategorías.

Entrada/Pasos de ejecución: 1. Se debe ejecutar la aplicación en el dispositivo. 2. Acceder al glosario desde el menú principal. 3. Cargar el módulo dividido en categorías. 4. Elegir Matemáticas y acceder a la opción para consultar los signos

matemáticos.

Resultado esperado: Cuando se elija la categoría de signos matemáticos dentro de matemáticas se deben mostrar los signos básicos y su representación en braille.

Evaluación de la prueba: Positiva.

CASO DE PRUEBA DE ACEPTACIÓN

Código: 9 Historia de Usuario: 9

Nombre: Finalizar Actividades.

Descripción: Las actividades se ejecutan en segundo plano, al presionar el botón “regresar” del dispositivo se regresa a las actividades que se abrieron anteriormente.

Condiciones de Ejecución: Se debe estar ejecutando la aplicación.

Entrada/Pasos de ejecución:

Page 75: ARNOLD STIVEN ALFONSO CONTRERAS

75

1. Se debe ejecutar la aplicación en el dispositivo. 2. Navegar por la aplicación 3. Al presionar la tecla “regresar” del dispositivo se debe salir de ella.

Resultado esperado: Al presionar la tecla “regresar” del dispositivo se debe salir de la aplicación.

Evaluación de la prueba: Positiva.

CASO DE PRUEBA DE ACEPTACIÓN

Código: 10 Historia de Usuario: 10

Nombre: Glosario (Silencios Musicales).

Descripción: Agregar una lista de la representación de los Silencios Musicales en Braille.

Condiciones de Ejecución: El glosario debe estar dividido en categorías y subcategorías.

Entrada/Pasos de ejecución: 1. Se debe ejecutar la aplicación en el dispositivo. 2. Acceder al glosario desde el menú principal. 3. Cargar el módulo dividido en categorías. 4. Elegir Música y acceder a la opción para consultar los silencios musicales.

Resultado esperado: Cuando se elija la categoría de silencios musicales dentro de música se deben mostrar los silencios y su representación en braille.

Evaluación de la prueba: Positiva.

CASO DE PRUEBA DE ACEPTACIÓN

Código: 11 Historia de Usuario: 11

Nombre: Base de Datos.

Descripción: Crear una base de datos para almacenar los ejercicios que se van a plantear para reforzar.

Condiciones de Ejecución: La base de datos se debe crear cuando inicie la aplicación.

Entrada/Pasos de ejecución: 1. Se debe ejecutar la aplicación en el dispositivo. 2. Se debe crear la base de datos.

Resultado esperado: La base de datos se debe crear cuando inicie la aplicación.

Evaluación de la prueba: Positiva.

CASO DE PRUEBA DE ACEPTACIÓN

Page 76: ARNOLD STIVEN ALFONSO CONTRERAS

76

Código: 12 Historia de Usuario: 12

Nombre: Transcriptor.

Descripción: Realizar la Programación del módulo de transcripción.

Condiciones de Ejecución: Se debe acceder al transcriptor desde el menú principal.

Entrada/Pasos de ejecución: 1. Se debe ejecutar la aplicación en el dispositivo. 2. Se debe acceder al módulo de transcripción.

Resultado esperado: Digitar texto en el campo designado y realizar una transcripción.

Evaluación de la prueba: Positiva.

CASO DE PRUEBA DE ACEPTACIÓN

Código: 13 Historia de Usuario: 13

Nombre: Evaluación.

Descripción: Realizar la programación del módulo de Evaluación, agregar una prueba.

Condiciones de Ejecución: El módulo de evaluación debe cargar un examen desde la base de datos.

Entrada/Pasos de ejecución: 1. Se debe ejecutar la aplicación en el dispositivo. 2. Se debe acceder al módulo de Evaluación. 3. Escoger un examen.

Resultado esperado: Cuando se cargue el examen, se debe poder solucionar por el usuario.

Evaluación de la prueba: Positiva.

CASO DE PRUEBA DE ACEPTACIÓN

Código: 14 Historia de Usuario: 14

Nombre: Evaluación.

Descripción: Agregar los exámenes de los temas que trata la aplicación.

Condiciones de Ejecución: El módulo de evaluación debe estar completo.

Entrada/Pasos de ejecución: 1. Se debe acceder al módulo de Evaluación. 2. Escoger un examen.

Resultado esperado: El módulo de evaluación debe tener los exámenes cargados.

Page 77: ARNOLD STIVEN ALFONSO CONTRERAS

77

Evaluación de la prueba: Positiva.

CASO DE PRUEBA DE ACEPTACIÓN

Código: 15 Historia de Usuario: 15

Nombre: Aprendizaje.

Descripción: Desarrollar un módulo de aprendizaje para que el usuario pueda entender mejor el lenguaje Braille.

Condiciones de Ejecución: La animación debe ejecutarse al iniciar la aplicación.

Entrada/Pasos de ejecución: 1. Se debe ejecutar la aplicación en el dispositivo. 2. Se debe poder acceder al módulo de aprendizaje desde el menú principal.

Resultado esperado El módulo debe mostrar la información desde la base de datos.

Evaluación de la prueba: Positiva.

CASO DE PRUEBA DE ACEPTACIÓN

Código: 16 Historia de Usuario: 16

Nombre: Error Evaluación.

Descripción: La evaluación de uno de los niveles de Braille es incorrecta, porque se está tomando el nivel 4 como 5 y viceversa.

Condiciones de Ejecución: Cargar el módulo de evaluación y escoger evaluar nivel Braille.

Entrada/Pasos de ejecución: 1. Se debe ejecutar la aplicación en el dispositivo. 2. Acceder al módulo de evaluación desde el menú principal. 3. Cargar el examen de evaluación nivel Braille.

Resultado esperado: Las preguntas de la serie 4 y 5 deben de cambiarse por las de la otra.

Evaluación de la prueba: Positiva.

CASO DE PRUEBA DE ACEPTACIÓN

Código: 17 Historia de Usuario: 17

Nombre: Transcriptor.

Descripción: El método en que se transcribe el texto es algo ineficiente, se recomienda buscar otra manera de mostrar la transcripción.

Condiciones de Ejecución: La animación debe ejecutarse al iniciar la aplicación.

Page 78: ARNOLD STIVEN ALFONSO CONTRERAS

78

Entrada/Pasos de ejecución: 1. Se debe ejecutar la aplicación en el dispositivo. 2. Acceder al módulo de transcripción desde el mení principal. 3. Realizar una transcripción.

Resultado esperado: La transcripción se debe realizar en un documento o de una manera más eficiente.

Evaluación de la prueba: Positiva.

Conclusiones

• Para aprender el lenguaje Braille no es suficiente con tener acceso al

glosario, por esto se desarrolló un módulo de aprendizaje, el cual permite al

usuario aprender de una forma más sencilla.

• Se debe aprovechar el incremento en las nuevas tecnologías para adaptar

la enseñanza tradicional Braille hacia los dispositivos móviles, para que de

esta manera se pueda tener un mejor ambiente de aprendizaje donde

hayan estudiantes invidentes.

• Se requiere el asesoramiento de un tiflólogo para poder trabajar sobre el

lenguaje Braille o en su defecto tener acceso a documentación del lenguaje

en fuentes de confianza cómo en INCI, CRAC o la ONCE.

• La metodología XP permite un desarrollo ágil y eficiente, ya que trabajar por

iteraciones permite tener un mayor control sobre el desarrollo del proyecto y

no se invierte mucho tiempo en la documentación.

• Cuando un menor invidente siente apoyo por parte de sus compañeros lo

motiva a estudiar más y superarse, pero no debe recibir mucha ayuda

porque puede volverse dependiente, sólo es bueno involucrarse cuando

realmente lo necesite.

• La aplicación cuenta con un módulo de evaluación eficiente, el cual permite

garantizar que el usuario aprenda el lenguaje; ya que si fracasa en un

examen lo devuelve al nivel anterior o no le permite subir de nivel.

Recomendaciones

La investigación realizada durante el proyecto y las pruebas realizadas permiten

establecer algunas recomendaciones:

Page 79: ARNOLD STIVEN ALFONSO CONTRERAS

79

Es muy bueno apoyar a un estudiante con discapacidad visual en su

proceso educativo, pero no se debe exagerar en este aspecto porque

puede llegar a complicar el problema.

El usuario debe tener conocimiento sobre el uso de dispositivos móviles, y

conocer el alfabeto para que pueda aprender el lenguaje Braille.

La aplicación debe ser instalada solo en dispositivos con Sistema Operativo

Android.

Si se quisiera realizar futuras versiones del aplicativo es aconsejable:

La aplicación enseña como leer Braille pero no se tuvo en cuenta el

proceso de escritura, sólo se le mencionó a los usuarios que para escribir

se hace de derecha a izquierda y se lee de izquierda a derecha.

Se sugiere que se agregue un módulo sobre química ya que no hay mucha

documentación sobre esta asignatura en Braille, y la tabla periódica abarca

unas 20 hojas.

Page 80: ARNOLD STIVEN ALFONSO CONTRERAS

80

BIBLIOGRAFÍA

Niños y niñas con discapacidad visual en Colombia. Disponible en internet:< http://www.mineducacion.gov.co/cvn/1665/w3-article-303293.html > [con acceso el 30-08-2015]

Invidentes afectados por derechos de autor. Disponible en internet:< http://www.elespectador.com/dean-lermer/invidentes-afectados-derechos-de-autor-articulo-366637 > [con acceso el 29-08-2015]

IRIS en Colombia. Disponible en internet:< http://www.duto.org/proyectos/iris_en_colombia/ > [con acceso el 07-09-2015]

Guía didáctica para uso de Braillín. Disponible en internet:< http://www.juntadeandalucia.es/averroes/caidv/interedvisual/ftp/guia_didactica_uso_braillin.doc > [con acceso el 07-09-2015]

La educación musical de personas con deficiencia visual y la musicografía braille. Disponible en internet:< http://www.saccom.org.ar/2010_reunion9/actas/11.Bertevelli.pdf > [con acceso el 15-09-2015]

Matemáticas para invidentes. . Disponible en internet:< http://discapacidadcero.weebly.com/matematicas-para-no-videntes.html#.VfkcDxF_NBc > [con acceso el 15-09-2015]

MONTERO, Miguel. Android Desarrollo De Aplicaciones. Primera Edición. Editorial Ra-ma. p. 27-40

Sarmiento, Alfredo .Situación Educación. Tercera Edición. Observatorio de Educación de Uninorte. P.64-73

Aplicaciones móviles colombianas con calidad de exportación. Disponible

en internet:< http://www.mintic.gov.co/portal/604/w3-article-8396.html >

[con acceso el 20-10-2015]

Dispositivo tecnológico para la optimización del tiempo de aprendizaje del lenguaje Braille en personas invidentes. Disponible en internet:< http://www.scielosp.org/pdf/rsap/v13n5/v13n5a15.pdf > [con acceso el 07-09-2015]

Page 81: ARNOLD STIVEN ALFONSO CONTRERAS

81

A B Sé! Sistema para el aprendizaje de Lectoescritura en Braille. Disponible en internet:< http://repository.javeriana.edu.co/bitstream/10554/4234/1/tesis97.pdf> [con acceso el 07-09-2015]

BrailleSoft: Software traductor de lenguaje Braille a digital y viceversa. Disponible en internet:< http://reposital.cuaed.unam.mx:8080/jspui/bitstream/123456789/3774/1/VE13.295.pdf> [con acceso el 07-09-2015]

Educación inclusiva: discapacidad visual módulo 5: el sistema braille. Disponible en internet:< http://www.ite.educacion.es/formacion/materiales/129/cd/pdf/m5_dv.pdf> [con acceso el 15-09-2015]

Capítulo 2. IAGP 2005/06. Metodologías de desarrollo de software. Disponible en internet:< http://www.um.es/docencia/barzana/IAGP/Iagp2.html> [con acceso el 20-10-2015]

Lección 2 ¿Que es una Aplicación Móvil?. Disponible en internet:< http://datateca.unad.edu.co/contenidos/233016/EXE_SAM/leccin_2_que_es_una_aplicacin_mvil.html > [con acceso el 20-10-2015]

Congreso de Colombia, ley no. 1341. Disponible en internet:< http://www.mintic.gov.co/portal/604/articles-3707_documento.pdf > [con acceso el 20-10-2015]

El sistema Operativo GNU. Disponible en internet:< http://www.gnu.org/licenses/licenses.es.html > [con acceso el 20-10-2015 ]

Orientaciones Pedagógicas para La Atención Educativa a Estudiantes con Limitación Visual ministerio De Educación Nacional. Disponible en internet:<http://www.colombiaaprende.edu.co/html/micrositios/1752/articles-320691_archivo_2.pdf> [con acceso el 13-03-2016 ]

Page 82: ARNOLD STIVEN ALFONSO CONTRERAS

82

INFOGRAFÍA

MINSALUD, Registro de Localización y Caracterización de Personas con

Discapacidad. Disponible en internet:< https://www.minsalud.gov.co/proteccionsocial/Paginas/DisCapacidad_RLCPD.aspx > [con acceso el 15-09-2015]

Decisión Andina 351 de 1993 Régimen Común sobre derecho de autor y derechos conexos. Disponible en internet:< http://www.egeda.com.pe/documentos/Decision_351.pdf> [con acceso el 20-10-2015]

Congreso de Colombia, ley no. 1680. Disponible en internet:< http://www.mintic.gov.co/portal/604/articles-5006_documento.pdf > [con acceso el 27-09-2015

Congreso de Colombia, ley estatutaria no. 1618. Disponible en internet:< http://wsp.presidencia.gov.co/Normativa/Leyes/Documents/2013/LEY%201618%20DEL%2027%20DE%20FEBRERO%20DE%202013.pdf > [con acceso el 27-09-2015]

Sistema operativo Android: características y funcionalidad para dispositivos móviles. Disponible en internet:< http://repositorio.utp.edu.co/dspace/bitstream/11059/2687/1/0053M722.pdfintegrado > [con acceso el 20-10-2015]

Dificultades de aprendizaje en el alumnado con déficit visual y ciego. Disponible en internet:< http://www.foal.es/sites/default/files/docs/4_dificultad_de_aprendizaje_0.pdf > [con acceso el 15-09-2015]

Discapacidad en Colombia: Reto para la Inclusión en Capital Humano. Disponible en internet:< http://www.colombialider.org/wp-content/uploads/2011/03/discapacidad-en-colombia-reto-para-la-inclusion-en-capital-humano.pdf > [con acceso el 15-09-2015]

Alumnos con discapacidad visual. necesidades y respuesta educativa. Disponible

en internet:<

http://educacion.once.es/appdocumentos/educa/prod/Necesidades%20y%20respu

esta%20educativa.pdf > [con acceso el 15-09-2015]

Programación Extrema. Disponible en internet:<

http://eisc.univalle.edu.co/materias/WWW/material/lecturas/xp.pdf> [con acceso el

20-10-2015 ]

Page 83: ARNOLD STIVEN ALFONSO CONTRERAS

83

Colombia avanza hacia una educación inclusiva con calidad (I). Disponible

en Internet:<http://www.mineducacion.gov.co/cvn/1665/article-

168443.html>[con acceso el 12-03-2016 ]

Page 84: ARNOLD STIVEN ALFONSO CONTRERAS

84

Page 85: ARNOLD STIVEN ALFONSO CONTRERAS

85

ANEXOS

Anexo A:

Manual De Programador

Anexo B:

Manual De Usuario

Anexo C:

Código Fuente

Page 86: ARNOLD STIVEN ALFONSO CONTRERAS

86

MANUAL DEL PROGRAMADOR.

APLICACIÓN MÓVIL PARA EL APRENDIZAJE DEL LENGUAJE BRAILLE Y LA

SIGNOGRAFÍA BÁSICA USADA EN LAS ÁREAS DE MATEMÁTICAS Y

MÚSICA EN PERSONAS VIDENTES

ARNOLD STIVEN ALFONSO CONTRERAS

UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS

FACULTAD TECNOLOGICA

TECNOLOGIA EN SISTEMATIZACION DE DATOS

BOGOTA

2016

Page 87: ARNOLD STIVEN ALFONSO CONTRERAS

87

Contenido

1. INTRODUCCIÓN ......................................................................................................................... 88

2. REQUERIMIENTOS ..................................................................................................................... 88

3. DESCARGA E INSTALACIÓN DE REQUERIMIENTOS. .................................................................. 88

4. DEFINICIONES A TENER EN CUENTA ......................................................................................... 94

5. DOCUMENTACIÓN TÉCNICA ......................................................................................................... 95

5.1 Descripción de clases utilizadas. ............................................................................................. 95

5.2 Descripción de actividades utilizadas. ..................................................................................... 96

5.3 Descripción de recursos adicionales: ...................................................................................... 97

6. FUNDAMENTOS DE PROGRAMACIÓN: ........................................................................................ 101

6.1 Fundamentos modulo Aprendizaje: ...................................................................................... 101

6.2 Fundamentos modulo Glosario: ............................................................................................ 102

6.3 Fundamentos modulo Evaluación: ........................................................................................ 102

6.4 Fundamentos modulo Transcriptor: ..................................................................................... 102

6.5 Actividades y clases extra: ..................................................................................................... 102

7. IMPLEMENTACIÓN DE CÓDIGO DE IMPORTANCIA: ................................................................ 103

7.1 Clases ..................................................................................................................................... 103

Page 88: ARNOLD STIVEN ALFONSO CONTRERAS

88

1. INTRODUCCIÓN

El propósito de este manual del programador es proporcionar al usuario el código

fuente de la aplicación móvil que se desarrolló, de una manera concisa y amena.

En este manual podrá encontrar el código de los métodos empleados para el buen

funcionamiento de la aplicación realizada para el sistema operativo Android.

2. REQUERIMIENTOS

Para el desarrollo de la aplicación se utilizaron las siguientes herramientas, cada

una con su link oficial de descarga.

1. Java Development Kit (JDK): contiene el entorno de desarrollo de Java

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-

2133151.html

2. Android Studio: Entorno de programación de Android

http://developer.android.com/sdk/installing/index.html?pkg=studio

3. Genymotion: Emulador utilizado para testeo de la

aplicación https://www.genymotion.com/download/

4. SQLite: librería que implementa un sistema autónomo, en este caso

Android Studio

3. DESCARGA E INSTALACIÓN DE REQUERIMIENTOS.

Java Development Kit (JDK):

1. Se abre el link de descarga.

2. Se selecciona la opción que corresponde al Sistema Operativo y aceptar la

licencia.

Page 89: ARNOLD STIVEN ALFONSO CONTRERAS

89

Imagen 1 (selección de sistema operativo)

Fuente: Autor

3. Una vez descargado tienes que ir a la carpeta donde se descargó el

archivo

4. Ejecutarlo como administrador

5. Cuando se abra esta ventana dar clic en siguiente

Imagen 2 (inicio de instalación)

Fuente: Autor

Page 90: ARNOLD STIVEN ALFONSO CONTRERAS

90

5. Dar siguiente en las posteriores ventanas

6. Elegir la carpeta donde se instalara java y dar clic en siguiente

Imagen 3 (selección de carpeta raíz)

Fuente: Autor

7. Una vez terminada la instalación dar clic en cerrar

Imagen 4 (finalización de instalación)

Fuente: Autor

Page 91: ARNOLD STIVEN ALFONSO CONTRERAS

91

Android Studio:

1. Dirigirse al link de descarga, el tamaño del instalador es de 1.1 GB.

2. Dirigirse a la carpeta donde quedo guardado el instalador y abrirlo,

aparecerá el asistente.

Imagen 5 (inicio asistente)

Fuente: Autor

3. Elegir componentes a instalar, lo más recomendable es seleccionar

todas las opciones

Imagen 6 (elección de paquetes)

Fuente: Autor

4. Elegir ruta de instalación de Android Studio y ruta de instalación de SDK.

Page 92: ARNOLD STIVEN ALFONSO CONTRERAS

92

Imagen 7 (elección de carpetas raíz)

Fuente: Autor

5. Una vez finalice la instalación Android Studio se conectará a Internet y

descargará los elementos del SDK necesarios para funcionar correctamente.

Imagen 8 (finalización de instalación de paquetes SDK)

Fuente: Autor

6. Una vez terminado le damos finalizar y listo.

Page 93: ARNOLD STIVEN ALFONSO CONTRERAS

93

Genymotion:

1. Abrir link de descarga.

2. Registrarse en la página oficial.

3. Elegir la opción de Genymotion con virtual-Box para no tener

inconvenientes.

Imagen 9 (Seleccionar Opción de descarga)

Fuente: Autor

4. Con la herramienta Genymotion no son muchos los pasos a confirmar,

tan solo uno le damos siguiente a la bienvenida.

Imagen 10 (ventana de inicio del asistente)

Page 94: ARNOLD STIVEN ALFONSO CONTRERAS

94

Fuente: Autor

5. Dar clic en finalizar y marcar la casilla launch si se desea abrir cuando

finalice

Imagen 11 (finalización de instalación de paquetes)

Fuente: Autor

4. DEFINICIONES A TENER EN CUENTA

ListView:

Una vista ListView visualiza una lista deslizable verticalmente de

varios elementos, donde cada elemento puede definirse como un

Layout .Su utilización es algo compleja, pero muy potente.

ExpandableListView:

Listview que permite agrupar los datos para suministrar la

información de manera más eficiente. Su uso es más complejo que

el del componente mencionado anteriormente.

Page 95: ARNOLD STIVEN ALFONSO CONTRERAS

95

5. DOCUMENTACIÓN TÉCNICA

5.1 Descripción de clases utilizadas.

En este punto se procederá a describir los archivos contenidos en la aplicación, en

la siguiente tabla se encuentra el nombre de la clase usada y una breve

descripción de su función.

Tabla1. Descripción de las clases

Clase Descripción

acentos Clase encargada de configurar el ListView que muestra los símbolos para representar las vocales con tilde.

Aprendizaje Clase que cuenta con los métodos para poder acceder al aprendizaje del idioma de acuerdo al nivel del usuario.

Asig_Adapter Clase encargada de proporcionar los métodos necesarios para configurar el ExpandableListView del menú con el que cuenta el módulo glosario.

Cont_ej Clase que proporciona los métodos necesarios para poder evaluar el nivel de conocimiento sobre una serie Braille.

DataProvider Configura la información que se va a mostrar en el ExpandableListView del Glosario.

DbHelper Clase encargada de crear la base de datos con la que funciona la aplicación.

Ejercicios Clase encargada de re direccionar a las actividades dónde se encuentran los ejercicios, según el tema que elija el usuario.

ExpAdapter Clase encargada de proporcionar los métodos necesarios para configurar el ExpandableListView del menú con el que cuenta la actividad Ejercicios.

Glosario Clase encargada de mostrar la información sobre la representación de las letras en Braille.

Ítem Clase encargada de configurar el ListView de las actividades Glosario, acentos, numeros y signos_mate. Permite mostrar la información de forma ordenada.

Menuexp Clase encargada de re direccionar a las actividades dónde se encuentra la información del tema que elija el usuario.

musica Clase encargada de configurar el ListView que muestra la representación de las notas musicales en braille

notas Clase encargada de configurar el ListView de las Actividades musica y silencios. Permite mostrar la información de forma ordenada.

notas_ej Clase que se encarga de cargar y evaluar el test correspondiente a las notas musicales.

num_ej Clase que se encarga de cargar y evaluar el test correspondiente a los números.

numeros Clase encargada de configurar el ListView que muestra la representación de los números en braille

Principal Es la clase que configura el menú principal y permite que el usuario escoja el módulo que deseé.

signos_mate Clase encargada de configurar el ListView que muestra la representación de los signos matemáticos en braille

Signosmate_ej Clase que se encarga de cargar y evaluar el test correspondiente a los signos matemáticos en Braille.

Page 96: ARNOLD STIVEN ALFONSO CONTRERAS

96

silencios Clase encargada de configurar el ListView que muestra la representación de los silencios musicales en braille

silencios_ej Clase que se encarga de cargar y evaluar el test correspondiente a los silencios musicales en Braille.

Splash Esta clase se encarga de mostrar la animación inicial de la aplicación.

trans_l Clase encargada de configurar el ListView que muestra la transcripción de un texto en braille.

Transcriptor Clase que cuenta con los métodos necesarios para realizar la transcripción de un texto a Braille.

5.2 Descripción de actividades utilizadas.

En la siguiente tabla se encuentra el nombre de la Actividad usada y una breve

descripción de su función.

Tabla 2. Descripción de las Actividades

Actividad Descripción

Principal Esta actividad muestra el menú principal de la aplicación, es decir los módulos con la que esta cuenta.

Ejercicios Actividad encargada de mostrar los test con los que cuenta la aplicación.

musica Muestra el ListView con la representación de las notas musicales en Braille.

Glosario Muestra el ListView con la representación de las Letras en Braille.

signos_mate Muestra el ListView con la representación de los signos matematicos en Braille.

acentos Muestra el ListView con la representación de las vocales con tilde en Braille.

Menuexp Muestra la el ExpandableListView con la información disponible en la app por áreas y temas.

num_ej Muestra el test sobre los números en Braille.

silencios Muestra el ListView con la representación de las notas musicales en Braille.

numeros Muestra el ListView con la representación de los números en Braille.

Transcriptor Actividad en donde se realiza la transcripción de un texto a Braille.

Splash Actividad encargada de mostrar la animación inicial de la app.

silencios_ej Muestra el test sobre los silencios musicales en Braille.

notas_ej Muestra el test sobre las notas musicales en Braille.

signosmate_ej Muestra el test sobre los signos matemáticos en Braille.

cont_ej Muestra el test sobre el nivel de braille actual del usuario.

Aprendizaje Actividad que muestra de forma sencilla información sobre la representación de una serie del lenguaje Braille, de acuerdo al nivel del usuario.

Page 97: ARNOLD STIVEN ALFONSO CONTRERAS

97

5.3 Descripción de recursos adicionales:

5.3.1 carpeta anim: En esta carpeta se encuentra el archivo XML que se encarga

de la animación inicial de la aplicación (animación.xml).

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android">

<rotate

android:duration="3000"

android:fromDegrees="0"

android:toDegrees="360"

android:pivotX="50%"

android:pivotY="50%"/>

<scale

android:duration="3000"

android:pivotY="50%"

android:pivotX="50%"

android:toXScale="100%"

android:toYScale="100%"/>

</set>

Este código indica que la animación rotara la imagen asociada 360 y tendrá una

escala de 50% a 100% en su tamaño durante 3 segundos.

5.3.2 drawable: En esta carpeta se encuentran almacenadas las imágenes que

son usadas por la aplicación: representación de notas, silencios, números, letras,

signos de puntuación y signos matemáticos en Braille. Además, también se

encuentra el logo de la aplicación y las imágenes empleadas para los módulos.

Para no hacer muy extensa la tabla sólo se describirán los elementos más

relevantes.

Page 98: ARNOLD STIVEN ALFONSO CONTRERAS

98

Tabla 3. Descripción de Imágenes

NOMBRE FIGURA DESCRIPCIÓN

appbraille

Logo de la aplicación,

este será el launcher

que el usuario elegirá

para ingresar al

aplicación.

Page 99: ARNOLD STIVEN ALFONSO CONTRERAS

99

aprendizaje

Está imagen está

presente en el menú

principal, ayuda a

identificar el módulo

de aprendizaje de una

manera más sencilla.

glosario

Está imagen está

presente en el menú

principal y como fondo

de los ListView sobre

alfabeto y acentos,

ayuda a identificar el

módulo de glosario de

una manera más

sencilla.

Page 100: ARNOLD STIVEN ALFONSO CONTRERAS

100

Evaluar

Está imagen está presente en el menú principal y como fondo del ExpandableListView en la actividad ejercicios, ayuda a identificar el módulo de evaluación de una manera más sencilla.

transcribir

Está imagen está presente en el menú principal y como fondo del ListView en la actividad Transcriptor, ayuda a identificar el módulo de Transcripción de una manera más sencilla.

Música

Imagen usada como fondo para los ListView de las actividades música y silencios

Page 101: ARNOLD STIVEN ALFONSO CONTRERAS

101

Números

Imagen usada como fondo para el ListView de la actividad números.

Signos

Imagen usada como fondo para el ListView de la actividad signos_mate.

6. FUNDAMENTOS DE PROGRAMACIÓN:

La aplicación cuenta con cuatro módulos principales (Aprendizaje, Glosario,

Evaluación y Transcriptor).

6.1 Fundamentos modulo Aprendizaje:

Las clases y actividades incluidas dentro de este módulo son las siguientes:

DbHelper

Principal

Aprendizaje

Page 102: ARNOLD STIVEN ALFONSO CONTRERAS

102

6.2 Fundamentos modulo Glosario:

Las clases y actividades incluidas dentro de este módulo son las siguientes:

Principal

Asig_Adapter

DataProvider

Menuexp

Glosario

acentos

musica

silencios

numeros

signos_mate

notas

ítem

6.3 Fundamentos modulo Evaluación:

Las clases y actividades incluidas dentro de este módulo son las siguientes:

Principal

Ejercicios

Asig_Adapter

DbHelper

ExpAdapter

Cont_ej

notas_ej

num_ej

signosmate_ej

silencios_ej

6.4 Fundamentos modulo Transcriptor:

Las clases y actividades incluidas dentro de este módulo son las siguientes:

Principal

Transcriptor

trans_l

6.5 Actividades y clases extra:

La siguiente actividad no está dentro de los 4 módulos anteriores pero es una

parte importante de la aplicación.

Page 103: ARNOLD STIVEN ALFONSO CONTRERAS

103

Splash

7. IMPLEMENTACIÓN DE CÓDIGO DE IMPORTANCIA:

7.1 Clases

7.1.1 acentos:

private List<item> arrayletra = new ArrayList<item>();

Se crea una lista de tipo ítem llamada arrayletra.

Método letras: este método se encarga de añadir un arreglo de tipo itema la lista para que posteriormente el ListView la muestre al usuario.

private void letras() {

arrayletra.add(new item("á", R.drawable.a2));

arrayletra.add(new item("é", R.drawable.e2));

arrayletra.add(new item("í", R.drawable.i2));

arrayletra.add(new item("ó", R.drawable.o2));

arrayletra.add(new item("ú", R.drawable.u2));

arrayletra.add(new item("ü", R.drawable.u3));

}

Método verletra: este método configura el listview lista_acentos con los

parámetros establecidos por la Clase privada MyListAdapter.

private void verletra() {

ArrayAdapter<item> adapter = new MyListAdapter();

ListView list = (ListView) findViewById(R.id.lista_acentos);

list.setAdapter(adapter);

}

MyListAdapter: Clase Privada cuya función es configurar la forma en que se va a

distribuir la información que se deseé colocar en el ListView, como constructor

recibe la clase padre, el layout al que hace referencia y la lista de tipo ítem.

Se usan los métodos getimg y getop para que los elementos del layout muestren

la información como si fueran un solo elemento dentro del ListView.

private class MyListAdapter extends ArrayAdapter<item> {

public MyListAdapter() {

super(acentos.this, R.layout.item_view, arrayletra);

}

public View getView(int position, View ConvertView, ViewGroup parent)

{

View itemView = ConvertView;

Page 104: ARNOLD STIVEN ALFONSO CONTRERAS

104

if (itemView == null)

itemView = getLayoutInflater().inflate(R.layout.item_view,

parent, false);

item letra_act = arrayletra.get(position);

ImageView ImageView= (ImageView)

itemView.findViewById(R.id.imagen);

ImageView.setImageResource(letra_act.getimg());

TextView letrat

=(TextView)itemView.findViewById(R.id.Text_letra);

letrat.setText(letra_act.getop());

return itemView;

}

}

Nota: Estos métodos están presentes en otras clases, así que no se considera

necesario volver a explicarlos ya que los cambios son muy insignificantes.

7.1.2 Aprendizaje:

ImageButton Atras, Siguiente;

TextView Text;

ImageView Imagen;

Se declaran dos botones, un Textview y un Imageview para llamarlos más adelante sin problemas.

onCreate: cuando la actividad se ejecuta inicialmente se realiza una consulta en la

base de datos Sqlite para obtener el nivel actual del usuario.

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_aprendizaje);

DbHelper dbHp= new DbHelper(null, "Braille.sqlite", this, 1);

SQLiteDatabase db=dbHp.getReadableDatabase();

String Query="Select * from Usuario where Nivel=1";

Cursor c = db.rawQuery(Query, null);

c.moveToFirst();

niv=c.getInt(1);

Atras = (ImageButton)findViewById(R.id.Anterior);

Siguiente = (ImageButton)findViewById(R.id.siguiente);

Text = (TextView)findViewById(R.id.text_ap);

Imagen= (ImageView)findViewById(R.id.image_ap);

poner_letras(niv);

findViewById(R.id.Regresar).setOnClickListener(new

View.OnClickListener() {

@Override

public void onClick(View v) {

Page 105: ARNOLD STIVEN ALFONSO CONTRERAS

105

startActivity(new Intent(Aprendizaje.this, Principal.class));

Aprendizaje.super.finish();

}

});

Atras.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

if (p > 1){

p = p - 1;

poner_letras(niv);}

}

});

Siguiente.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

avanzar();

}

});

}

poner_letras:este método recibe como parámetro el nivel actual del usuario, para

obtener la información pertinente para la serie que se encuentre estudiando en

ese momento. Se realiza una consulta de acuerdo al nivel (niv) y el número de

pregunta (p).

public void poner_letras(int niv){

String texto = null,Ruta = null;

DbHelper dbHp= new DbHelper(null, "Braille.sqlite", this, 1);

SQLiteDatabase db=dbHp.getReadableDatabase();

String Query="Select * from Braille where Nivel="+niv+" and

NText="+p;

Cursor c = db.rawQuery(Query,null);

c.moveToFirst();

texto=c.getString(1);

Ruta=c.getString(2);

Text.setText(texto);

String mDrawableName = Ruta;

int resID = getResources().getIdentifier(mDrawableName , "drawable",

getPackageName());

Imagen.setImageResource(resID);

c.close();

db.close();

}

avanzar: ya que cada nivel tiene un número diferente de preguntas, se realiza una

comprobación para saber en qué nivel está el usuario y no tener errores con las

consultas. Se aumenta el valor de p para que el método poner_letras busque el

siguiente registro y lo muestre.

Page 106: ARNOLD STIVEN ALFONSO CONTRERAS

106

public void avanzar(){

if(niv==1){

if (p <= 11)

p = p + 1;

if (p < 13)

poner_letras(niv);}

if(niv==2){

if (p <= 9)

p = p + 1;

if (p < 11)

poner_letras(niv);}

if(niv==3){

if (p <= 11)

p = p + 1;

if (p < 12)

poner_letras(niv);}

if(niv==4){

if (p <= 3)

p = p + 1;

if (p < 4)

poner_letras(niv);}

if(niv==5){

if (p <= 11)

p = p + 1;

if (p < 12)

poner_letras(niv);}

}

7.1.3 Asig_Adapter:

getGroupview: método que se encarga de configurar la vista del parent en el

ExpandableListView, usa el child_layout y toma el elemento Child_Text para

mostrar el nombre del parent.

public View getGroupView(int groupPosition, boolean isExpanded, View

convertView, ViewGroup parent) {

String group_title=(String) getGroup(groupPosition);

if(convertView==null){

LayoutInflater inflater = (LayoutInflater)

ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

convertView=inflater.inflate(R.layout.child_layout,parent,false);}

TextView letrat = (TextView)

convertView.findViewById(R.id.Child_Text);

letrat.setTypeface(null, Typeface.BOLD);

letrat.setText(group_title);

return convertView;

Page 107: ARNOLD STIVEN ALFONSO CONTRERAS

107

}

getChildView: método que se encarga de configurar la vista del Child en el ExpandableListView, usa el child_layout y toma el elemento Child_Text para mostrar el nombre del child. @Override

public View getChildView(int parent, int child, boolean isLastChild, View

convertView, ViewGroup parentView) {

String Child_title= (String)getChild(parent,child);

if(convertView==null){

LayoutInflater inflater = (LayoutInflater)

ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

convertView=inflater.inflate(R.layout.child_layout,parentView,false);}

TextView letrat = (TextView)

convertView.findViewById(R.id.Child_Text);

letrat.setText(Child_title);

return convertView;

}

7.1.4 Menuexp:

En este evento, se realiza la comunicación entre Actividades, de acuerdo a el child

que haya seleccionado el usuario, la app lo dirige a una actividad.

Exp_list.setOnChildClickListener(new

ExpandableListView.OnChildClickListener() {

@Override

public boolean onChildClick(ExpandableListView parent, View v, int

groupPosition, int childPosition, long id) {

if (groupPosition == 2 && childPosition == 0) {

finish();

startActivity(new Intent(Menuexp.this, Glosario.class));}

if (groupPosition == 2 && childPosition == 1) {

finish();

startActivity(new Intent(Menuexp.this, acentos.class));}

if (groupPosition == 0 && childPosition == 0) {

finish();

startActivity(new Intent(Menuexp.this, numeros.class));}

if (groupPosition == 0 && childPosition == 1) {

finish();

startActivity(new Intent(Menuexp.this, signos_mate.class));}

if (groupPosition == 1 && childPosition == 0) {

finish();

startActivity(new Intent(Menuexp.this, musica.class));}

if (groupPosition == 1 && childPosition == 1) {

finish();

startActivity(new Intent(Menuexp.this, silencios.class));}

return false;

Page 108: ARNOLD STIVEN ALFONSO CONTRERAS

108

}

});

7.1.5 notas_ej:

En este evento se llama al método poner_letras del cual se habló anteriormente y

al método analizar respuestas, primero se comprueba que al menos un

radiobutton esté seleccionado; luego se procede a analizar las respuestas.

Siguiente.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

if((r1.isChecked()==false)&&(r2.isChecked()==false)&&(r3.isChecked()==fal

se)&&(r4.isChecked()==false))

Toast.makeText(getApplicationContext(), "Selecciona una

Respuesta", Toast.LENGTH_LONG).show();

else{

if(p<11)

analizarrespuestas(Resp);

p=p+1;

if(p<11)

poner_letras(niv);

if(p==11){

if(aciertos>=4)

Toast.makeText(getApplicationContext(), "Tuviste

"+aciertos+" aciertos buen trabajo :D", Toast.LENGTH_LONG).show();

if(aciertos<=3)

Toast.makeText(getApplicationContext(), "Tuviste

"+aciertos+" aciertos, estudia un poco más :C",

Toast.LENGTH_LONG).show();

startActivity(new

Intent(notas_ej.this,Ejercicios.class));

notas_ej.super.finish();}

if(p==10) {

Siguiente.setText("Terminar");}}

}

});

analizarrespuestas:aquí se comprueba si la opción del radiobutton seleccionado

es correcta o incorrecta, para luego ser analizada y determinar su se regresa o

avanza nivel, al usuario.

private void analizarrespuestas(String Resp) {

if(r1.isChecked())

if(Resp.equalsIgnoreCase((String) r1.getText()))

aciertos=aciertos+1;

if(r2.isChecked())

if(Resp.equalsIgnoreCase((String) r2.getText()))

aciertos=aciertos+1;

if(r3.isChecked())

if(Resp.equalsIgnoreCase((String) r3.getText()))

aciertos=aciertos+1;

if(r4.isChecked())

Page 109: ARNOLD STIVEN ALFONSO CONTRERAS

109

if(Resp.equalsIgnoreCase((String) r4.getText()))

aciertos=aciertos+1;

}

7.1.6 Splash: en este método se hace un llamado al archivo animación.xml para

que realice la animación de esta acividad y una vez termine pase a la actividad

Principal.

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.splash_screen);

final ImageView ImageView= (ImageView) findViewById(R.id.img_anim);

final Animation animation =

AnimationUtils.loadAnimation(getBaseContext(),R.anim.animacion);

final Animation animation2 =

AnimationUtils.loadAnimation(getBaseContext(),R.anim.abc_fade_out);

ImageView.startAnimation(animation);

animation.setAnimationListener(new Animation.AnimationListener() {

@Override

public void onAnimationStart(Animation animation) {

}

@Override

public void onAnimationEnd(Animation animation) {

ImageView.startAnimation(animation2);

finish();

startActivity(new Intent(Splash.this, Principal.class));

}

@Override

public void onAnimationRepeat(Animation animation) {

}

});

}

7.1.7 Transcriptor: En el siguiente método se toma el texto digitado en el edittext,

luego se divide con la función substring para comparar letra por letra y así realizar

una transcripción del lenguaje.

private void img(String dato) {

int let=dato.length();

String car="";

arraynotas.clear();

for (int i=0;i<let;i++){

if(i!=let-1)

car=dato.substring(i,i+1);

if(i==let-1)

car=dato.substring(let-1);

if(car.equalsIgnoreCase(" ")||car.equalsIgnoreCase(""))

arraynotas.add(new trans_l(R.drawable.esp));

if(car.equalsIgnoreCase("a"))

arraynotas.add(new trans_l(R.drawable.a));

if(car.equalsIgnoreCase("b"))

Page 110: ARNOLD STIVEN ALFONSO CONTRERAS

110

arraynotas.add(new trans_l(R.drawable.b));

if(car.equalsIgnoreCase("c"))

arraynotas.add(new trans_l(R.drawable.c));

if(car.equalsIgnoreCase("d"))

arraynotas.add(new trans_l(R.drawable.d));

if(car.equalsIgnoreCase("e"))

arraynotas.add(new trans_l(R.drawable.e));

if(car.equalsIgnoreCase("f"))

arraynotas.add(new trans_l(R.drawable.f));

if(car.equalsIgnoreCase("g"))

arraynotas.add(new trans_l(R.drawable.g));

if(car.equalsIgnoreCase("h"))

arraynotas.add(new trans_l(R.drawable.h));

if(car.equalsIgnoreCase("i"))

arraynotas.add(new trans_l(R.drawable.i));

if(car.equalsIgnoreCase("j"))

arraynotas.add(new trans_l(R.drawable.j));

if(car.equalsIgnoreCase("k"))

arraynotas.add(new trans_l(R.drawable.k));

if(car.equalsIgnoreCase("l"))

arraynotas.add(new trans_l(R.drawable.l));

if(car.equalsIgnoreCase("m"))

arraynotas.add(new trans_l(R.drawable.m));

if(car.equalsIgnoreCase("n"))

arraynotas.add(new trans_l(R.drawable.n));

if(car.equalsIgnoreCase("o"))

arraynotas.add(new trans_l(R.drawable.o));

if(car.equalsIgnoreCase("p"))

arraynotas.add(new trans_l(R.drawable.p));

if(car.equalsIgnoreCase("q"))

arraynotas.add(new trans_l(R.drawable.q));

if(car.equalsIgnoreCase("r"))

arraynotas.add(new trans_l(R.drawable.r));

if(car.equalsIgnoreCase("s"))

arraynotas.add(new trans_l(R.drawable.s));

if(car.equalsIgnoreCase("t"))

arraynotas.add(new trans_l(R.drawable.t));

if(car.equalsIgnoreCase("u"))

arraynotas.add(new trans_l(R.drawable.u));

if(car.equalsIgnoreCase("v"))

arraynotas.add(new trans_l(R.drawable.v));

if(car.equalsIgnoreCase("w"))

arraynotas.add(new trans_l(R.drawable.w));

if(car.equalsIgnoreCase("x"))

arraynotas.add(new trans_l(R.drawable.x));

if(car.equalsIgnoreCase("y"))

arraynotas.add(new trans_l(R.drawable.y));

if(car.equalsIgnoreCase("z"))

arraynotas.add(new trans_l(R.drawable.z));}

}

7.1.8 DbHelper:

public static final String DB_NAME= "Braille.sqlite";

Instrucción para establecer el nombre de la base de datos.

private static final int DB_SCHEME_VERSION= 1;

Page 111: ARNOLD STIVEN ALFONSO CONTRERAS

111

Versión de la base de datos.

Instrucciones para crear tablas:

String Crea_Us="Create table Usuario (Nivel integer primary key, Niv

integer not null);";

String Crea_Silencio="Create table Silencio (NPreg integer primary key,

Pregunta text not null, Ruta text not null,Op text not null, Respuesta

text not null);";

String Crea_Num="Create table Numero (NPreg integer primary key, Pregunta

text not null, Ruta text not null,Op text not null, Respuesta text not

null);";

String Crea_Signos="Create table Signos (NPreg integer primary key,

Pregunta text not null, Ruta text not null,Op text not null, Respuesta

text not null);";

String Crea_Notas="Create table Notas (NPreg integer primary key,

Pregunta text not null, Ruta text not null,Op text not null, Respuesta

text not null);";

String Crea_PBraille="Create table PBraille (Nivel integer, Pregunta

text, Ruta text, Op text, NPreg integer, Respuesta text);";

String Crea_Braille="Create table Braille (Nivel integer, Texto text,

Ruta text, NText integer);";

Instrucciones para insertar los datos:

String Ins_Us="insert into Usuario values (1,1);";

String Ins_Num="insert into Numero values(1,'Selecciona el número que

está representado en Braille','num1','1 5 7 8','1'),(2,'Selecciona el

número que está representado en Braille','num6','4 5 6

7','6'),(3,'Selecciona el número que está representado en

Braille','num9','7 9 5 2','9'),(4,'Selecciona el número que está

representado en Braille','num0','5 3 7 0','0'),(5,'Selecciona el número

que está representado en Braille','num5','0 5 9 8','5'),(6,'Selecciona el

número que está representado en Braille','num4','1 6 4

9','4'),(7,'Selecciona el número que está representado en

Braille','num2','9 2 7 6','2'),(8,'Selecciona el número que está

representado en Braille','num34','24 34 73 69','34'),(9,'Selecciona el

número que está representado en Braille','num25','19 20 25

78','25'),(10,'Selecciona el número que está representado en

Braille','num89','89 24 78 62','89')";

String Ins_Sig="insert into Signos values(1,'Qué signo matemático está

representado en Braille?','divicion','÷ = > +','÷'),(2,'Qué signo

matemático está representado en Braille?','igual','÷ < = +/-

','='),(3,'Qué signo matemático está representado en

Braille?','masmenos','+ +/- - X','+/-'),(4,'Qué signo matemático está

representado en Braille?','mayorque','> + = -','>'),(5,'Qué signo

matemático está representado en Braille?','menorque','+ < ÷

X','<'),(6,'Qué signo matemático está representado en

Braille?','multiplicacion','< X +/- >','X'),(7,'Qué signo matemático está

representado en Braille?','noigual','>< +/- + -','><'),(8,'Qué signo

matemático está representado en Braille?','resta','÷ + - X','-'),(9,'Qué

signo matemático está representado en Braille?','suma','+ +/- ÷

X','+');";

String Ins_Nota="insert into Notas values(1,'Qué nota músical está

representada?','cr','Do Sol Re Mi','Do'),(2,'Qué nota músical está

representada?','dr','Mi Do Re La','Re'),(3,'Qué figura de Do está

Page 112: ARNOLD STIVEN ALFONSO CONTRERAS

112

representada?','cb','Redonda Blanca Corchea Negra','Blanca'),(4,'Qué nota

músical está representada?','fr','La Si Re Fa','Fa'),(5,'Qué figura de Mi

está representada?','ec','Blanca Corchea Negra

Redonda','Corchea'),(6,'Qué nota músical está representada?','br','La Si

Do Re','Si'),(7,'Qué figura de La está representada?','an','Fusa Blanca

Semifusa Corchea','Semifusa'),(8,'Qué nota músical está

representada?','ar','Si Mi La Do','La'),(9,'Qué figura de Sol está

representada?','gb','Negra Fusa Redonda Corchea','Fusa'),(10,'Qué nota

músical está representada?','gr','La Re Sol Mi','Sol');";

String Ins_Silencio="insert into Silencio values(1,'Qué silencio está

representado?','sin','negra blanca redonda fusa','negra'),(2,'Qué

silencio está representado?','sib','semifusa fusa garrapatea

negra','fusa'),(3,'Qué silencio está representado?','sir','corchea negra

redonda blanca','redonda'),(4,'Qué silencio está

representado?','sic','semicorchea fusa negra corchea','corchea'),(5,'En

este compás 4/4 qué silencio hay?','mu1','negra blanca redonda

semifusa','blanca'),(6,'En este compás 4/4 qué silencio

hay?','mu2','corchea negra blanca fusa','corchea');";

String Ins_PBraille1="insert into PBraille values(1,'Qué letra representa

este código en Braille?','a','a b c d',1,'a'),(1,'Qué letra representa

este código en Braille?','d','j i b d',2,'d'),(1,'Qué letra representa

este código en Braille?','j','f c j k',3,'j'),(1,'Qué letra representa

este código en Braille?','f','f i c a',4,'f'),(1,'Qué letra representa

este código en Braille?','h','m h i g',5,'h'),(1,'Qué palabra está

representada en Braille?','hija','dado caja hija pato',6,'hija'),(1,'Qué

letra representa este código en Braille?','i','j i k o',7,'i'),(1,'Qué

palabra está representada en Braille?','caja','pato caja casa

dado',8,'caja'),(1,'Qué letra representa este código en Braille?','g','k

i g j',9,'g'),(1,'Qué palabra está representada en

Braille?','abeja','adiós abeja vamos habla',10,'abeja');";

String Ins_PBraille2="insert into PBraille values(2,'Qué letra representa

este código en Braille?','k','j n k o',1,'k'),(2,'Qué letra representa

este código en Braille?','n','n p o d',2,'n'),(2,'Qué letra representa

este código en Braille?','p','n p l k',3,'p'),(2,'Qué letra representa

este código en Braille?','r','k o r a',4,'r'),(2,'Qué letra representa

este código en Braille?','t','n k o t',5,'t'),(2,'Qué palabra está

representada en Braille?','mono','coco mono cama lodo',6,'mono'),(2,'Qué

letra representa este código en Braille?','l','p l k o',7,'l'),(2,'Qué

palabra está representada en Braille?','moto','mono lodo moto

dado',8,'moto'),(2,'Qué palabra está representada en

Braille?','protesta','protesta molestia protegen

pasado',9,'protesta'),(2,'Qué palabra está representada en

Braille?','camino','latigo camino carrito casco',10,'camino');";

String Ins_PBraille3="insert into PBraille values(3,'Qué letra representa

este código en Braille?','u','x u k o',1,'u'),(3,'Qué letra representa

este código en Braille?','x','a p x t',2,'x'),(3,'Qué letra representa

este código en Braille?','z','n z o k',3,'z'),(3,'Qué letra representa

este código en Braille?','e2','k o r é',4,'é'),(3,'Qué letra representa

este código en Braille?','y','n k y t',5,'y'),(3,'Qué palabra está

representada en Braille?','zorro','coco zorro potro

lodo',6,'zorro'),(3,'Qué palabra está representada en

Braille?','tuba','ala fruta sala tuba',7,'tuba'),(3,'Qué palabra está

representada en Braille?','xilofono','camiones xilófono edificio

páginas',8,'xilófono'),(3,'Qué palabra está representada en

Braille?','mama','mamá coco papá lata',9,'mamá'),(3,'Qué palabra está

representada en Braille?','uva','ala uva iva ele',10,'uva');";

String Ins_PBraille4="insert into PBraille values(4,'Qué signo de

Page 113: ARNOLD STIVEN ALFONSO CONTRERAS

113

puntuación está representado?','coma','coma dos_puntos punto

punto_y_coma',1,'coma'),(4,'Qué signo de puntuación está

representado?','puntcom','coma punto_y_coma admiración

pregunta',2,'punto_y_coma'),(4,'Qué signo de puntuación está

representado?','dospunt','punto punto_y_coma dos_puntos

coma',3,'dos_puntos'),(4,'Qué representa este símbolo?','suma','cursiva

suma igual grados',4,'suma'),(4,'Qué signo de puntuación está

representado?','interrogacion','punto admiración comillas

interrogación',5,'interrogación'),(4,'Qué signo de puntuación está

representado?','admiracion','admiración pregunta comillas

coma',6,'admiración'),(4,'Qué representa este símbolo?','igual','suma

coma igual cursiva',7,'igual'),(4,'Qué signo de puntuación está

representado?','comillas','comillas admiración pregunta

coma',8,'comillas'),(4,'Qué representa este símbolo?','cursiva','igual

suma cursiva grados',9,'cursiva'),(4,'Qué representa este

símbolo?','grados','igual grados cursiva suma',10,'grados');";

String Ins_PBraille5="insert into PBraille values(5,'Qué letra representa

este código en Braille?','n2','ñ m ü w',1,'ñ'),(5,'Qué letra representa

este código en Braille?','u3','x w ü t',2,'ü'),(5,'Qué letra representa

este código en Braille?','w','n w ü ñ',3,'w'),(5,'Qué palabra está

representada en Braille?','espanol','camiones edificio español

caminos',4,'español'),(5,'Qué palabra está representada en

Braille?','wilson','wilson cursiva walter bosque',5,'wilson'),(5,'Qué

palabra está representada en Braille?','pinguino','cigüeña pingüino

vestidor página',6,'pingüino'),(5,'Qué palabra está representada en

Braille?','tuba','ala fruta sala tuba',7,'tuba'),(5,'Qué palabra está

representada en Braille?','xilofono','camiones xilófono edificio

páginas',8,'xilófono'),(5,'Qué palabra está representada en

Braille?','name','ñame casa papá walt',9,'ñame'),(5,'Qué palabra está

representada en Braille?','ala','ala uva iva ele',10,'ala');";

String Ins_Braille1="insert into Braille values(1,'El signo generador de

braille es una cajita cómo esta, la cual se compone de 6 puntos en este

orden','gen',1),(1,'para la 1º serie se utilizan únicamente los cuatro

puntos superiores (1, 2, 4, 5) y con ellos se forman las diez primeras

letras del alfabeto','',2),(1,'Esta es la representación de la letra:

a','a',3),(1,'Esta es la representación de la letra: b','b',4),(1,'Esta

es la representación de la letra: c','c',5),(1,'Esta es la representación

de la letra: d','d',6),(1,'Esta es la representación de la letra:

e','e',7),(1,'Esta es la representación de la letra: f','f',8),(1,'Esta

es la representación de la letra: g','g',9),(1,'Esta es la representación

de la letra: h','h',10),(1,'Esta es la representación de la letra:

i','i',11),(1,'Esta es la representación de la letra: j','j',12);";

String Ins_Braille2="insert into Braille values(2,'La 2º serie se forma

con los puntos de la primera serie, añadiéndoles el punto número 3 y,

así, obtenemos las siguientes letras, a excepción de la letra ñ (conviene

recordar aquí que Luis Braille era francés)','',1),(2,'Esta es la

representación de la letra: k','k',2),(2,'Esta es la representación de la

letra: l','l',3),(2,'Esta es la representación de la letra:

m','m',4),(2,'Esta es la representación de la letra: n','n',5),(2,'Esta

es la representación de la letra: o','o',6),(2,'Esta es la representación

de la letra: p','p',7),(2,'Esta es la representación de la letra:

q','q',8),(2,'Esta es la representación de la letra: r','r',9),(2,'Esta

es la representación de la letra: s','s',10),(2,'Esta es la

representación de la letra: t','t',11);";

String Ins_Braille3="insert into Braille values(3,'la 3ª serie se forma

con los puntos de la 2ª serie, añadiendo el punto número

6','',1),(3,'Esta es la representación de la letra: u','u',2),(3,'Esta es

Page 114: ARNOLD STIVEN ALFONSO CONTRERAS

114

la representación de la letra: v','v',3),(3,'Esta es la representación de

la letra: x','x',4),(3,'Esta es la representación de la letra:

y','y',5),(3,'Esta es la representación de la letra: z','z',6),(3,'Esta

es la representación de la letra: á','a2',7),(3,'Esta es la

representación de la letra: é','e2',8),(3,'Esta es la representación de

la letra: í','i2',9),(3,'Esta es la representación de la letra:

ó','o2',10),(3,'Esta es la representación de la letra: ú','u2',11);";

String Ins_Braille4="insert into Braille values(4,'En la 4ª serie están

los elementos de la 1ª serie, añadiendo el punto número 6. En esta serie

se forman signos propios del francés, por lo que aquí sólo presentamos

las letras que nos interesan en español','',1),(4,'Esta es la

representación de la letra: ñ','n2',2),(4,'Esta es la representación de

la letra: ü','u3',3),(4,'Esta es la representación de la letra:

w','w',4);";

String Ins_Braille5="insert into Braille values(5,'En la 5ª serie tenemos

los signos de la primera serie, pero utilizando los puntos de la mitad

inferior de la celdilla o cajetín. Así, conseguimos los signos de

puntuación','',1),(5,'Para representar la coma(,) se usa este

signo','coma',2),(5,'Para representar punto y coma(;) se usa este

signo','puntcom',3),(5,'Para representar los dospuntos(:) se usa este

signo','dospunt',4),(5,'Para representar el signo de la suma(+) se usa

este signo','suma',5),(5,'Los signos de interrogación(¿?) se representan

como se aprecia en la imagen. Se ponen al inicio y al final de la frase,

tal como se hace en tinta','interrogacion',6),(5,'Los signos de

admiración(¡!) se representan como se aprecia en la imagen. Se ponen al

inicio y al final de la frase','admiracion',7),(5,'El signo igual(=) se

representa de la siguiente manera','igual',8),(5,'Las Comillas se

representan como se aprecia en la imagen, van al inicio y al final de la

frase','comillas',9),(5,'Esta imagen representa la escritura en cursiva,

se usa para resaltar alguna palabra o frase de

interés','cursiva',10),(5,'Para representar los grados(°) se usa el

siguiente símbolo','grados',11);";

onCreate: en este método se ejecutan los Query de las instrucciones anteriores,

de no ser así la base de datos no sería creada. Recibe como parámetro un objeto

de tipo SQLiteDatabase, se usa la palabra reservada execSQL para ejecutar las

instrucciones anteriores y crear la base de datos.

public void onCreate(SQLiteDatabase db) {

db.execSQL(Crea_Us);

db.execSQL(Crea_PBraille);

db.execSQL(Crea_Silencio);

db.execSQL(Crea_Num);

db.execSQL(Crea_Signos);

db.execSQL(Crea_Notas);

db.execSQL(Crea_Braille);

db.execSQL(Ins_Us);

db.execSQL(Ins_Silencio);

db.execSQL(Ins_Num);

db.execSQL(Ins_Sig);

db.execSQL(Ins_Nota);

db.execSQL(Ins_PBraille1);

db.execSQL(Ins_PBraille2);

db.execSQL(Ins_PBraille3);

Page 115: ARNOLD STIVEN ALFONSO CONTRERAS

115

db.execSQL(Ins_PBraille4);

db.execSQL(Ins_PBraille5);

db.execSQL(Ins_Braille1);

db.execSQL(Ins_Braille2);

db.execSQL(Ins_Braille3);

db.execSQL(Ins_Braille4);

db.execSQL(Ins_Braille5);}

Page 116: ARNOLD STIVEN ALFONSO CONTRERAS

116

MANUAL DEL USUARIO.

APLICACIÓN MÓVIL PARA EL APRENDIZAJE DEL LENGUAJE BRAILLE Y LA

SIGNOGRAFÍA BÁSICA USADA EN LAS ÁREAS DE MATEMÁTICAS Y

MÚSICA EN PERSONAS VIDENTES

ARNOLD STIVEN ALFONSO CONTRERAS

UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS

FACULTAD TECNOLOGICA

TECNOLOGIA EN SISTEMATIZACION DE DATOS

BOGOTA

2016

CONTENIDO.

Page 117: ARNOLD STIVEN ALFONSO CONTRERAS

117

Contenido

1. INTRODUCCION. .......................................................................................................................... 118

2. REQUERIMIENTOS DEL DISPOSITIVO. ......................................................................................... 118

3. INSTALACION DE LA APLICACIÓN. ............................................................................................... 118

4. NAVEGANDO POR APPBRAILLE ................................................................................................... 123

5. Módulos AppBraille ..................................................................................................................... 124

5.1 Módulo De Aprendizaje: ....................................................................................................... 124

5.2 Módulo De Glosario: ............................................................................................................. 124

5.3 Módulo De Evaluación: ......................................................................................................... 126

5.4 Módulo De Transcripción: ..................................................................................................... 127

Page 118: ARNOLD STIVEN ALFONSO CONTRERAS

118

1. INTRODUCCION.

AppBraille es una aplicación para dispositivos móviles con sistema operativo

Android desde API 19 o superior, aunque tambien se puede usar en dispositivos

desde el API 16; esta aplicación se realizó para que los docentes tengan una

herramienta para poder realizar material a sus estudiantes invidentes.

Además, si pensamos en la educación inclusiva lo ideal sería que una persona

con discapacidad visual pueda realizar sus estudios donde haya un ambiente

propicio y esto se puede lograr si sus compañeros saben algo de lenguaje Braille

porque así el menor no se sentiría excluido.

2. REQUERIMIENTOS DEL DISPOSITIVO.

HARDWARE SOTWARE

Pantalla 768x1280 -dpi Memoria: 5MB libres para su instalación. RAM: 1GB

Sistema Operativo: Android 4.4.4(API 19) o superior posterior hasta Android 4.1.1 (API 16) Aplicaciones: Antivirus. (Opcional) Procesador de texto Visor de imágenes Lector de archivos PDF

3. INSTALACION DE LA APLICACIÓN.

Esta aplicación se puede descargar compartiendo el apk por medio de bluetooth,

correo electrónico o desde un computador conectando el dispositivo y siguiendo

estos pasos:

Page 119: ARNOLD STIVEN ALFONSO CONTRERAS

119

Imagen 1 – Carpeta descargas

Fuente: Autor.

Mover el apk a la carpeta Descargas de su dispositivo.

Imagen 2 – Selección del apk

Fuente: Autor.

Page 120: ARNOLD STIVEN ALFONSO CONTRERAS

120

Imagen 3 - Copia apk

Fuente: Autor.

En el dispositivo busque la opción de “Admin. De archivos” e ingrese

Imagen 4 – Admin. De Archivos

Fuente: Autor.

Page 121: ARNOLD STIVEN ALFONSO CONTRERAS

121

Ubique la carpeta “Descargas” allí encontrara el apk que acabó de copiar al

dispositivo

Imagen 5- Ubicar apk

Fuente: Autor

Al oprimir en el apk le preguntara si desea instalar la aplicación, cuando acepte

espere un momento mientras se instala, será notificado cuando finalice la

instalación

Imagen 6 – Confirmación e instalación de la aplicación

Fuente: Autor

Page 122: ARNOLD STIVEN ALFONSO CONTRERAS

122

Cuando explore el menú del dispositivo, encontrara la aplicación

Imagen 7- Ubicar aplicación Instalada

Fuente: Autor.

Page 123: ARNOLD STIVEN ALFONSO CONTRERAS

123

4. NAVEGANDO POR APPBRAILLE

Al ingresar a AppBraille encontrará una animación que le da la bienvenida a la

aplicación.

Imagen 8 – animación inicio de la aplicación.

Fuente: Autor.

El menú principal consta de cuatro opciones, la primera corresponde al módulo

“Aprendizaje” donde podrá aprender el lenguaje según la metodología Bliseo, es

decir, aprenderá por series; la segunda opción, “Glosario” es donde podrá

consultar la documentación disponible sobre el lenguaje Braille que tiene la

aplicación, el tercer módulo será el de evaluación donde podrá encontrar

“exámenes” sobre su nivel de Braille y pruebas sobre conocimiento Música y

Matemáticas según lo proporcionado por el glosario. Por último, encontrará el

módulo de transcripción, donde podrá transcribir un texto a lenguaje Braille.

Imagen 9 - Módulos Aplicación

Fuente: Autor.

Page 124: ARNOLD STIVEN ALFONSO CONTRERAS

124

5. Módulos AppBraille

5.1 Módulo De Aprendizaje:

Este módulo está asociado con una base de datos donde se encuentra la

información correspondiente a cada serie, para un aprendizaje más ameno, se

optó por la metodologia Bliseo la cual enseña como primer medida el signo

generador, luego se aprende el lenguaje a travez de 5 series; el usuario empieza

en el nivel 1 hasta llegar al 5, para avanzar debe aprobar el examen de cada nivel.

Imagen 10- Módulo De Aprendizaje

Fuente: Autor.

5.2 Módulo De Glosario:

En este módulo de encuentra información referente al lenguaje Braille, se divide en tres bloques:

Alfabeto, Música y Matemáticas; los cuales contienes temas relacionados con cada área para que

así sea más fácil acceder a esa información.

Page 125: ARNOLD STIVEN ALFONSO CONTRERAS

125

Imagen 11- Módulo De Glosario

Fuente: Autor.

Cuando se elige uno de esos temas, se re direcciona a una actividad donde se muestra la

información que el usuario escogió.

Imagen 12- Actividades Con Información de los temas

Fuente: Autor.

Page 126: ARNOLD STIVEN ALFONSO CONTRERAS

126

5.3 Módulo De Evaluación:

En este módulo se encuentran exámenes para evaluar el nivel de Braille y otros para practicar lo

aprendido en el glosario con respecto a las áreas de música y matemáticas. Para que el usuario

avance de nivel en Braille debe aprobar el examen correspondiente a ese nivel, pero en las otras

áreas no implica nada, sólo son ejercicios para practicar.

Imagen 13- Módulo De Evaluación

Fuente: Autor.

Cada opción envía al Usuario a una actividad con un examen para evaluar el tema que escogió, en

el caso de “Evaluar Nivel” el examen será sobre el nivel en el que se encuentre el usuario en ese

momento, si falla regresará al nivel anterior y si aprueba avanzará de nivel.

Imagen 14 – Examenes

Page 127: ARNOLD STIVEN ALFONSO CONTRERAS

127

Fuente: Autor.

5.4 Módulo De Transcripción:

En este módulo el usuario puede hacer transcripción de texto a braille, sólo debe escribir texto en

el campo o pegarlo desde algún lugar y oprimir el botón transcribir para que la aplicación

convierta el texto en lenguaje Braille.

Imagen 15- Módulo De Transcripción

Fuente: Autor.

Page 128: ARNOLD STIVEN ALFONSO CONTRERAS

128

CÓDIGO FUENTE

APLICACIÓN MÓVIL PARA EL APRENDIZAJE DEL LENGUAJE BRAILLE Y LA

SIGNOGRAFÍA BÁSICA USADA EN LAS ÁREAS DE MATEMÁTICAS Y

MÚSICA EN PERSONAS VIDENTES

ARNOLD STIVEN ALFONSO CONTRERAS

UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS

FACULTAD TECNOLOGICA

TECNOLOGIA EN SISTEMATIZACION DE DATOS

BOGOTA

2016

Page 129: ARNOLD STIVEN ALFONSO CONTRERAS

129

Contenido

1. Clases ....................................................................................................................................... 131

acentos ................................................................................................................................ 131

Aprendizaje ......................................................................................................................... 133

Asig_Adapter ....................................................................................................................... 135

cont_ej ................................................................................................................................. 137

DataProvider ....................................................................................................................... 139

DbHelper ............................................................................................................................. 140

Ejercicios .............................................................................................................................. 140

ExpAdapter .......................................................................................................................... 146

Glosario ............................................................................................................................... 146

item ..................................................................................................................................... 148

Menuexp ............................................................................................................................. 149

Música ................................................................................................................................. 150

Notas ................................................................................................................................... 153

notas_ej ............................................................................................................................... 153

num_ej ................................................................................................................................ 155

números .............................................................................................................................. 158

Principal ............................................................................................................................... 159

signos_mate ........................................................................................................................ 159

signosmate_ej ..................................................................................................................... 163

silencios ............................................................................................................................... 165

silencios_ej .......................................................................................................................... 167

Splash .................................................................................................................................. 169

trans_l .................................................................................................................................. 170

Transcriptor ......................................................................................................................... 170

2. Animación................................................................................................................................ 170

animacion ............................................................................................................................ 182

3. XML .......................................................................................................................................... 182

Activity_acentos .................................................................................................................. 183

Page 130: ARNOLD STIVEN ALFONSO CONTRERAS

130

Activity_aprendizaje ............................................................................................................ 184

Activity_ejercicios ............................................................................................................... 185

Activity_Glosario ................................................................................................................. 185

Activity_menuexp ............................................................................................................... 186

Activity_notas ...................................................................................................................... 187

Activity_numeros ................................................................................................................ 187

Activity_principal ................................................................................................................. 188

Activity_signos_mate .......................................................................................................... 189

Activity_silencios ................................................................................................................. 189

Activity_transcriptor ........................................................................................................... 190

Child_layout ........................................................................................................................ 190

Content_ejercicios............................................................................................................... 191

Content_glosario ................................................................................................................. 192

Content_notas ..................................................................................................................... 193

Content_numeros ............................................................................................................... 193

Content_principal ................................................................................................................ 194

Content_transcriptor .......................................................................................................... 194

Eje_lay ................................................................................................................................. 196

Ítem_menu .......................................................................................................................... 198

Ítem_view ............................................................................................................................ 198

Music_menu ........................................................................................................................ 199

Splash_screen ...................................................................................................................... 199

Transc_layout ...................................................................................................................... 200

Page 131: ARNOLD STIVEN ALFONSO CONTRERAS

131

1. Clases (JAVA)

About package com.example.arnold.appbraille;

import android.content.Intent;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.view.View;

public class about extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_about);

findViewById(R.id.imageButton3).setOnClickListener(new

View.OnClickListener() {

@Override

public void onClick(View v) {

startActivity(new Intent(about.this, Principal.class));

about.super.finish();

}

});

}

}

acentos package com.example.arnold.appbraille;

import android.content.Intent;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.view.View;

import android.view.ViewGroup;

import android.widget.ArrayAdapter;

import android.widget.ImageView;

import android.widget.ListView;

import android.widget.TextView;

import java.util.ArrayList;

import java.util.List;

public class acentos extends AppCompatActivity {

Page 132: ARNOLD STIVEN ALFONSO CONTRERAS

132

private List<item> arrayletra = new ArrayList<item>();

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_acentos);

letras();

verletra();

findViewById(R.id.imageButton10).setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

startActivity(new Intent(acentos.this, Menuexp.class));

acentos.super.finish();

}

});

}

private void letras() {

arrayletra.add(new item("á", R.drawable.a2));

arrayletra.add(new item("é", R.drawable.e2));

arrayletra.add(new item("í", R.drawable.i2));

arrayletra.add(new item("ó", R.drawable.o2));

arrayletra.add(new item("ú", R.drawable.u2));

arrayletra.add(new item("ü", R.drawable.u3));

}

private void verletra() {

ArrayAdapter<item> adapter = new MyListAdapter();

ListView list = (ListView) findViewById(R.id.lista_acentos);

list.setAdapter(adapter);

}

private class MyListAdapter extends ArrayAdapter<item> {

public MyListAdapter() {

super(acentos.this, R.layout.item_view, arrayletra);

}

public View getView(int position, View ConvertView, ViewGroup parent) {

Page 133: ARNOLD STIVEN ALFONSO CONTRERAS

133

View itemView = ConvertView;

if (itemView == null)

itemView = getLayoutInflater().inflate(R.layout.item_view, parent, false);

item letra_act = arrayletra.get(position);

ImageView ImageView= (ImageView) itemView.findViewById(R.id.imagen);

ImageView.setImageResource(letra_act.getimg());

TextView letrat =(TextView)itemView.findViewById(R.id.Text_letra);

letrat.setText(letra_act.getop());

return itemView;

}

}

}

Aprendizaje package com.example.arnold.appbraille;

import android.content.Intent;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.ImageButton;

import android.widget.ImageView;

import android.widget.TextView;

import android.widget.Toast;

Page 134: ARNOLD STIVEN ALFONSO CONTRERAS

134

public class Aprendizaje extends AppCompatActivity {

ImageButton Atras, Siguiente;

TextView Text;

ImageView Imagen;

int p=1,niv=0;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_aprendizaje);

DbHelper dbHp= new DbHelper(null, "Braille.sqlite", this,

1);

SQLiteDatabase db=dbHp.getReadableDatabase();

String Query="Select * from Usuario where Nivel=1";

Cursor c = db.rawQuery(Query, null);

c.moveToFirst();

niv=c.getInt(1);

Atras = (ImageButton)findViewById(R.id.Anterior);

Siguiente = (ImageButton)findViewById(R.id.siguiente);

Text = (TextView)findViewById(R.id.text_ap);

Imagen= (ImageView)findViewById(R.id.image_ap);

poner_letras(niv);

findViewById(R.id.Regresar).setOnClickListener(new

View.OnClickListener() {

@Override

public void onClick(View v) {

startActivity(new Intent(Aprendizaje.this,

Principal.class));

Aprendizaje.super.finish();

}

});

Atras.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

if (p > 1){

p = p - 1;

poner_letras(niv);}

}

});

Siguiente.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

avanzar();

}

});

}

public void poner_letras(int niv){

String texto = null,Ruta = null;

DbHelper dbHp= new DbHelper(null, "Braille.sqlite", this,

1);

SQLiteDatabase db=dbHp.getReadableDatabase();

String Query="Select * from Braille where Nivel="+niv+" and

NText="+p;

Cursor c = db.rawQuery(Query,null);

c.moveToFirst();

texto=c.getString(1);

Page 135: ARNOLD STIVEN ALFONSO CONTRERAS

135

Ruta=c.getString(2);

Text.setText(texto);

String mDrawableName = Ruta;

int resID = getResources().getIdentifier(mDrawableName ,

"drawable", getPackageName());

Imagen.setImageResource(resID);

c.close();

db.close();

}

public void avanzar(){

if(niv==1){

if (p <= 11)

p = p + 1;

if (p < 13)

poner_letras(niv);}

if(niv==2){

if (p <= 9)

p = p + 1;

if (p < 11)

poner_letras(niv);}

if(niv==3){

if (p <= 11)

p = p + 1;

if (p < 12)

poner_letras(niv);}

if(niv==4){

if (p <= 3)

p = p + 1;

if (p < 4)

poner_letras(niv);}

if(niv==5){

if (p <= 11)

p = p + 1;

if (p < 12)

poner_letras(niv);}

}

}

Asig_Adapter package com.example.arnold.appbraille;

import android.content.Context;

import android.graphics.Typeface;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseExpandableListAdapter;

import android.widget.TextView;

import java.util.HashMap;

import java.util.List;

/**

Page 136: ARNOLD STIVEN ALFONSO CONTRERAS

136

* Created by Arnold on 21/02/2016.

*/

public class Asig_Adapter extends BaseExpandableListAdapter{

private Context ctx;

private HashMap<String, List<String>> Asignaturas;

private List<String> Temas;

public Asig_Adapter(Context ctx,HashMap<String, List<String>>

Asignaturas,List<String> Temas){

this.ctx=ctx;

this.Asignaturas=Asignaturas;

this.Temas=Temas;

}

@Override

public int getGroupCount() {

return Temas.size();

}

@Override

public int getChildrenCount(int groupPosition) {

return Asignaturas.get(Temas.get(groupPosition)).size();

}

@Override

public Object getGroup(int groupPosition) {

return Temas.get(groupPosition);

}

@Override

public Object getChild(int parent, int child) {

return Asignaturas.get(Temas.get(parent)).get(child);

}

@Override

public long getGroupId(int groupPosition) {

return groupPosition;

}

@Override

public long getChildId(int parent, int child) {

return child;

}

@Override

public boolean hasStableIds() {

return false;

}

@Override

public View getGroupView(int groupPosition, boolean isExpanded, View

convertView, ViewGroup parent) {

String group_title=(String) getGroup(groupPosition);

if(convertView==null){

LayoutInflater inflater = (LayoutInflater)

ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

Page 137: ARNOLD STIVEN ALFONSO CONTRERAS

137

convertView=inflater.inflate(R.layout.child_layout,parent,false);}

TextView letrat = (TextView)

convertView.findViewById(R.id.Child_Text);

letrat.setTypeface(null, Typeface.BOLD);

letrat.setText(group_title);

return convertView;

}

@Override

public View getChildView(int parent, int child, boolean isLastChild,

View convertView, ViewGroup parentView) {

String Child_title= (String)getChild(parent,child);

if(convertView==null){

LayoutInflater inflater = (LayoutInflater)

ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

convertView=inflater.inflate(R.layout.child_layout,parentView,false);}

TextView letrat = (TextView)

convertView.findViewById(R.id.Child_Text);

letrat.setText(Child_title);

return convertView;

}

@Override

public boolean isChildSelectable(int groupPosition, int

childPosition) {

return true;

}

}

cont_ej package com.example.arnold.appbraille;

import android.content.Context;

import android.graphics.Typeface;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseExpandableListAdapter;

import android.widget.TextView;

import java.util.HashMap;

import java.util.List;

/**

* Created by Arnold on 21/02/2016.

*/

public class Asig_Adapter extends BaseExpandableListAdapter{

private Context ctx;

private HashMap<String, List<String>> Asignaturas;

private List<String> Temas;

Page 138: ARNOLD STIVEN ALFONSO CONTRERAS

138

public Asig_Adapter(Context ctx,HashMap<String, List<String>>

Asignaturas,List<String> Temas){

this.ctx=ctx;

this.Asignaturas=Asignaturas;

this.Temas=Temas;

}

@Override

public int getGroupCount() {

return Temas.size();

}

@Override

public int getChildrenCount(int groupPosition) {

return Asignaturas.get(Temas.get(groupPosition)).size();

}

@Override

public Object getGroup(int groupPosition) {

return Temas.get(groupPosition);

}

@Override

public Object getChild(int parent, int child) {

return Asignaturas.get(Temas.get(parent)).get(child);

}

@Override

public long getGroupId(int groupPosition) {

return groupPosition;

}

@Override

public long getChildId(int parent, int child) {

return child;

}

@Override

public boolean hasStableIds() {

return false;

}

@Override

public View getGroupView(int groupPosition, boolean isExpanded, View

convertView, ViewGroup parent) {

String group_title=(String) getGroup(groupPosition);

if(convertView==null){

LayoutInflater inflater = (LayoutInflater)

ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

convertView=inflater.inflate(R.layout.child_layout,parent,false);}

TextView letrat = (TextView)

convertView.findViewById(R.id.Child_Text);

letrat.setTypeface(null, Typeface.BOLD);

letrat.setText(group_title);

Page 139: ARNOLD STIVEN ALFONSO CONTRERAS

139

return convertView;

}

@Override

public View getChildView(int parent, int child, boolean isLastChild,

View convertView, ViewGroup parentView) {

String Child_title= (String)getChild(parent,child);

if(convertView==null){

LayoutInflater inflater = (LayoutInflater)

ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

convertView=inflater.inflate(R.layout.child_layout,parentView,false);}

TextView letrat = (TextView)

convertView.findViewById(R.id.Child_Text);

letrat.setText(Child_title);

return convertView;

}

@Override

public boolean isChildSelectable(int groupPosition, int

childPosition) {

return true;

}

}

DataProvider package com.example.arnold.appbraille;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

/**

* Created by Arnold on 21/02/2016.

*/

public class DataProvider {

public static HashMap<String, List<String>> getinfo() {

HashMap<String, List<String>> Det_asig = new HashMap<>();

List<String> Glosario = new ArrayList<String>();

Glosario.add("Alfabeto");

Glosario.add("Acentos");

List<String> Musica = new ArrayList<String>();

Musica.add("Notas");

Musica.add("Silencios");

List<String> Matematicas = new ArrayList<String>();

Matematicas.add("Números");

Matematicas.add("Signos");

Det_asig.put("Alfabeto", Glosario);

Det_asig.put("Música",Musica);

Det_asig.put("Matemáticas",Matematicas);

Page 140: ARNOLD STIVEN ALFONSO CONTRERAS

140

return Det_asig;

}

}

DbHelper package com.example.arnold.appbraille;

import android.content.Context;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper;

/**

* Created by Arnold on 31/01/2016.

*/

public class DbHelper extends SQLiteOpenHelper {

public static final String DB_NAME= "Braille.sqlite";

private static final int DB_SCHEME_VERSION= 1;

String Crea_Us="Create table Usuario (Nivel integer primary key, Niv

integer not null);";

String Crea_Silencio="Create table Silencio (NPreg integer primary

key, Pregunta text not null, Ruta text not null,Op text not null,

Respuesta text not null);";

String Crea_Num="Create table Numero (NPreg integer primary key,

Pregunta text not null, Ruta text not null,Op text not null, Respuesta

text not null);";

String Crea_Signos="Create table Signos (NPreg integer primary key,

Pregunta text not null, Ruta text not null,Op text not null, Respuesta

text not null);";

String Crea_Notas="Create table Notas (NPreg integer primary key,

Pregunta text not null, Ruta text not null,Op text not null, Respuesta

text not null);";

String Crea_PBraille="Create table PBraille (Nivel integer, Pregunta

text, Ruta text, Op text, NPreg integer, Respuesta text);";

String Crea_Braille="Create table Braille (Nivel integer, Texto text,

Ruta text, NText integer);";

String Ins_Us="insert into Usuario values (1,1),(2,1);";

String Ins_Num="insert into Numero values(1,'Selecciona el número que

está representado en Braille','num1','1 5 7 8','1'),(2,'Selecciona el

número que está representado en Braille','num6','4 5 6

7','6'),(3,'Selecciona el número que está representado en

Braille','num9','7 9 5 2','9'),(4,'Selecciona el número que está

representado en Braille','num0','5 3 7 0','0'),(5,'Selecciona el número

que está representado en Braille','num5','0 5 9 8','5'),(6,'Selecciona el

número que está representado en Braille','num4','1 6 4

9','4'),(7,'Selecciona el número que está representado en

Braille','num2','9 2 7 6','2'),(8,'Selecciona el número que está

representado en Braille','num34','24 34 73 69','34'),(9,'Selecciona el

número que está representado en Braille','num25','19 20 25

78','25'),(10,'Selecciona el número que está representado en

Braille','num89','89 24 78 62','89')";

String Ins_Sig="insert into Signos values(1,'Qué signo matemático

está representado en Braille?','divicion','÷ = > +','÷'),(2,'Qué signo

matemático está representado en Braille?','igual','÷ < = +/-

','='),(3,'Qué signo matemático está representado en

Braille?','masmenos','+ +/- - X','+/-'),(4,'Qué signo matemático está

Page 141: ARNOLD STIVEN ALFONSO CONTRERAS

141

representado en Braille?','mayorque','> + = -','>'),(5,'Qué signo

matemático está representado en Braille?','menorque','+ < ÷

X','<'),(6,'Qué signo matemático está representado en

Braille?','multiplicacion','< X +/- >','X'),(7,'Qué signo matemático está

representado en Braille?','noigual','>< +/- + -','><'),(8,'Qué signo

matemático está representado en Braille?','resta','÷ + - X','-'),(9,'Qué

signo matemático está representado en Braille?','suma','+ +/- ÷

X','+');";

String Ins_Nota="insert into Notas values(1,'Qué nota músical está

representada?','cr','Do Sol Re Mi','Do'),(2,'Qué nota músical está

representada?','dr','Mi Do Re La','Re'),(3,'Qué figura de Do está

representada?','cb','Redonda Blanca Corchea Negra','Blanca'),(4,'Qué nota

músical está representada?','fr','La Si Re Fa','Fa'),(5,'Qué figura de Mi

está representada?','ec','Blanca Corchea Negra

Redonda','Corchea'),(6,'Qué nota músical está representada?','br','La Si

Do Re','Si'),(7,'Qué figura de La está representada?','an','Fusa Blanca

Semifusa Corchea','Semifusa'),(8,'Qué nota músical está

representada?','ar','Si Mi La Do','La'),(9,'Qué figura de Sol está

representada?','gb','Negra Fusa Redonda Corchea','Fusa'),(10,'Qué nota

músical está representada?','gr','La Re Sol Mi','Sol');";

String Ins_Silencio="insert into Silencio values(1,'Qué silencio está

representado?','sin','negra blanca redonda fusa','negra'),(2,'Qué

silencio está representado?','sib','semifusa fusa garrapatea

negra','fusa'),(3,'Qué silencio está representado?','sir','corchea negra

redonda blanca','redonda'),(4,'Qué silencio está

representado?','sic','semicorchea fusa negra corchea','corchea'),(5,'En

este compás 4/4 qué silencio hay?','mu1','negra blanca redonda

semifusa','blanca'),(6,'En este compás 4/4 qué silencio

hay?','mu2','corchea negra blanca fusa','corchea');";

String Ins_PBraille1="insert into PBraille values(1,'Qué letra

representa este código en Braille?','a','a b c d',1,'a'),(1,'Qué letra

representa este código en Braille?','d','j i b d',2,'d'),(1,'Qué letra

representa este código en Braille?','j','f c j k',3,'j'),(1,'Qué letra

representa este código en Braille?','f','f i c a',4,'f'),(1,'Qué letra

representa este código en Braille?','h','m h i g',5,'h'),(1,'Qué palabra

está representada en Braille?','hija','dado caja hija

pato',6,'hija'),(1,'Qué letra representa este código en Braille?','i','j

i k o',7,'i'),(1,'Qué palabra está representada en Braille?','caja','pato

caja casa dado',8,'caja'),(1,'Qué letra representa este código en

Braille?','g','k i g j',9,'g'),(1,'Qué palabra está representada en

Braille?','abeja','adiós abeja vamos habla',10,'abeja');";

String Ins_PBraille2="insert into PBraille values(2,'Qué letra

representa este código en Braille?','k','j n k o',1,'k'),(2,'Qué letra

representa este código en Braille?','n','n p o d',2,'n'),(2,'Qué letra

representa este código en Braille?','p','n p l k',3,'p'),(2,'Qué letra

representa este código en Braille?','r','k o r a',4,'r'),(2,'Qué letra

representa este código en Braille?','t','n k o t',5,'t'),(2,'Qué palabra

está representada en Braille?','mono','coco mono cama

lodo',6,'mono'),(2,'Qué letra representa este código en Braille?','l','p

l k o',7,'l'),(2,'Qué palabra está representada en Braille?','moto','mono

lodo moto dado',8,'moto'),(2,'Qué palabra está representada en

Braille?','protesta','protesta molestia protegen

pasado',9,'protesta'),(2,'Qué palabra está representada en

Braille?','camino','latigo camino carrito casco',10,'camino');";

String Ins_PBraille3="insert into PBraille values(3,'Qué letra

representa este código en Braille?','u','x u k o',1,'u'),(3,'Qué letra

representa este código en Braille?','x','a p x t',2,'x'),(3,'Qué letra

Page 142: ARNOLD STIVEN ALFONSO CONTRERAS

142

representa este código en Braille?','z','n z o k',3,'z'),(3,'Qué letra

representa este código en Braille?','e2','k o r é',4,'é'),(3,'Qué letra

representa este código en Braille?','y','n k y t',5,'y'),(3,'Qué palabra

está representada en Braille?','zorro','coco zorro potro

lodo',6,'zorro'),(3,'Qué palabra está representada en

Braille?','tuba','ala fruta sala tuba',7,'tuba'),(3,'Qué palabra está

representada en Braille?','xilofono','camiones xilófono edificio

páginas',8,'xilófono'),(3,'Qué palabra está representada en

Braille?','mama','mamá coco papá lata',9,'mamá'),(3,'Qué palabra está

representada en Braille?','uva','ala uva iva ele',10,'uva');";

String Ins_PBraille4="insert into PBraille values(4,'Qué letra

representa este código en Braille?','n2','ñ m ü w',1,'ñ'),(4,'Qué letra

representa este código en Braille?','u3','x w ü t',2,'ü'),(4,'Qué letra

representa este código en Braille?','w','n w ü ñ',3,'w'),(4,'Qué palabra

está representada en Braille?','espanol','camiones edificio español

caminos',4,'español'),(4,'Qué palabra está representada en

Braille?','wilson','wilson cursiva walter bosque',5,'wilson'),(4,'Qué

palabra está representada en Braille?','pinguino','cigüeña pingüino

vestidor página',6,'pingüino'),(4,'Qué palabra está representada en

Braille?','tuba','ala fruta sala tuba',7,'tuba'),(4,'Qué palabra está

representada en Braille?','xilofono','camiones xilófono edificio

páginas',8,'xilófono'),(4,'Qué palabra está representada en

Braille?','name','ñame casa papá walt',9,'ñame'),(4,'Qué palabra está

representada en Braille?','ala','ala uva iva ele',10,'ala');";

String Ins_PBraille5="insert into PBraille values(5,'Qué signo de

puntuación está representado?','coma','coma dos_puntos punto

punto_y_coma',1,'coma'),(5,'Qué signo de puntuación está

representado?','puntcom','coma punto_y_coma admiración

pregunta',2,'punto_y_coma'),(5,'Qué signo de puntuación está

representado?','dospunt','punto punto_y_coma dos_puntos

coma',3,'dos_puntos'),(5,'Qué representa este símbolo?','suma','cursiva

suma igual grados',4,'suma'),(5,'Qué signo de puntuación está

representado?','interrogacion','punto admiración comillas

interrogación',5,'interrogación'),(5,'Qué signo de puntuación está

representado?','admiracion','admiración pregunta comillas

coma',6,'admiración'),(5,'Qué representa este símbolo?','igual','suma

coma igual cursiva',7,'igual'),(5,'Qué signo de puntuación está

representado?','comillas','comillas admiración pregunta

coma',8,'comillas'),(5,'Qué representa este símbolo?','cursiva','igual

suma cursiva grados',9,'cursiva'),(5,'Qué representa este

símbolo?','grados','igual grados cursiva suma',10,'grados');";

String Ins_Braille1="insert into Braille values(1,'El signo generador

de braille es una cajita cómo esta, la cual se compone de 6 puntos en

este orden','gen',1),(1,'para la 1º serie se utilizan únicamente los

cuatro puntos superiores (1, 2, 4, 5) y con ellos se forman las diez

primeras letras del alfabeto','',2),(1,'Esta es la representación de la

letra: a','a',3),(1,'Esta es la representación de la letra:

b','b',4),(1,'Esta es la representación de la letra: c','c',5),(1,'Esta

es la representación de la letra: d','d',6),(1,'Esta es la representación

de la letra: e','e',7),(1,'Esta es la representación de la letra:

f','f',8),(1,'Esta es la representación de la letra: g','g',9),(1,'Esta

es la representación de la letra: h','h',10),(1,'Esta es la

representación de la letra: i','i',11),(1,'Esta es la representación de

la letra: j','j',12);";

String Ins_Braille2="insert into Braille values(2,'La 2º serie se

forma con los puntos de la primera serie, añadiéndoles el punto número 3

y, así, obtenemos las siguientes letras, a excepción de la letra ñ

Page 143: ARNOLD STIVEN ALFONSO CONTRERAS

143

(conviene recordar aquí que Luis Braille era francés)','',1),(2,'Esta es

la representación de la letra: k','k',2),(2,'Esta es la representación de

la letra: l','l',3),(2,'Esta es la representación de la letra:

m','m',4),(2,'Esta es la representación de la letra: n','n',5),(2,'Esta

es la representación de la letra: o','o',6),(2,'Esta es la representación

de la letra: p','p',7),(2,'Esta es la representación de la letra:

q','q',8),(2,'Esta es la representación de la letra: r','r',9),(2,'Esta

es la representación de la letra: s','s',10),(2,'Esta es la

representación de la letra: t','t',11);";

String Ins_Braille3="insert into Braille values(3,'la 3ª serie se

forma con los puntos de la 2ª serie, añadiendo el punto número

6','',1),(3,'Esta es la representación de la letra: u','u',2),(3,'Esta es

la representación de la letra: v','v',3),(3,'Esta es la representación de

la letra: x','x',4),(3,'Esta es la representación de la letra:

y','y',5),(3,'Esta es la representación de la letra: z','z',6),(3,'Esta

es la representación de la letra: á','a2',7),(3,'Esta es la

representación de la letra: é','e2',8),(3,'Esta es la representación de

la letra: í','i2',9),(3,'Esta es la representación de la letra:

ó','o2',10),(3,'Esta es la representación de la letra: ú','u2',11);";

String Ins_Braille4="insert into Braille values(4,'En la 4ª serie

están los elementos de la 1ª serie, añadiendo el punto número

6.','',1),(4,'En esta serie se forman signos propios del francés, por lo

que aquí sólo presentamos las letras que nos interesan en

español','',2),(4,'Esta es la representación de la letra:

ñ','n2',3),(4,'Esta es la representación de la letra: ü','u3',4),(4,'Esta

es la representación de la letra: w','w',5);";

String Ins_Braille5="insert into Braille values(5,'En la 5ª serie

tenemos los signos de la primera serie, pero utilizando los puntos de la

mitad inferior de la celdilla o cajetín. Así, conseguimos los signos de

puntuación','',1),(5,'Para representar la coma(,) se usa este

signo','coma',2),(5,'Para representar punto y coma(;) se usa este

signo','puntcom',3),(5,'Para representar los dospuntos(:) se usa este

signo','dospunt',4),(5,'Para representar el signo de la suma(+) se usa

este signo','suma',5),(5,'Los signos de interrogación(¿?) se representan

como se aprecia en la imagen. Se ponen al inicio y al final de la frase,

tal como se hace en tinta','interrogacion',6),(5,'Los signos de

admiración(¡!) se representan como se aprecia en la imagen. Se ponen al

inicio y al final de la frase','admiracion',7),(5,'El signo igual(=) se

representa de la siguiente manera','igual',8),(5,'Las Comillas se

representan como se aprecia en la imagen, van al inicio y al final de la

frase','comillas',9),(5,'Esta imagen representa la escritura en cursiva,

se usa para resaltar alguna palabra o frase de

interés','cursiva',10),(5,'Para representar los grados(°) se usa el

siguiente símbolo','grados',11);";

public DbHelper(cont_ej ejercicios, String s, Context context, int i)

{

super(context, DB_NAME, null, DB_SCHEME_VERSION);

}

@Override

public void onCreate(SQLiteDatabase db) {

db.execSQL(Crea_Us);

db.execSQL(Crea_PBraille);

db.execSQL(Crea_Silencio);

db.execSQL(Crea_Num);

db.execSQL(Crea_Signos);

Page 144: ARNOLD STIVEN ALFONSO CONTRERAS

144

db.execSQL(Crea_Notas);

db.execSQL(Crea_Braille);

db.execSQL(Ins_Us);

db.execSQL(Ins_Silencio);

db.execSQL(Ins_Num);

db.execSQL(Ins_Sig);

db.execSQL(Ins_Nota);

db.execSQL(Ins_PBraille1);

db.execSQL(Ins_PBraille2);

db.execSQL(Ins_PBraille3);

db.execSQL(Ins_PBraille4);

db.execSQL(Ins_PBraille5);

db.execSQL(Ins_Braille1);

db.execSQL(Ins_Braille2);

db.execSQL(Ins_Braille3);

db.execSQL(Ins_Braille4);

db.execSQL(Ins_Braille5);

}

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int

newVersion) {

}

}

Ejercicios package com.example.arnold.appbraille;

import android.content.Intent;

import android.os.Bundle;

import android.support.design.widget.FloatingActionButton;

import android.support.design.widget.Snackbar;

import android.support.v7.app.AppCompatActivity;

import android.support.v7.widget.Toolbar;

import android.view.View;

import android.widget.Button;

import android.widget.ExpandableListView;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

public class Ejercicios extends AppCompatActivity {

HashMap<String, List<String>> lista_asignaturas;

List<String>Lista_temas;

ExpandableListView Exp_list;

Asig_Adapter Adapter;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_ejercicios);

Exp_list = (ExpandableListView) findViewById(R.id.expej);

lista_asignaturas = ExpAdapter.getinfo();

Lista_temas = new ArrayList<String>(lista_asignaturas.keySet());

Adapter = new Asig_Adapter(this, lista_asignaturas, Lista_temas);

Page 145: ARNOLD STIVEN ALFONSO CONTRERAS

145

Exp_list.setAdapter(Adapter);

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

setSupportActionBar(toolbar);

FloatingActionButton fab = (FloatingActionButton)

findViewById(R.id.fab);

fab.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

Snackbar.make(view, "Aqui puedes encontrar ejercicios

para evaluar tu nivel de Braille " +

"y lo aprendido en el glosario",

Snackbar.LENGTH_LONG)

.setAction("Action", null).show();

}

});

Exp_list.setOnChildClickListener(new

ExpandableListView.OnChildClickListener() {

@Override

public boolean onChildClick(ExpandableListView parent, View

v, int groupPosition, int childPosition, long id) {

if (groupPosition == 2 && childPosition == 0) {

Ejercicios.super.finish();

startActivity(new Intent(Ejercicios.this,

cont_ej.class));

}

if (groupPosition == 0 && childPosition == 0) {

Ejercicios.super.finish();

startActivity(new Intent(Ejercicios.this,

num_ej.class));

}

if (groupPosition == 0 && childPosition == 1) {

Ejercicios.super.finish();

startActivity(new Intent(Ejercicios.this,

signosmate_ej.class));

}

if (groupPosition == 1 && childPosition == 0) {

Ejercicios.super.finish();

startActivity(new Intent(Ejercicios.this,

notas_ej.class));

}

if (groupPosition == 1 && childPosition == 1) {

Ejercicios.super.finish();

startActivity(new Intent(Ejercicios.this,

silencios_ej.class));

}

return false;

}

});

findViewById(R.id.imageButton4).setOnClickListener(new

View.OnClickListener() {

@Override

public void onClick(View v) {

startActivity(new Intent(Ejercicios.this,

Page 146: ARNOLD STIVEN ALFONSO CONTRERAS

146

Principal.class));

Ejercicios.super.finish();

}

});

}

}

ExpAdapter package com.example.arnold.appbraille;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

/**

* Created by Arnold on 24/03/2016.

*/

public class ExpAdapter {

public static HashMap<String, List<String>> getinfo() {

HashMap<String, List<String>> Det_asig = new HashMap<>();

List<String> Braille = new ArrayList<String>();

Braille.add("Evaluar Nivel");

List<String> Musica = new ArrayList<String>();

Musica.add("Notas");

Musica.add("Silencios");

List<String> Matematicas = new ArrayList<String>();

Matematicas.add("Números");

Matematicas.add("Signos");

Det_asig.put("Braille", Braille);

Det_asig.put("Música",Musica);

Det_asig.put("Matemáticas",Matematicas);

return Det_asig;

}

}

Glosario package com.example.arnold.appbraille;

import android.content.Intent;

import android.os.Bundle;

import android.support.design.widget.FloatingActionButton;

import android.support.design.widget.Snackbar;

import android.support.v7.app.AppCompatActivity;

import android.support.v7.widget.Toolbar;

import android.view.View;

import android.view.ViewGroup;

import android.widget.ArrayAdapter;

import android.widget.ImageView;

import android.widget.ListView;

import android.widget.TextView;

import java.util.ArrayList;

import java.util.List;

Page 147: ARNOLD STIVEN ALFONSO CONTRERAS

147

public class Glosario extends AppCompatActivity {

private List<item> arrayletra = new ArrayList<item>();

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_glosario);

letras();

verletra();

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

setSupportActionBar(toolbar);

FloatingActionButton fab = (FloatingActionButton)

findViewById(R.id.fab);

fab.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

Snackbar.make(view, "Las letras mayúsculas se escriben

anteponiéndoles un prefijo formado por los puntos 4 y 6",

Snackbar.LENGTH_LONG)

.setAction("Action", null).show();

}

});

findViewById(R.id.imageButton).setOnClickListener(new

View.OnClickListener() {

@Override

public void onClick(View v) {

startActivity(new Intent(Glosario.this, Menuexp.class));

Glosario.super.finish();

}

});

}

private void letras() {

arrayletra.add(new item("a", R.drawable.a));

arrayletra.add(new item("b", R.drawable.b));

arrayletra.add(new item("c", R.drawable.c));

arrayletra.add(new item("d", R.drawable.d));

arrayletra.add(new item("e", R.drawable.e));

arrayletra.add(new item("f", R.drawable.f));

arrayletra.add(new item("g", R.drawable.g));

arrayletra.add(new item("h", R.drawable.h));

arrayletra.add(new item("i", R.drawable.i));

arrayletra.add(new item("j", R.drawable.j));

arrayletra.add(new item("k", R.drawable.k));

arrayletra.add(new item("l", R.drawable.l));

arrayletra.add(new item("m", R.drawable.m));

arrayletra.add(new item("n", R.drawable.n));

arrayletra.add(new item("ñ", R.drawable.n2));

arrayletra.add(new item("o", R.drawable.o));

arrayletra.add(new item("p", R.drawable.p));

arrayletra.add(new item("q", R.drawable.q));

arrayletra.add(new item("r", R.drawable.r));

arrayletra.add(new item("s", R.drawable.s));

Page 148: ARNOLD STIVEN ALFONSO CONTRERAS

148

arrayletra.add(new item("t", R.drawable.t));

arrayletra.add(new item("u", R.drawable.u));

arrayletra.add(new item("v", R.drawable.v));

arrayletra.add(new item("w", R.drawable.w));

arrayletra.add(new item("x", R.drawable.x));

arrayletra.add(new item("y", R.drawable.y));

arrayletra.add(new item("z", R.drawable.z));

}

private void verletra() {

ArrayAdapter<item> adapter = new MyListAdapter();

ListView list = (ListView) findViewById(R.id.lista_letras);

list.setAdapter(adapter);

}

private class MyListAdapter extends ArrayAdapter<item> {

public MyListAdapter() {

super(Glosario.this, R.layout.item_view, arrayletra);

}

public View getView(int position, View ConvertView, ViewGroup

parent) {

View itemView = ConvertView;

if (itemView == null)

itemView =

getLayoutInflater().inflate(R.layout.item_view, parent, false);

item letra_act = arrayletra.get(position);

ImageView ImageView= (ImageView)

itemView.findViewById(R.id.imagen);

ImageView.setImageResource(letra_act.getimg());

TextView letrat

=(TextView)itemView.findViewById(R.id.Text_letra);

letrat.setText(letra_act.getop());

return itemView;

}

}

}

item

package com.example.arnold.appbraille;

/**

* Created by Arnold on 3/02/2016.

Page 149: ARNOLD STIVEN ALFONSO CONTRERAS

149

*/

public class item {

private String op;

private int img;

public item(String op,int img){

setop(op);

setsimb(img);

}

public void setop(String let) {

this.op=let;

}

public void setsimb(int simb) {

this.img=simb;

}

public int getimg(){

return img;

}

public String getop(){

return op;

}

}

Menuexp package com.example.arnold.appbraille;

import android.content.Intent;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.view.View;

import android.widget.ExpandableListView;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

public class Menuexp extends AppCompatActivity {

HashMap<String, List<String>> lista_asignaturas;

List<String>Lista_temas;

ExpandableListView Exp_list;

Asig_Adapter Adapter;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_menuexp);

Exp_list = (ExpandableListView) findViewById(R.id.exp_List);

lista_asignaturas = DataProvider.getinfo();

Lista_temas = new ArrayList<String>(lista_asignaturas.keySet());

Adapter = new Asig_Adapter(this, lista_asignaturas, Lista_temas);

Exp_list.setAdapter(Adapter);

Exp_list.setOnChildClickListener(new

Page 150: ARNOLD STIVEN ALFONSO CONTRERAS

150

ExpandableListView.OnChildClickListener() {

@Override

public boolean onChildClick(ExpandableListView parent, View

v, int groupPosition, int childPosition, long id) {

if (groupPosition == 2 && childPosition == 0) {

Menuexp.super.finish();

startActivity(new Intent(Menuexp.this,

Glosario.class));}

if (groupPosition == 2 && childPosition == 1) {

Menuexp.super.finish();

startActivity(new Intent(Menuexp.this,

acentos.class));}

if (groupPosition == 0 && childPosition == 0) {

Menuexp.super.finish();

startActivity(new Intent(Menuexp.this,

numeros.class));}

if (groupPosition == 0 && childPosition == 1) {

Menuexp.super.finish();

startActivity(new Intent(Menuexp.this,

signos_mate.class));}

if (groupPosition == 1 && childPosition == 0) {

Menuexp.super.finish();

startActivity(new Intent(Menuexp.this,

musica.class));}

if (groupPosition == 1 && childPosition == 1) {

Menuexp.super.finish();

startActivity(new Intent(Menuexp.this,

silencios.class));}

return false;

}

});

findViewById(R.id.imageButton6).setOnClickListener(new

View.OnClickListener() {

@Override

public void onClick(View v) {

startActivity(new Intent(Menuexp.this, Principal.class));

}

});

}

}

Música package com.example.arnold.appbraille;

import android.content.Intent;

import android.os.Bundle;

import android.support.design.widget.FloatingActionButton;

import android.support.design.widget.Snackbar;

import android.support.v7.app.AppCompatActivity;

import android.support.v7.widget.Toolbar;

import android.view.View;

import android.view.ViewGroup;

import android.widget.ArrayAdapter;

import android.widget.ImageView;

import android.widget.ListView;

Page 151: ARNOLD STIVEN ALFONSO CONTRERAS

151

import java.util.ArrayList;

import java.util.List;

public class musica extends AppCompatActivity {

private List<notas> arraynotas = new ArrayList<notas>();

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_notas);

nota();

vernota();

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

setSupportActionBar(toolbar);

FloatingActionButton fab = (FloatingActionButton)

findViewById(R.id.fab);

fab.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

Snackbar.make(view, "Las notas se representan por

caracteres que corresponden a las letras d,e,f,g,h,i,j",

Snackbar.LENGTH_LONG)

.setAction("Action", null).show();

}

});

findViewById(R.id.imageButton5).setOnClickListener(new

View.OnClickListener() {

@Override

public void onClick(View v) {

startActivity(new Intent(musica.this, Menuexp.class));

musica.super.finish();

}

});

}

private void nota() {

arraynotas.add(new notas(R.drawable.crsc, R.drawable.cr));

arraynotas.add(new notas(R.drawable.cbf, R.drawable.cb));

arraynotas.add(new notas(R.drawable.cnsf, R.drawable.cn));

arraynotas.add(new notas(R.drawable.ccg, R.drawable.cc));

arraynotas.add(new notas(R.drawable.drsc, R.drawable.dr));

arraynotas.add(new notas(R.drawable.dbf, R.drawable.db));

arraynotas.add(new notas(R.drawable.dnsf, R.drawable.dn));

arraynotas.add(new notas(R.drawable.dcg, R.drawable.dc));

arraynotas.add(new notas(R.drawable.ersc, R.drawable.er));

arraynotas.add(new notas(R.drawable.ebf, R.drawable.eb));

arraynotas.add(new notas(R.drawable.ensf, R.drawable.en));

arraynotas.add(new notas(R.drawable.ecg, R.drawable.ec));

Page 152: ARNOLD STIVEN ALFONSO CONTRERAS

152

arraynotas.add(new notas(R.drawable.frsc, R.drawable.fr));

arraynotas.add(new notas(R.drawable.fbf, R.drawable.fb));

arraynotas.add(new notas(R.drawable.fnsf, R.drawable.fn));

arraynotas.add(new notas(R.drawable.fcg, R.drawable.fc));

arraynotas.add(new notas(R.drawable.grsc, R.drawable.gr));

arraynotas.add(new notas(R.drawable.gbf, R.drawable.gb));

arraynotas.add(new notas(R.drawable.gnsf, R.drawable.gn));

arraynotas.add(new notas(R.drawable.gcg, R.drawable.gc));

arraynotas.add(new notas(R.drawable.arsc, R.drawable.ar));

arraynotas.add(new notas(R.drawable.abf, R.drawable.ab));

arraynotas.add(new notas(R.drawable.ansf, R.drawable.an));

arraynotas.add(new notas(R.drawable.acg, R.drawable.ac));

arraynotas.add(new notas(R.drawable.brsc, R.drawable.br));

arraynotas.add(new notas(R.drawable.bbf, R.drawable.bb));

arraynotas.add(new notas(R.drawable.bnsf, R.drawable.bn));

arraynotas.add(new notas(R.drawable.bcg, R.drawable.bc));

}

private void vernota() {

ListView list = (ListView) findViewById(R.id.lista_notas);

ArrayAdapter<notas> adapter = new MyListAdapter();

list.setAdapter(adapter);

}

private class MyListAdapter extends ArrayAdapter<notas> {

public MyListAdapter() {

super(musica.this, R.layout.music_menu, arraynotas);

}

public View getView(int position, View ConvertView, ViewGroup

parent) {

View itemView = ConvertView;

if (itemView == null)

itemView =

getLayoutInflater().inflate(R.layout.music_menu, parent, false);

notas nota_act = arraynotas.get(position);

ImageView ImageView= (ImageView)

itemView.findViewById(R.id.img_nota);

ImageView.setImageResource(nota_act.getnota());

ImageView ImageView2= (ImageView)

itemView.findViewById(R.id.Img_notab);

ImageView2.setImageResource(nota_act.getnotab());

return itemView;

}

Page 153: ARNOLD STIVEN ALFONSO CONTRERAS

153

}

}

Notas package com.example.arnold.appbraille;

/**

* Created by Arnold on 19/02/2016.

*/

public class notas {

private int nota;

private int notab;

public notas(int nota,int notab){

setnot(nota);

setnotb(notab);

}

public void setnot(int nota) {

this.nota=nota;

}

public void setnotb(int notab) {

this.notab=notab;

}

public int getnota(){

return nota;

}

public int getnotab(){

return notab;

}

}

notas_ej package com.example.arnold.appbraille;

import android.content.Intent;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.ImageView;

import android.widget.RadioButton;

import android.widget.TextView;

Page 154: ARNOLD STIVEN ALFONSO CONTRERAS

154

import android.widget.Toast;

public class notas_ej extends AppCompatActivity {

int p=1,niv=0,aciertos=0;

String Resp;

Button Cancelar;

Button Siguiente;

TextView Preg;

ImageView imgp;

RadioButton r1,r2,r3,r4;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.eje_lay);

imgp= (ImageView)findViewById(R.id.Imagen_p);

Cancelar = (Button)findViewById(R.id.btn_canc);

Siguiente = (Button)findViewById(R.id.btn_env);

Preg= (TextView)findViewById(R.id.Txt_preg);

r1= (RadioButton)findViewById(R.id.R1);

r2= (RadioButton)findViewById(R.id.R2);

r3= (RadioButton)findViewById(R.id.R3);

r4= (RadioButton)findViewById(R.id.R4);

poner_letras(niv);

Cancelar.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

startActivity(new

Intent(notas_ej.this,Ejercicios.class));

notas_ej.super.finish();

}

});

Siguiente.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

if((r1.isChecked()==false)&&(r2.isChecked()==false)&&(r3.isChecked()==fal

se)&&(r4.isChecked()==false))

Toast.makeText(getApplicationContext(), "Selecciona

una Respuesta", Toast.LENGTH_LONG).show();

else{

if(p<11)

analizarrespuestas(Resp);

p=p+1;

if(p<11)

poner_letras(niv);

if(p==11){

if(aciertos>=4)

Toast.makeText(getApplicationContext(),

"Tuviste "+aciertos+" aciertos buen trabajo :D",

Toast.LENGTH_LONG).show();

if(aciertos<=3)

Toast.makeText(getApplicationContext(),

"Tuviste "+aciertos+" aciertos, estudia un poco más :C",

Toast.LENGTH_LONG).show();

startActivity(new

Page 155: ARNOLD STIVEN ALFONSO CONTRERAS

155

Intent(notas_ej.this,Ejercicios.class));

notas_ej.super.finish();}

if(p==10) {

Siguiente.setText("Terminar");}}

}

});

}

private void analizarrespuestas(String Resp) {

if(r1.isChecked())

if(Resp.equalsIgnoreCase((String) r1.getText()))

aciertos=aciertos+1;

if(r2.isChecked())

if(Resp.equalsIgnoreCase((String) r2.getText()))

aciertos=aciertos+1;

if(r3.isChecked())

if(Resp.equalsIgnoreCase((String) r3.getText()))

aciertos=aciertos+1;

if(r4.isChecked())

if(Resp.equalsIgnoreCase((String) r4.getText()))

aciertos=aciertos+1;

}

public void poner_letras(int niv){

String BPreg = null,Ruta = null,Op = null;

String[] Array;

DbHelper dbHp= new DbHelper(null, "Braille.sqlite", this, 1);

SQLiteDatabase db=dbHp.getReadableDatabase();

String Query="Select * from Notas where NPreg="+p;

Cursor c = db.rawQuery(Query, null);

c.moveToFirst();

BPreg=c.getString(1);

Ruta=c.getString(2);

Op=c.getString(3);

Resp=c.getString(4);

Preg.setText(BPreg);

String mDrawableName = Ruta;

int resID = getResources().getIdentifier(mDrawableName ,

"drawable", getPackageName());

imgp.setImageResource(resID);

Array=Op.split(" ");

r1.setText(Array[0]);

r2.setText(Array[1]);

r3.setText(Array[2]);

r4.setText(Array[3]);

c.close();

db.close();

Siguiente.setText("Siguiente");}

}

num_ej package com.example.arnold.appbraille;

import android.content.Intent;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.support.v7.app.AppCompatActivity;

Page 156: ARNOLD STIVEN ALFONSO CONTRERAS

156

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.ImageView;

import android.widget.RadioButton;

import android.widget.TextView;

import android.widget.Toast;

public class num_ej extends AppCompatActivity {

int p=1,niv=0,aciertos=0;

String Resp;

Button Cancelar;

Button Siguiente;

TextView Preg;

ImageView imgp;

RadioButton r1,r2,r3,r4;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.eje_lay);

DbHelper dbHp= new DbHelper(null, "Braille.sqlite", this, 1);

SQLiteDatabase db=dbHp.getReadableDatabase();

imgp= (ImageView)findViewById(R.id.Imagen_p);

Cancelar = (Button)findViewById(R.id.btn_canc);

Siguiente = (Button)findViewById(R.id.btn_env);

Preg= (TextView)findViewById(R.id.Txt_preg);

r1= (RadioButton)findViewById(R.id.R1);

r2= (RadioButton)findViewById(R.id.R2);

r3= (RadioButton)findViewById(R.id.R3);

r4= (RadioButton)findViewById(R.id.R4);

poner_letras(niv);

Cancelar.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

startActivity(new Intent(num_ej.this,Ejercicios.class));

num_ej.super.finish();

}

});

Siguiente.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

if((r1.isChecked()==false)&&(r2.isChecked()==false)&&(r3.isChecked()==fal

se)&&(r4.isChecked()==false))

Toast.makeText(getApplicationContext(), "Selecciona

una Respuesta", Toast.LENGTH_LONG).show();

else{

if(p<11)

analizarrespuestas(Resp);

p=p+1;

if(p<11)

poner_letras(niv);

if(p==11){

if(aciertos>=4)

Toast.makeText(getApplicationContext(),

Page 157: ARNOLD STIVEN ALFONSO CONTRERAS

157

"Tuviste "+aciertos+" aciertos buen trabajo :D",

Toast.LENGTH_LONG).show();

if(aciertos<=3)

Toast.makeText(getApplicationContext(),

"Tuviste "+aciertos+" aciertos, estudia un poco más :C",

Toast.LENGTH_LONG).show();

startActivity(new

Intent(num_ej.this,Ejercicios.class));

num_ej.super.finish();}

if(p==10) {

Siguiente.setText("Terminar");}}

}

});

}

private void analizarrespuestas(String Resp) {

if(r1.isChecked())

if(Resp.equalsIgnoreCase((String) r1.getText()))

aciertos=aciertos+1;

if(r2.isChecked())

if(Resp.equalsIgnoreCase((String) r2.getText()))

aciertos=aciertos+1;

if(r3.isChecked())

if(Resp.equalsIgnoreCase((String) r3.getText()))

aciertos=aciertos+1;

if(r4.isChecked())

if(Resp.equalsIgnoreCase((String) r4.getText()))

aciertos=aciertos+1;

}

public void poner_letras(int niv){

String BPreg = null,Ruta = null,Op = null;

String[] Array;

DbHelper dbHp= new DbHelper(null, "Braille.sqlite", this, 1);

SQLiteDatabase db=dbHp.getReadableDatabase();

String Query="Select * from Numero where NPreg="+p;

Cursor c = db.rawQuery(Query, null);

c.moveToFirst();

BPreg=c.getString(1);

Ruta=c.getString(2);

Op=c.getString(3);

Resp=c.getString(4);

Preg.setText(BPreg);

String mDrawableName = Ruta;

int resID = getResources().getIdentifier(mDrawableName ,

"drawable", getPackageName());

imgp.setImageResource(resID);

Array=Op.split(" ");

r1.setText(Array[0]);

r2.setText(Array[1]);

r3.setText(Array[2]);

r4.setText(Array[3]);

c.close();

db.close();

Siguiente.setText("Siguiente");}

}

Page 158: ARNOLD STIVEN ALFONSO CONTRERAS

158

números package com.example.arnold.appbraille;

import android.content.Intent;

import android.os.Bundle;

import android.support.design.widget.FloatingActionButton;

import android.support.design.widget.Snackbar;

import android.support.v7.app.AppCompatActivity;

import android.support.v7.widget.Toolbar;

import android.view.View;

import android.view.ViewGroup;

import android.widget.ArrayAdapter;

import android.widget.ImageView;

import android.widget.ListView;

import android.widget.TextView;

import java.util.ArrayList;

import java.util.List;

public class numeros extends AppCompatActivity {

private List<item> arraynum = new ArrayList<item>();

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_numeros);

num();

vernum();

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

setSupportActionBar(toolbar);

FloatingActionButton fab = (FloatingActionButton)

findViewById(R.id.fab);

fab.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

Snackbar.make(view, "Para escribir los números se utiliza

el prefijo formado por los puntos 3456", Snackbar.LENGTH_LONG)

.setAction("Action", null).show();

}

});

findViewById(R.id.imageButton7).setOnClickListener(new

View.OnClickListener() {

@Override

public void onClick(View v) {

startActivity(new Intent(numeros.this, Menuexp.class));

numeros.super.finish();

}

});

}

private void num() {

arraynum.add(new item("1", R.drawable.num1));

arraynum.add(new item("2", R.drawable.num2));

arraynum.add(new item("3", R.drawable.num3));

Page 159: ARNOLD STIVEN ALFONSO CONTRERAS

159

arraynum.add(new item("4", R.drawable.num4));

arraynum.add(new item("5", R.drawable.num5));

arraynum.add(new item("6", R.drawable.num6));

arraynum.add(new item("7", R.drawable.num7));

arraynum.add(new item("8", R.drawable.num8));

arraynum.add(new item("9", R.drawable.num9));

arraynum.add(new item("0", R.drawable.num0));

}

private void vernum() {

ArrayAdapter<item> adapter = new MyListAdapter();

ListView list = (ListView) findViewById(R.id.lista_num);

list.setAdapter(adapter);

}

private class MyListAdapter extends ArrayAdapter<item> {

public MyListAdapter() {

super(numeros.this, R.layout.item_view, arraynum);

}

public View getView(int position, View ConvertView, ViewGroup

parent) {

View itemView = ConvertView;

if (itemView == null)

itemView =

getLayoutInflater().inflate(R.layout.item_view, parent, false);

item letra_act = arraynum.get(position);

ImageView ImageView= (ImageView)

itemView.findViewById(R.id.imagen);

ImageView.setImageResource(letra_act.getimg());

TextView letrat

=(TextView)itemView.findViewById(R.id.Text_letra);

letrat.setText(letra_act.getop());

return itemView;

}

}

}

Principal package com.example.arnold.appbraille;

import android.content.Intent;

import android.database.sqlite.SQLiteDatabase;

import android.os.Bundle;

import android.support.design.widget.FloatingActionButton;

import android.support.design.widget.Snackbar;

import android.support.v7.app.AppCompatActivity;

import android.support.v7.widget.Toolbar;

import android.view.View;

Page 160: ARNOLD STIVEN ALFONSO CONTRERAS

160

import android.view.Menu;

import android.view.MenuItem;

import android.view.ViewGroup;

import android.widget.AdapterView;

import android.widget.ArrayAdapter;

import android.widget.ImageView;

import android.widget.ListView;

import android.widget.TextView;

import java.util.ArrayList;

import java.util.List;

public class Principal extends AppCompatActivity {

private List<item> arrayop = new ArrayList<item>();

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_principal);

opciones();

veropciones();

click();

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

setSupportActionBar(toolbar);

FloatingActionButton fab = (FloatingActionButton)

findViewById(R.id.fab);

fab.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

Snackbar.make(view, "Elige la opción que desees",

Snackbar.LENGTH_LONG)

.setAction("Action", null).show();

}

});

}

private void opciones() {

arrayop.add(new item("Aprendizaje", R.drawable.aprendizaje));

arrayop.add(new item("Glosario", R.drawable.glosario));

arrayop.add(new item("Evaluación", R.drawable.evaluar));

arrayop.add(new item("Transcripción", R.drawable.transcribir));

arrayop.add(new item("Acerca De", R.drawable.about));

}

private void veropciones() {

ArrayAdapter<item> adapter = new MyListAdapter();

ListView list = (ListView) findViewById(R.id.list_p);

list.setAdapter(adapter);

}

private void click(){

ListView list= (ListView)findViewById(R.id.list_p);

Page 161: ARNOLD STIVEN ALFONSO CONTRERAS

161

list.setOnItemClickListener(new AdapterView.OnItemClickListener()

{

@Override

public void onItemClick(AdapterView<?> parent, View view, int

position, long id) {

switch (position) {

case 0:startActivity(new

Intent(Principal.this,Aprendizaje.class));

finish();

break;

case 1:startActivity(new

Intent(Principal.this,Menuexp.class));

finish();

break;

case 2: startActivity(new Intent(Principal.this,

Ejercicios.class));

finish();

break;

case 3: startActivity(new Intent(Principal.this,

Transcriptor.class));

finish();

break;

case 4: startActivity(new Intent(Principal.this,

about.class));

finish();

break;

}

}

});

}

private class MyListAdapter extends ArrayAdapter<item> {

public MyListAdapter() {

super(Principal.this, R.layout.item_menu, arrayop);

}

public View getView(int position, View ConvertView, ViewGroup

parent) {

View itemView = ConvertView;

if (itemView == null)

itemView =

getLayoutInflater().inflate(R.layout.item_menu, parent, false);

item itm_act = arrayop.get(position);

ImageView ImageView= (ImageView)

itemView.findViewById(R.id.img_men);

ImageView.setImageResource(itm_act.getimg());

TextView letrat

=(TextView)itemView.findViewById(R.id.text_menu);

letrat.setText(itm_act.getop());

Page 162: ARNOLD STIVEN ALFONSO CONTRERAS

162

return itemView;

}

}

}

signos_mate package com.example.arnold.appbraille;

import android.content.Intent;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.view.View;

import android.view.ViewGroup;

import android.widget.ArrayAdapter;

import android.widget.ImageView;

import android.widget.ListView;

import android.widget.TextView;

import java.util.ArrayList;

import java.util.List;

public class signos_mate extends AppCompatActivity {

private List<item> arraynum = new ArrayList<item>();

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_signos_mate);

num();

vernum();

findViewById(R.id.imageButton9).setOnClickListener(new

View.OnClickListener() {

@Override

public void onClick(View v) {

startActivity(new Intent(signos_mate.this,

Menuexp.class));

signos_mate.super.finish();

}

});

}

private void num() {

arraynum.add(new item("÷", R.drawable.divicion));

arraynum.add(new item("=", R.drawable.igual));

arraynum.add(new item("+/-", R.drawable.masmenos));

arraynum.add(new item(">", R.drawable.mayorque));

arraynum.add(new item("<", R.drawable.menorque));

arraynum.add(new item("X", R.drawable.multiplicacion));

arraynum.add(new item("><", R.drawable.noigual));

arraynum.add(new item("-", R.drawable.resta));

arraynum.add(new item("+", R.drawable.suma));

}

private void vernum() {

ArrayAdapter<item> adapter = new MyListAdapter();

Page 163: ARNOLD STIVEN ALFONSO CONTRERAS

163

ListView list = (ListView) findViewById(R.id.lista_sigm);

list.setAdapter(adapter);

}

private class MyListAdapter extends ArrayAdapter<item> {

public MyListAdapter() {

super(signos_mate.this, R.layout.item_view, arraynum);

}

public View getView(int position, View ConvertView, ViewGroup

parent) {

View itemView = ConvertView;

if (itemView == null)

itemView =

getLayoutInflater().inflate(R.layout.item_view, parent, false);

item letra_act = arraynum.get(position);

ImageView ImageView= (ImageView)

itemView.findViewById(R.id.imagen);

ImageView.setImageResource(letra_act.getimg());

TextView letrat

=(TextView)itemView.findViewById(R.id.Text_letra);

letrat.setText(letra_act.getop());

return itemView;

}

}

}

signosmate_ej package com.example.arnold.appbraille;

import android.content.Intent;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.ImageView;

import android.widget.RadioButton;

import android.widget.TextView;

import android.widget.Toast;

public class signosmate_ej extends AppCompatActivity {

int p=1,niv=0,aciertos=0;

String Resp;

Button Cancelar;

Button Siguiente;

TextView Preg;

ImageView imgp;

RadioButton r1,r2,r3,r4;

Page 164: ARNOLD STIVEN ALFONSO CONTRERAS

164

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.eje_lay);

imgp= (ImageView)findViewById(R.id.Imagen_p);

Cancelar = (Button)findViewById(R.id.btn_canc);

Siguiente = (Button)findViewById(R.id.btn_env);

Preg= (TextView)findViewById(R.id.Txt_preg);

r1= (RadioButton)findViewById(R.id.R1);

r2= (RadioButton)findViewById(R.id.R2);

r3= (RadioButton)findViewById(R.id.R3);

r4= (RadioButton)findViewById(R.id.R4);

poner_letras(niv);

Cancelar.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

startActivity(new

Intent(signosmate_ej.this,Ejercicios.class));

signosmate_ej.super.finish();

}

});

Siguiente.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

if((r1.isChecked()==false)&&(r2.isChecked()==false)&&(r3.isChecked()==fal

se)&&(r4.isChecked()==false))

Toast.makeText(getApplicationContext(), "Selecciona

una Respuesta", Toast.LENGTH_LONG).show();

else{

if(p<10)

analizarrespuestas(Resp);

p=p+1;

if(p<10)

poner_letras(niv);

if(p==10){

if(aciertos>=4)

Toast.makeText(getApplicationContext(),

"Tuviste "+aciertos+" aciertos buen trabajo :D",

Toast.LENGTH_LONG).show();

if(aciertos<=3)

Toast.makeText(getApplicationContext(),

"Tuviste "+aciertos+" aciertos, estudia un poco más :C",

Toast.LENGTH_LONG).show();

startActivity(new

Intent(signosmate_ej.this,Ejercicios.class));

signosmate_ej.super.finish();}

if(p==9) {

Siguiente.setText("Terminar");}}

}

});

}

private void analizarrespuestas(String Resp) {

if(r1.isChecked())

if(Resp.equalsIgnoreCase((String) r1.getText()))

Page 165: ARNOLD STIVEN ALFONSO CONTRERAS

165

aciertos=aciertos+1;

if(r2.isChecked())

if(Resp.equalsIgnoreCase((String) r2.getText()))

aciertos=aciertos+1;

if(r3.isChecked())

if(Resp.equalsIgnoreCase((String) r3.getText()))

aciertos=aciertos+1;

if(r4.isChecked())

if(Resp.equalsIgnoreCase((String) r4.getText()))

aciertos=aciertos+1;

}

public void poner_letras(int niv){

String BPreg = null,Ruta = null,Op = null;

String[] Array;

DbHelper dbHp= new DbHelper(null, "Braille.sqlite", this, 1);

SQLiteDatabase db=dbHp.getReadableDatabase();

String Query="Select * from Signos where NPreg="+p;

Cursor c = db.rawQuery(Query, null);

c.moveToFirst();

BPreg=c.getString(1);

Ruta=c.getString(2);

Op=c.getString(3);

Resp=c.getString(4);

Preg.setText(BPreg);

String mDrawableName = Ruta;

int resID = getResources().getIdentifier(mDrawableName ,

"drawable", getPackageName());

imgp.setImageResource(resID);

Array=Op.split(" ");

r1.setText(Array[0]);

r2.setText(Array[1]);

r3.setText(Array[2]);

r4.setText(Array[3]);

c.close();

db.close();

Siguiente.setText("Siguiente");}

}

silencios package com.example.arnold.appbraille;

import android.content.Intent;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.view.View;

import android.view.ViewGroup;

import android.widget.ArrayAdapter;

import android.widget.ImageView;

import android.widget.ListView;

import java.util.ArrayList;

import java.util.List;

public class silencios extends AppCompatActivity {

private List<notas> arraynotas = new ArrayList<notas>();

Page 166: ARNOLD STIVEN ALFONSO CONTRERAS

166

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_silencios);

nota();

vernota();

findViewById(R.id.imageButton8).setOnClickListener(new

View.OnClickListener() {

@Override

public void onClick(View v) {

startActivity(new Intent(silencios.this, Menuexp.class));

silencios.super.finish();

}

});

}

private void nota() {

arraynotas.add(new notas(R.drawable.srsc, R.drawable.sir));

arraynotas.add(new notas(R.drawable.sbf, R.drawable.sib));

arraynotas.add(new notas(R.drawable.snsf, R.drawable.sin));

arraynotas.add(new notas(R.drawable.scg, R.drawable.sic));

}

private void vernota() {

ListView list = (ListView) findViewById(R.id.lista_sil);

ArrayAdapter<notas> adapter = new MyListAdapter();

list.setAdapter(adapter);

}

private class MyListAdapter extends ArrayAdapter<notas> {

public MyListAdapter() {

super(silencios.this, R.layout.music_menu, arraynotas);

}

public View getView(int position, View ConvertView, ViewGroup

parent) {

View itemView = ConvertView;

if (itemView == null)

itemView =

getLayoutInflater().inflate(R.layout.music_menu, parent, false);

notas nota_act = arraynotas.get(position);

ImageView ImageView= (ImageView)

itemView.findViewById(R.id.img_nota);

ImageView.setImageResource(nota_act.getnota());

ImageView ImageView2= (ImageView)

itemView.findViewById(R.id.Img_notab);

ImageView2.setImageResource(nota_act.getnotab());

Page 167: ARNOLD STIVEN ALFONSO CONTRERAS

167

return itemView;

}

}

}

silencios_ej package com.example.arnold.appbraille;

import android.content.Intent;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.ImageView;

import android.widget.RadioButton;

import android.widget.TextView;

import android.widget.Toast;

public class silencios_ej extends AppCompatActivity {

int p=1,niv=0,aciertos=0;

String Resp;

Button Cancelar;

Button Siguiente;

TextView Preg;

ImageView imgp;

RadioButton r1,r2,r3,r4;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.eje_lay);

DbHelper dbHp= new DbHelper(null, "Braille.sqlite", this, 1);

SQLiteDatabase db=dbHp.getReadableDatabase();

imgp= (ImageView)findViewById(R.id.Imagen_p);

Cancelar = (Button)findViewById(R.id.btn_canc);

Siguiente = (Button)findViewById(R.id.btn_env);

Preg= (TextView)findViewById(R.id.Txt_preg);

r1= (RadioButton)findViewById(R.id.R1);

r2= (RadioButton)findViewById(R.id.R2);

r3= (RadioButton)findViewById(R.id.R3);

r4= (RadioButton)findViewById(R.id.R4);

poner_letras(niv);

Cancelar.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

startActivity(new

Intent(silencios_ej.this,Ejercicios.class));

silencios_ej.super.finish();

}

});

Siguiente.setOnClickListener(new View.OnClickListener() {

Page 168: ARNOLD STIVEN ALFONSO CONTRERAS

168

@Override

public void onClick(View view) {

if((r1.isChecked()==false)&&(r2.isChecked()==false)&&(r3.isChecked()==fal

se)&&(r4.isChecked()==false))

Toast.makeText(getApplicationContext(), "Selecciona

una Respuesta", Toast.LENGTH_LONG).show();

else{

if(p<7)

analizarrespuestas(Resp);

p=p+1;

if(p<7)

poner_letras(niv);

if(p==7){

if(aciertos>=4)

Toast.makeText(getApplicationContext(),

"Tuviste "+aciertos+" aciertos buen trabajo :D",

Toast.LENGTH_LONG).show();

if(aciertos<=3)

Toast.makeText(getApplicationContext(),

"Tuviste "+aciertos+" aciertos, estudia un poco más :C",

Toast.LENGTH_LONG).show();

startActivity(new

Intent(silencios_ej.this,Ejercicios.class));

silencios_ej.super.finish();}

if(p==6) {

Siguiente.setText("Terminar");}}

}

});

}

private void analizarrespuestas(String Resp) {

if(r1.isChecked())

if(Resp.equalsIgnoreCase((String) r1.getText()))

aciertos=aciertos+1;

if(r2.isChecked())

if(Resp.equalsIgnoreCase((String) r2.getText()))

aciertos=aciertos+1;

if(r3.isChecked())

if(Resp.equalsIgnoreCase((String) r3.getText()))

aciertos=aciertos+1;

if(r4.isChecked())

if(Resp.equalsIgnoreCase((String) r4.getText()))

aciertos=aciertos+1;

}

public void poner_letras(int niv){

String BPreg = null,Ruta = null,Op = null;

String[] Array;

DbHelper dbHp= new DbHelper(null, "Braille.sqlite", this, 1);

SQLiteDatabase db=dbHp.getReadableDatabase();

String Query="Select * from Silencio where NPreg="+p;

Cursor c = db.rawQuery(Query, null);

c.moveToFirst();

BPreg=c.getString(1);

Ruta=c.getString(2);

Op=c.getString(3);

Page 169: ARNOLD STIVEN ALFONSO CONTRERAS

169

//NPreg integer , Pregunta text , Ruta text ,Op text , Respuesta

text

Resp=c.getString(4);

Preg.setText(BPreg);

String mDrawableName = Ruta;

int resID = getResources().getIdentifier(mDrawableName ,

"drawable", getPackageName());

imgp.setImageResource(resID);

Array=Op.split(" ");

r1.setText(Array[0]);

r2.setText(Array[1]);

r3.setText(Array[2]);

r4.setText(Array[3]);

c.close();

db.close();

Siguiente.setText("Siguiente");}

}

Splash package com.example.arnold.appbraille;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.animation.Animation;

import android.view.animation.AnimationUtils;

import android.widget.ImageView;

/**

* Created by Arnold on 27/02/2016.

*/

public class Splash extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.splash_screen);

final ImageView ImageView= (ImageView)

findViewById(R.id.img_anim);

final Animation animation =

AnimationUtils.loadAnimation(getBaseContext(),R.anim.animacion);

final Animation animation2 =

AnimationUtils.loadAnimation(getBaseContext(),R.anim.abc_fade_out);

ImageView.startAnimation(animation);

animation.setAnimationListener(new Animation.AnimationListener()

{

@Override

public void onAnimationStart(Animation animation) {

}

@Override

public void onAnimationEnd(Animation animation) {

ImageView.startAnimation(animation2);

finish();

startActivity(new Intent(Splash.this, Principal.class));

}

Page 170: ARNOLD STIVEN ALFONSO CONTRERAS

170

@Override

public void onAnimationRepeat(Animation animation) {

}

});

}

}

trans_l package com.example.arnold.appbraille;

/**

* Created by Arnold on 25/02/2016.

*/

public class trans_l {

private int letra;

public trans_l(int letra){

setnot(letra);

}

public void setnot(int letra) {

this.letra=letra;

}

public int getnota(){

return letra;

}

}

Transcriptor package com.example.arnold.appbraille;

import android.content.Intent;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.os.Bundle;

import android.os.Environment;

import android.support.design.widget.FloatingActionButton;

import android.support.design.widget.Snackbar;

import android.support.v7.app.AppCompatActivity;

import android.support.v7.widget.Toolbar;

import android.view.View;

import android.view.ViewGroup;

import android.widget.ArrayAdapter;

import android.widget.Button;

import android.widget.EditText;

import android.widget.ImageView;

import android.widget.ListView;

import android.widget.Toast;

import java.io.ByteArrayOutputStream;

import java.io.IOException;

Page 171: ARNOLD STIVEN ALFONSO CONTRERAS

171

import java.util.ArrayList;

import java.util.List;

import java.io.File;

import java.io.FileOutputStream;

import com.lowagie.text.Document;

import com.lowagie.text.DocumentException;

import com.lowagie.text.Image;

import com.lowagie.text.Paragraph;

import com.lowagie.text.pdf.PdfPTable;

import com.lowagie.text.pdf.PdfWriter;

public class Transcriptor extends AppCompatActivity {

Button button;

EditText editText;

private List<trans_l> arraynotas = new ArrayList<trans_l>();

private static int num;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_transcriptor);

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

setSupportActionBar(toolbar);

editText = (EditText)findViewById(R.id.editText);

button = (Button)findViewById(R.id.button);

FloatingActionButton fab = (FloatingActionButton)

findViewById(R.id.fab);

fab.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

Snackbar.make(view, "Escribe el texto que deseas

transcribir en el campo", Snackbar.LENGTH_LONG)

.setAction("Action", null).show();

}

});

button.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

String dato = editText.getText().toString();

img(dato);

verimg();

}

});

findViewById(R.id.imageButton2).setOnClickListener(new

View.OnClickListener() {

@Override

public void onClick(View v) {

startActivity(new Intent(Transcriptor.this,

Principal.class));

Transcriptor.super.finish();

}

});

}

public static File crearFichero(String nombreFichero) throws

Page 172: ARNOLD STIVEN ALFONSO CONTRERAS

172

IOException {

File ruta = getRuta();

File fichero = null;

if (ruta != null)

fichero = new File(ruta, nombreFichero);

return fichero;

}

public static File getRuta() {

File ruta = null;

if (Environment.MEDIA_MOUNTED.equals(Environment

.getExternalStorageState())) {

ruta = new

File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_

DOWNLOADS), "Transcripción");

if (ruta != null) {

if (!ruta.mkdirs()) {

if (!ruta.exists()) {

return null;

}

}

}

} else {

}

return ruta;

}

private void verimg(){

ArrayAdapter<trans_l> adapter = new MyListAdapter();

ListView list = (ListView) findViewById(R.id.lista_transc);

list.setAdapter(adapter);

}

private void img(String dato) {

int let=dato.length();

String car="";

arraynotas.clear();

Document documento = new Document();

File f = null;

try {

DbHelper dbHp= new DbHelper(null, "Braille.sqlite", this, 1);

SQLiteDatabase db=dbHp.getReadableDatabase();

String Query="Select * from Usuario where Nivel=1";

Cursor c = db.rawQuery(Query, null);

c.moveToFirst();

num=c.getInt(1);

String NOMBRE_DOCUMENTO = "Transcripción"+num+".pdf";

Bitmap bitmap;

Image imagen;

f = crearFichero(NOMBRE_DOCUMENTO);

FileOutputStream ficheroPdf = new

FileOutputStream(f.getAbsolutePath());

PdfWriter.getInstance(documento, ficheroPdf);

documento.open();

PdfPTable tabla = new PdfPTable(35);

Page 173: ARNOLD STIVEN ALFONSO CONTRERAS

173

documento.addTitle("Documento generado por AppBraille");

documento.add(new Paragraph("Perfore la hoja en la parte de

atras para que sea leída correctamente\n"));

for (int i=0;i<let;i++){

if(i!=let-1)

car=dato.substring(i,i+1);

if(i==let-1)

car=dato.substring(let-1);

if(car.equalsIgnoreCase(" ")||car.equalsIgnoreCase("")){

arraynotas.add(new trans_l(R.drawable.esp));

bitmap =

BitmapFactory.decodeResource(this.getResources(), R.drawable.esp);

ByteArrayOutputStream stream = new

ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 100,

stream);

imagen = Image.getInstance(stream.toByteArray());

tabla.addCell(imagen);}

if(car.equalsIgnoreCase("a")){

arraynotas.add(new trans_l(R.drawable.a));

bitmap =

BitmapFactory.decodeResource(this.getResources(), R.drawable.a);

ByteArrayOutputStream stream = new

ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 100,

stream);

imagen = Image.getInstance(stream.toByteArray());

tabla.addCell(imagen);

}

if(car.equalsIgnoreCase("b")){

arraynotas.add(new trans_l(R.drawable.b));

bitmap =

BitmapFactory.decodeResource(this.getResources(), R.drawable.b);

ByteArrayOutputStream stream = new

ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 100,

stream);

imagen = Image.getInstance(stream.toByteArray());

tabla.addCell(imagen);

}

if(car.equalsIgnoreCase("c")){

arraynotas.add(new trans_l(R.drawable.c));

bitmap =

BitmapFactory.decodeResource(this.getResources(), R.drawable.c);

ByteArrayOutputStream stream = new

ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 100,

stream);

imagen = Image.getInstance(stream.toByteArray());

tabla.addCell(imagen);

}

if(car.equalsIgnoreCase("d")){

arraynotas.add(new trans_l(R.drawable.d));

bitmap =

BitmapFactory.decodeResource(this.getResources(), R.drawable.d);

ByteArrayOutputStream stream = new

Page 174: ARNOLD STIVEN ALFONSO CONTRERAS

174

ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 100,

stream);

imagen = Image.getInstance(stream.toByteArray());

tabla.addCell(imagen);

}

if(car.equalsIgnoreCase("e")){

arraynotas.add(new trans_l(R.drawable.e));

bitmap =

BitmapFactory.decodeResource(this.getResources(), R.drawable.e);

ByteArrayOutputStream stream = new

ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 100,

stream);

imagen = Image.getInstance(stream.toByteArray());

tabla.addCell(imagen);

}

if(car.equalsIgnoreCase("é")){

arraynotas.add(new trans_l(R.drawable.e2));

bitmap =

BitmapFactory.decodeResource(this.getResources(), R.drawable.e2);

ByteArrayOutputStream stream = new

ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 100,

stream);

imagen = Image.getInstance(stream.toByteArray());

tabla.addCell(imagen);

}

if(car.equalsIgnoreCase("f")){

arraynotas.add(new trans_l(R.drawable.f));

bitmap =

BitmapFactory.decodeResource(this.getResources(), R.drawable.f);

ByteArrayOutputStream stream = new

ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 100,

stream);

imagen = Image.getInstance(stream.toByteArray());

tabla.addCell(imagen);

}

if(car.equalsIgnoreCase("g")){

arraynotas.add(new trans_l(R.drawable.g));

bitmap =

BitmapFactory.decodeResource(this.getResources(), R.drawable.g);

ByteArrayOutputStream stream = new

ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 100,

stream);

imagen = Image.getInstance(stream.toByteArray());

tabla.addCell(imagen);

}

if(car.equalsIgnoreCase("h")){

arraynotas.add(new trans_l(R.drawable.h));

bitmap =

BitmapFactory.decodeResource(this.getResources(), R.drawable.h);

ByteArrayOutputStream stream = new

ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 100,

Page 175: ARNOLD STIVEN ALFONSO CONTRERAS

175

stream);

imagen = Image.getInstance(stream.toByteArray());

tabla.addCell(imagen);

}

if(car.equalsIgnoreCase("i")){

arraynotas.add(new trans_l(R.drawable.i));

bitmap =

BitmapFactory.decodeResource(this.getResources(), R.drawable.i);

ByteArrayOutputStream stream = new

ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 100,

stream);

imagen = Image.getInstance(stream.toByteArray());

tabla.addCell(imagen);

}

if(car.equalsIgnoreCase("í")){

arraynotas.add(new trans_l(R.drawable.i2));

bitmap =

BitmapFactory.decodeResource(this.getResources(), R.drawable.i2);

ByteArrayOutputStream stream = new

ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 100,

stream);

imagen = Image.getInstance(stream.toByteArray());

tabla.addCell(imagen);

}

if(car.equalsIgnoreCase("j")){

arraynotas.add(new trans_l(R.drawable.j));

bitmap =

BitmapFactory.decodeResource(this.getResources(), R.drawable.j);

ByteArrayOutputStream stream = new

ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 100,

stream);

imagen = Image.getInstance(stream.toByteArray());

tabla.addCell(imagen);

}

if(car.equalsIgnoreCase("k")){

arraynotas.add(new trans_l(R.drawable.k));

bitmap =

BitmapFactory.decodeResource(this.getResources(), R.drawable.k);

ByteArrayOutputStream stream = new

ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 100,

stream);

imagen = Image.getInstance(stream.toByteArray());

tabla.addCell(imagen);

}

if(car.equalsIgnoreCase("l")){

arraynotas.add(new trans_l(R.drawable.l));

bitmap =

BitmapFactory.decodeResource(this.getResources(), R.drawable.l);

ByteArrayOutputStream stream = new

ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 100,

stream);

imagen = Image.getInstance(stream.toByteArray());

Page 176: ARNOLD STIVEN ALFONSO CONTRERAS

176

tabla.addCell(imagen);

}

if(car.equalsIgnoreCase("m")){

arraynotas.add(new trans_l(R.drawable.m));

bitmap =

BitmapFactory.decodeResource(this.getResources(), R.drawable.m);

ByteArrayOutputStream stream = new

ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 100,

stream);

imagen = Image.getInstance(stream.toByteArray());

tabla.addCell(imagen);

}

if(car.equalsIgnoreCase("n")){

arraynotas.add(new trans_l(R.drawable.n));

bitmap =

BitmapFactory.decodeResource(this.getResources(), R.drawable.n);

ByteArrayOutputStream stream = new

ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 100,

stream);

imagen = Image.getInstance(stream.toByteArray());

tabla.addCell(imagen);

}

if(car.equalsIgnoreCase("ñ")){

arraynotas.add(new trans_l(R.drawable.n2));

bitmap =

BitmapFactory.decodeResource(this.getResources(), R.drawable.n2);

ByteArrayOutputStream stream = new

ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 100,

stream);

imagen = Image.getInstance(stream.toByteArray());

tabla.addCell(imagen);

}

if(car.equalsIgnoreCase("o")){

arraynotas.add(new trans_l(R.drawable.o));

bitmap =

BitmapFactory.decodeResource(this.getResources(), R.drawable.o);

ByteArrayOutputStream stream = new

ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 100,

stream);

imagen = Image.getInstance(stream.toByteArray());

tabla.addCell(imagen);

}

if(car.equalsIgnoreCase("ó")){

arraynotas.add(new trans_l(R.drawable.o2));

bitmap =

BitmapFactory.decodeResource(this.getResources(), R.drawable.o2);

ByteArrayOutputStream stream = new

ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 100,

stream);

imagen = Image.getInstance(stream.toByteArray());

tabla.addCell(imagen);

}

Page 177: ARNOLD STIVEN ALFONSO CONTRERAS

177

if(car.equalsIgnoreCase("p")){

arraynotas.add(new trans_l(R.drawable.p));

bitmap =

BitmapFactory.decodeResource(this.getResources(), R.drawable.p);

ByteArrayOutputStream stream = new

ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 100,

stream);

imagen = Image.getInstance(stream.toByteArray());

tabla.addCell(imagen);

}

if(car.equalsIgnoreCase("q")){

arraynotas.add(new trans_l(R.drawable.q));

bitmap =

BitmapFactory.decodeResource(this.getResources(), R.drawable.q);

ByteArrayOutputStream stream = new

ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 100,

stream);

imagen = Image.getInstance(stream.toByteArray());

tabla.addCell(imagen);

}

if(car.equalsIgnoreCase("r")){

arraynotas.add(new trans_l(R.drawable.r));

bitmap =

BitmapFactory.decodeResource(this.getResources(), R.drawable.r);

ByteArrayOutputStream stream = new

ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 100,

stream);

imagen = Image.getInstance(stream.toByteArray());

tabla.addCell(imagen);

}

if(car.equalsIgnoreCase("s")){

arraynotas.add(new trans_l(R.drawable.s));

bitmap =

BitmapFactory.decodeResource(this.getResources(), R.drawable.s);

ByteArrayOutputStream stream = new

ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 100,

stream);

imagen = Image.getInstance(stream.toByteArray());

tabla.addCell(imagen);

}

if(car.equalsIgnoreCase("t")){

arraynotas.add(new trans_l(R.drawable.t));

bitmap =

BitmapFactory.decodeResource(this.getResources(), R.drawable.t);

ByteArrayOutputStream stream = new

ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 100,

stream);

imagen = Image.getInstance(stream.toByteArray());

tabla.addCell(imagen);

}

if(car.equalsIgnoreCase("u")){

arraynotas.add(new trans_l(R.drawable.u));

Page 178: ARNOLD STIVEN ALFONSO CONTRERAS

178

bitmap =

BitmapFactory.decodeResource(this.getResources(), R.drawable.u);

ByteArrayOutputStream stream = new

ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 100,

stream);

imagen = Image.getInstance(stream.toByteArray());

tabla.addCell(imagen);

}

if(car.equalsIgnoreCase("ú")){

arraynotas.add(new trans_l(R.drawable.u2));

bitmap =

BitmapFactory.decodeResource(this.getResources(), R.drawable.u2);

ByteArrayOutputStream stream = new

ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 100,

stream);

imagen = Image.getInstance(stream.toByteArray());

tabla.addCell(imagen);

}

if(car.equalsIgnoreCase("ü")){

arraynotas.add(new trans_l(R.drawable.u3));

bitmap =

BitmapFactory.decodeResource(this.getResources(), R.drawable.u3);

ByteArrayOutputStream stream = new

ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 100,

stream);

imagen = Image.getInstance(stream.toByteArray());

tabla.addCell(imagen);

}

if(car.equalsIgnoreCase("v")){

arraynotas.add(new trans_l(R.drawable.v));

bitmap =

BitmapFactory.decodeResource(this.getResources(), R.drawable.v);

ByteArrayOutputStream stream = new

ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 100,

stream);

imagen = Image.getInstance(stream.toByteArray());

tabla.addCell(imagen);

}

if(car.equalsIgnoreCase("w")){

arraynotas.add(new trans_l(R.drawable.w));

bitmap =

BitmapFactory.decodeResource(this.getResources(), R.drawable.w);

ByteArrayOutputStream stream = new

ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 100,

stream);

imagen = Image.getInstance(stream.toByteArray());

tabla.addCell(imagen);

}

if(car.equalsIgnoreCase("x")){

arraynotas.add(new trans_l(R.drawable.x));

bitmap =

BitmapFactory.decodeResource(this.getResources(), R.drawable.x);

Page 179: ARNOLD STIVEN ALFONSO CONTRERAS

179

ByteArrayOutputStream stream = new

ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 100,

stream);

imagen = Image.getInstance(stream.toByteArray());

tabla.addCell(imagen);

}

if(car.equalsIgnoreCase("y")){

arraynotas.add(new trans_l(R.drawable.y));

bitmap =

BitmapFactory.decodeResource(this.getResources(), R.drawable.y);

ByteArrayOutputStream stream = new

ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 100,

stream);

imagen = Image.getInstance(stream.toByteArray());

tabla.addCell(imagen);

}

if(car.equalsIgnoreCase("z")){

arraynotas.add(new trans_l(R.drawable.z));

bitmap =

BitmapFactory.decodeResource(this.getResources(), R.drawable.z);

ByteArrayOutputStream stream = new

ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 100,

stream);

imagen = Image.getInstance(stream.toByteArray());

tabla.addCell(imagen);

}

if(car.equalsIgnoreCase(";")){

arraynotas.add(new trans_l(R.drawable.puntcom));

bitmap =

BitmapFactory.decodeResource(this.getResources(), R.drawable.puntcom);

ByteArrayOutputStream stream = new

ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 100,

stream);

imagen = Image.getInstance(stream.toByteArray());

tabla.addCell(imagen);

}

if(car.equalsIgnoreCase(":")){

arraynotas.add(new trans_l(R.drawable.dospunt));

bitmap =

BitmapFactory.decodeResource(this.getResources(), R.drawable.dospunt);

ByteArrayOutputStream stream = new

ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 100,

stream);

imagen = Image.getInstance(stream.toByteArray());

tabla.addCell(imagen);

}

if(car.equalsIgnoreCase(",")){

arraynotas.add(new trans_l(R.drawable.coma));

bitmap =

BitmapFactory.decodeResource(this.getResources(), R.drawable.coma);

ByteArrayOutputStream stream = new

ByteArrayOutputStream();

Page 180: ARNOLD STIVEN ALFONSO CONTRERAS

180

bitmap.compress(Bitmap.CompressFormat.JPEG, 100,

stream);

imagen = Image.getInstance(stream.toByteArray());

tabla.addCell(imagen);

}

if(car.equalsIgnoreCase("¿")){

arraynotas.add(new

trans_l(R.drawable.interrogacion));

bitmap =

BitmapFactory.decodeResource(this.getResources(),

R.drawable.interrogacion);

ByteArrayOutputStream stream = new

ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 100,

stream);

imagen = Image.getInstance(stream.toByteArray());

tabla.addCell(imagen);

}

if(car.equalsIgnoreCase("?")){

arraynotas.add(new

trans_l(R.drawable.interrogacion));

bitmap =

BitmapFactory.decodeResource(this.getResources(), R.drawable.admiracion);

ByteArrayOutputStream stream = new

ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 100,

stream);

imagen = Image.getInstance(stream.toByteArray());

tabla.addCell(imagen);

}

if(car.equalsIgnoreCase("!")){

arraynotas.add(new trans_l(R.drawable.admiracion));

bitmap =

BitmapFactory.decodeResource(this.getResources(), R.drawable.admiracion);

ByteArrayOutputStream stream = new

ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 100,

stream);

imagen = Image.getInstance(stream.toByteArray());

tabla.addCell(imagen);

}

if(car.equalsIgnoreCase("¡")){

arraynotas.add(new trans_l(R.drawable.admiracion));

bitmap =

BitmapFactory.decodeResource(this.getResources(), R.drawable.admiracion);

ByteArrayOutputStream stream = new

ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 100,

stream);

imagen = Image.getInstance(stream.toByteArray());

tabla.addCell(imagen);

}

if(car.equalsIgnoreCase(".")){

arraynotas.add(new trans_l(R.drawable.punto));

bitmap =

BitmapFactory.decodeResource(this.getResources(), R.drawable.punto);

ByteArrayOutputStream stream = new

Page 181: ARNOLD STIVEN ALFONSO CONTRERAS

181

ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 100,

stream);

imagen = Image.getInstance(stream.toByteArray());

tabla.addCell(imagen);

}

if(car.equalsIgnoreCase("-")){

arraynotas.add(new trans_l(R.drawable.resta));

bitmap =

BitmapFactory.decodeResource(this.getResources(), R.drawable.resta);

ByteArrayOutputStream stream = new

ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 100,

stream);

imagen = Image.getInstance(stream.toByteArray());

tabla.addCell(imagen);

}

if(car.equalsIgnoreCase("\n")){

arraynotas.add(new trans_l(R.drawable.esp));

tabla.completeRow();

}

}

num=num+1;

db.execSQL("UPDATE Usuario SET Niv=" + num + " WHERE Nivel=1

");

documento.add(tabla);

documento.add(new Paragraph("\nDocumento generado por

AppBraille\n"));

documento.addCreationDate();

c.close();

db.close();

documento.close();

Toast.makeText(getApplicationContext(),"Se ha generado el

documento en SD/Download/Transcripción", Toast.LENGTH_LONG).show();

} catch (IOException |DocumentException e) {

e.printStackTrace();

}

}

private class MyListAdapter extends ArrayAdapter<trans_l> {

public MyListAdapter() {

super(Transcriptor.this, R.layout.transc_layout, arraynotas);

}

public View getView(int position, View ConvertView, ViewGroup

parent) {

View itemView = ConvertView;

if (itemView == null)

itemView =

getLayoutInflater().inflate(R.layout.transc_layout, parent, false);

trans_l letra_act = arraynotas.get(position);

ImageView ImageView= (ImageView)

itemView.findViewById(R.id.imageView);

ImageView.setImageResource(letra_act.getnota());

return itemView;

}

Page 182: ARNOLD STIVEN ALFONSO CONTRERAS

182

}

}

2. Animación (XML)

animacion <?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android">

<rotate

android:duration="3000"

android:fromDegrees="0"

android:toDegrees="360"

android:pivotX="50%"

android:pivotY="50%"/>

<scale

android:duration="3000"

android:pivotY="50%"

android:pivotX="50%"

android:toXScale="100%"

android:toYScale="100%"/>

</set>

3. Actividades (XML)

Activity_about <?xml version="1.0" encoding="utf-8"?>

<RelativeLayout

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

tools:context="com.example.arnold.appbraille.about"

android:background="#060000">

<LinearLayout

android:orientation="vertical"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_alignParentTop="true"

android:layout_centerHorizontal="true"

android:weightSum="1">

<ImageView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/imageView2"

android:layout_gravity="center_horizontal"

android:background="@drawable/info" />

<TextView

android:layout_width="299dp"

android:layout_height="wrap_content"

Page 183: ARNOLD STIVEN ALFONSO CONTRERAS

183

android:textAppearance="?android:attr/textAppearanceMedium"

android:id="@+id/textView4"

android:layout_gravity="center_horizontal"

android:layout_weight="10"

android:textColor="#ffffff"

android:textAlignment="center"

android:textSize="20dp"

android:text="AppBraille Versión 1.0 fue desarrollada por

Arnold Stiven Alfonso Contreras.

AppBraille es una herramienta que permite aprender Braille, transcribir

texto, consultar signografía musical y matemática." />

<ImageButton

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/imageButton3"

android:src="@android:drawable/ic_menu_revert"

android:layout_marginBottom="44dp"

android:layout_alignParentBottom="true"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="true" />

</LinearLayout>

</RelativeLayout>

Activity_acentos <?xml version="1.0" encoding="utf-8"?>

<RelativeLayout

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

tools:context="com.example.arnold.appbraille.acentos">

<ListView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/lista_acentos"

android:layout_alignParentTop="true"

android:layout_centerHorizontal="true"

android:background="@drawable/glosario"

android:divider="@android:drawable/divider_horizontal_dark"

android:dividerHeight="@dimen/abc_button_inset_horizontal_material" />

<ImageButton

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/imageButton10"

android:layout_alignParentBottom="true"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="true"

android:src="@android:drawable/ic_menu_revert" />

</RelativeLayout>

Page 184: ARNOLD STIVEN ALFONSO CONTRERAS

184

Activity_aprendizaje <?xml version="1.0" encoding="utf-8"?>

<RelativeLayout

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

tools:context="com.example.arnold.appbraille.Aprendizaje"

android:background="#010000">

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Texto De Ejemplo"

android:id="@+id/text_ap"

android:layout_alignParentTop="true"

android:layout_centerHorizontal="true"

android:textSize="35dp"

android:layout_alignParentEnd="false"

android:layout_alignParentStart="false"

android:textColor="#ffffff" />

<ImageView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/image_ap"

android:layout_below="@+id/text_ap"

android:layout_centerHorizontal="true"

android:src="@drawable/gen" />

<ImageButton

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/Anterior"

android:src="@drawable/abc_ic_ab_back_mtrl_am_alpha"

android:layout_alignParentBottom="true"

android:layout_toLeftOf="@+id/siguiente"

android:layout_toStartOf="@+id/siguiente" />

<ImageButton

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/siguiente"

android:src="@android:drawable/ic_menu_send"

android:layout_alignParentBottom="true"

android:layout_alignParentRight="true"

android:layout_alignParentEnd="true" />

<ImageButton

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/Regresar"

android:layout_alignTop="@+id/siguiente"

Page 185: ARNOLD STIVEN ALFONSO CONTRERAS

185

android:layout_alignParentLeft="true"

android:layout_alignParentStart="true"

android:src="@android:drawable/ic_menu_revert" />

</RelativeLayout>

Activity_ejercicios <?xml version="1.0" encoding="utf-8"?>

<android.support.design.widget.CoordinatorLayout

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:fitsSystemWindows="true"

tools:context="com.example.arnold.appbraille.Ejercicios">

<android.support.design.widget.AppBarLayout

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:theme="@style/AppTheme.AppBarOverlay">

<android.support.v7.widget.Toolbar

android:id="@+id/toolbar"

android:layout_width="match_parent"

android:layout_height="?attr/actionBarSize"

android:background="?attr/colorPrimary"

app:popupTheme="@style/AppTheme.PopupOverlay" />

</android.support.design.widget.AppBarLayout>

<include layout="@layout/content_ejercicios" />

<android.support.design.widget.FloatingActionButton

android:id="@+id/fab"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="bottom|end"

android:layout_margin="@dimen/fab_margin"

android:src="@android:drawable/ic_dialog_email" />

</android.support.design.widget.CoordinatorLayout>

Activity_Glosario <?xml version="1.0" encoding="utf-8"?>

<android.support.design.widget.CoordinatorLayout

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:fitsSystemWindows="true"

tools:context="com.example.arnold.appbraille.Glosario"

tools:showIn="@layout/content_glosario">

<android.support.design.widget.AppBarLayout

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:theme="@style/AppTheme.AppBarOverlay">

Page 186: ARNOLD STIVEN ALFONSO CONTRERAS

186

<android.support.v7.widget.Toolbar

android:id="@+id/toolbar"

android:layout_width="match_parent"

android:layout_height="?attr/actionBarSize"

android:background="?attr/colorPrimary"

app:popupTheme="@style/AppTheme.PopupOverlay" />

</android.support.design.widget.AppBarLayout>

<include layout="@layout/content_glosario" />

<android.support.design.widget.FloatingActionButton

android:id="@+id/fab"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="bottom|end"

android:layout_margin="@dimen/fab_margin"

android:src="@android:drawable/ic_dialog_email" />

</android.support.design.widget.CoordinatorLayout>

Activity_menuexp <?xml version="1.0" encoding="utf-8"?>

<RelativeLayout

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

tools:context="com.example.arnold.appbraille.Menuexp"

android:background="#040000">

<ImageButton

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/imageButton6"

android:layout_alignParentBottom="true"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="true"

android:src="@android:drawable/ic_menu_revert" />

<ExpandableListView

android:layout_width="match_parent"

android:layout_height="match_parent"

android:id="@+id/exp_List"

android:layout_alignParentTop="true"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="true"

android:indicatorLeft="?android:attr/expandableListPreferredItemIndicator

Left"

android:divider="#040600"

android:layout_above="@+id/imageButton6"

Page 187: ARNOLD STIVEN ALFONSO CONTRERAS

187

android:layout_alignParentRight="true"

android:layout_alignParentEnd="true"

android:background="@android:drawable/bottom_bar"

android:dividerHeight="@dimen/abc_button_inset_horizontal_material" />

</RelativeLayout>

Activity_notas

<?xml version="1.0" encoding="utf-8"?>

<android.support.design.widget.CoordinatorLayout

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:fitsSystemWindows="true"

tools:context=".musica">

<android.support.design.widget.AppBarLayout

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:theme="@style/AppTheme.AppBarOverlay">

<android.support.v7.widget.Toolbar

android:id="@+id/toolbar"

android:layout_width="match_parent"

android:layout_height="?attr/actionBarSize"

android:background="?attr/colorPrimary"

app:popupTheme="@style/AppTheme.PopupOverlay" />

</android.support.design.widget.AppBarLayout>

<include layout="@layout/content_notas" />

<android.support.design.widget.FloatingActionButton

android:id="@+id/fab"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="bottom|end"

android:layout_margin="@dimen/fab_margin"

android:src="@android:drawable/ic_dialog_email" />

</android.support.design.widget.CoordinatorLayout>

Activity_numeros <?xml version="1.0" encoding="utf-8"?>

<android.support.design.widget.CoordinatorLayout

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:fitsSystemWindows="true"

tools:context="com.example.arnold.appbraille.numeros">

Page 188: ARNOLD STIVEN ALFONSO CONTRERAS

188

<android.support.design.widget.AppBarLayout

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:theme="@style/AppTheme.AppBarOverlay">

<android.support.v7.widget.Toolbar

android:id="@+id/toolbar"

android:layout_width="match_parent"

android:layout_height="?attr/actionBarSize"

android:background="?attr/colorPrimary"

app:popupTheme="@style/AppTheme.PopupOverlay" />

</android.support.design.widget.AppBarLayout>

<include layout="@layout/content_numeros" />

<android.support.design.widget.FloatingActionButton

android:id="@+id/fab"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="bottom|end"

android:layout_margin="@dimen/fab_margin"

android:src="@android:drawable/ic_dialog_email" />

</android.support.design.widget.CoordinatorLayout>

Activity_principal <?xml version="1.0" encoding="utf-8"?>

<android.support.design.widget.CoordinatorLayout

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:fitsSystemWindows="true"

tools:context="com.example.arnold.appbraille.Principal"

tools:showIn="@layout/content_principal">

<android.support.design.widget.AppBarLayout

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:theme="@style/AppTheme.AppBarOverlay">

<android.support.v7.widget.Toolbar

android:id="@+id/toolbar"

android:layout_width="match_parent"

android:layout_height="?attr/actionBarSize"

android:background="?attr/colorPrimary"

app:popupTheme="@style/AppTheme.PopupOverlay" />

</android.support.design.widget.AppBarLayout>

<include layout="@layout/content_principal" />

<android.support.design.widget.FloatingActionButton

android:id="@+id/fab"

android:layout_width="wrap_content"

Page 189: ARNOLD STIVEN ALFONSO CONTRERAS

189

android:layout_height="wrap_content"

android:layout_gravity="bottom|end"

android:layout_margin="@dimen/fab_margin"

android:src="@android:drawable/ic_dialog_email" />

</android.support.design.widget.CoordinatorLayout>

Activity_signos_mate <?xml version="1.0" encoding="utf-8"?>

<RelativeLayout

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

tools:context="com.example.arnold.appbraille.signos_mate"

android:background="@drawable/signos">

<ListView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/lista_sigm"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="true"

android:layout_alignParentTop="true"

android:dividerHeight="@dimen/abc_button_inset_horizontal_material"

android:divider="@android:color/background_dark" />

<ImageButton

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/imageButton9"

android:layout_alignParentBottom="true"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="true"

android:src="@android:drawable/ic_menu_revert" />

</RelativeLayout>

Activity_silencios <?xml version="1.0" encoding="utf-8"?>

<RelativeLayout

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

tools:context="com.example.arnold.appbraille.silencios">

<ListView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

Page 190: ARNOLD STIVEN ALFONSO CONTRERAS

190

android:id="@+id/lista_sil"

android:layout_alignParentTop="true"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="true"

android:layout_alignParentBottom="true"

android:background="@drawable/musica"

android:divider="@android:color/background_dark"

android:dividerHeight="@dimen/abc_button_inset_horizontal_material" />

<ImageButton

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/imageButton8"

android:layout_alignBottom="@+id/lista_sil"

android:src="@android:drawable/ic_menu_revert" />

</RelativeLayout>

Activity_transcriptor <?xml version="1.0" encoding="utf-8"?>

<android.support.design.widget.CoordinatorLayout

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:fitsSystemWindows="true"

tools:context="com.example.arnold.appbraille.Transcriptor">

<android.support.design.widget.AppBarLayout

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:theme="@style/AppTheme.AppBarOverlay">

<android.support.v7.widget.Toolbar

android:id="@+id/toolbar"

android:layout_width="match_parent"

android:layout_height="?attr/actionBarSize"

android:background="?attr/colorPrimary"

app:popupTheme="@style/AppTheme.PopupOverlay" />

</android.support.design.widget.AppBarLayout>

<include layout="@layout/content_transc" />

<android.support.design.widget.FloatingActionButton

android:id="@+id/fab"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="bottom|end"

android:layout_margin="@dimen/fab_margin"

android:src="@android:drawable/ic_dialog_email" />

</android.support.design.widget.CoordinatorLayout>

Child_layout <?xml version="1.0" encoding="utf-8"?>

<RelativeLayout

Page 191: ARNOLD STIVEN ALFONSO CONTRERAS

191

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent">

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textAppearance="?android:attr/textAppearanceLarge"

android:text="Large Text"

android:id="@+id/Child_Text"

android:layout_alignParentTop="true"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="true"

android:layout_alignParentRight="true"

android:layout_alignParentEnd="true"

android:background="@android:drawable/alert_dark_frame"

android:textColor="#ffffff"

android:textStyle="bold" />

</RelativeLayout>

Content_ejercicios <?xml version="1.0" encoding="utf-8"?>

<RelativeLayout

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

app:layout_behavior="@string/appbar_scrolling_view_behavior"

tools:context="com.example.arnold.appbraille.Ejercicios"

tools:showIn="@layout/activity_ejercicios"

android:background="#000000">

<ImageButton

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/imageButton4"

android:layout_marginBottom="48dp"

android:src="@android:drawable/ic_menu_revert"

android:layout_alignParentBottom="true"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="true" />

<ExpandableListView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/expej"

android:layout_alignParentTop="true"

android:layout_toEndOf="@+id/imageButton4"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="true"

android:layout_above="@+id/imageButton4"

android:background="@drawable/evaluar"

Page 192: ARNOLD STIVEN ALFONSO CONTRERAS

192

android:divider="@android:drawable/divider_horizontal_dim_dark"

android:dividerHeight="@dimen/abc_button_inset_horizontal_material" />

</RelativeLayout>

Content_glosario <?xml version="1.0" encoding="utf-8"?>

<RelativeLayout

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

app:layout_behavior="@string/appbar_scrolling_view_behavior"

tools:context="com.example.arnold.appbraille.Glosario"

tools:showIn="@layout/activity_glosario">

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textAppearance="?android:attr/textAppearanceLarge"

android:text="Glosario"

android:id="@+id/textView2"

android:textColor="#fdfbfb"

android:textAlignment="center"

android:layout_alignParentTop="true"

android:layout_centerHorizontal="true" />

<ListView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/lista_letras"

style="@style/AppTheme"

android:layout_alignLeft="@+id/imageButton"

android:layout_alignStart="@+id/imageButton"

android:divider="@android:drawable/divider_horizontal_dim_dark"

android:dividerHeight="@dimen/abc_button_inset_horizontal_material"

android:drawSelectorOnTop="false"

android:background="@drawable/glosario" />

<ImageButton

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/imageButton"

android:src="@android:drawable/ic_menu_revert"

android:layout_marginBottom="45dp"

android:layout_alignParentBottom="true"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="true" />

</RelativeLayout>

Page 193: ARNOLD STIVEN ALFONSO CONTRERAS

193

Content_notas <?xml version="1.0" encoding="utf-8"?>

<RelativeLayout

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

app:layout_behavior="@string/appbar_scrolling_view_behavior"

tools:context=".musica"

tools:showIn="@layout/activity_notas">

<ImageButton

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/imageButton5"

android:src="@android:drawable/ic_menu_revert"

android:layout_marginBottom="44dp"

android:layout_alignParentBottom="true"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="true" />

<ListView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/lista_notas"

android:layout_above="@+id/imageButton5"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="true"

android:background="@drawable/musica"

android:divider="@android:drawable/divider_horizontal_dark"

android:dividerHeight="@dimen/abc_action_bar_content_inset_material" />

</RelativeLayout>

Content_numeros <?xml version="1.0" encoding="utf-8"?>

<RelativeLayout

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

app:layout_behavior="@string/appbar_scrolling_view_behavior"

tools:context="com.example.arnold.appbraille.numeros"

tools:showIn="@layout/activity_numeros">

<ImageButton

android:layout_width="wrap_content"

Page 194: ARNOLD STIVEN ALFONSO CONTRERAS

194

android:layout_height="wrap_content"

android:id="@+id/imageButton7"

android:src="@android:drawable/ic_menu_revert"

android:layout_marginBottom="41dp"

android:layout_alignParentBottom="true"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="true" />

<ListView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/lista_num"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="true"

android:layout_alignParentTop="true"

android:layout_above="@+id/imageButton7"

android:background="@drawable/numeros"

android:divider="#fefcfc"

android:drawSelectorOnTop="true"

android:dividerHeight="@dimen/abc_button_inset_horizontal_material" />

</RelativeLayout>

Content_principal <?xml version="1.0" encoding="utf-8"?>

<RelativeLayout

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

app:layout_behavior="@string/appbar_scrolling_view_behavior"

tools:context="com.example.arnold.appbraille.Principal"

tools:showIn="@layout/activity_principal"

android:background="#201d1d"

android:touchscreenBlocksFocus="false">

<ListView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/list_p"

android:layout_alignParentTop="true"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="false"

android:choiceMode="singleChoice"

android:clickable="true" />

</RelativeLayout>

Content_transc <?xml version="1.0" encoding="utf-8"?>

<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical" android:layout_width="match_parent"

android:layout_height="match_parent"

android:rowCount="4"

Page 195: ARNOLD STIVEN ALFONSO CONTRERAS

195

android:columnCount="1"

android:background="@drawable/transcribir">

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Escriba el Texto que desea Transcribir"

android:id="@+id/textView3"

android:layout_alignParentTop="true"

android:layout_centerHorizontal="true"

android:textAlignment="center"

android:textIsSelectable="false"

android:textStyle="bold"

android:textSize="25dp"

android:textColor="#fcf5f5"

android:layout_row="0"

android:layout_column="0" />

<LinearLayout

android:orientation="vertical"

android:layout_width="match_parent"

android:layout_height="200dp"

android:layout_row="1"

android:layout_column="0">

<EditText

android:layout_width="match_parent"

android:layout_height="match_parent"

android:id="@+id/editText"

android:inputType="textMultiLine"

android:layout_below="@+id/t_trans"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="true"

android:layout_alignRight="@+id/t_trans"

android:layout_alignEnd="@+id/t_trans"

android:textColor="#ffffff"

android:layout_gravity="center_horizontal" />

</LinearLayout>

<LinearLayout

android:orientation="vertical"

android:layout_width="match_parent"

android:layout_height="200dp"

android:layout_row="2"

android:layout_column="0">

<ListView

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:id="@+id/lista_transc"

android:choiceMode="none"

android:scrollingCache="false"

android:layout_above="@+id/button"

android:layout_alignLeft="@+id/button"

android:layout_alignStart="@+id/button"

android:layout_alignRight="@+id/button"

android:layout_alignEnd="@+id/button"

Page 196: ARNOLD STIVEN ALFONSO CONTRERAS

196

android:layout_below="@+id/editText"

android:layout_gravity="center_horizontal" />

</LinearLayout>

<RelativeLayout

android:orientation="vertical"

android:layout_width="match_parent"

android:layout_height="70dp"

android:layout_row="3"

android:layout_column="0">

<ImageButton

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/imageButton2"

android:src="@android:drawable/ic_menu_revert"

android:layout_alignParentTop="true"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="true" />

<Button

style="?android:attr/buttonStyleSmall"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Transcribir"

android:id="@+id/button"

android:clickable="true"

android:contextClickable="false"

android:elegantTextHeight="true"

android:enabled="true"

android:onClick="setContentView"

android:layout_alignParentTop="true"

android:layout_centerHorizontal="true" />

</RelativeLayout>

</GridLayout>

Eje_lay <?xml version="1.0" encoding="utf-8"?>

<RelativeLayout

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="#090000">

<RadioGroup

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_marginTop="354dp"

android:layout_alignParentTop="true"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="true"

android:orientation="vertical"

android:layout_toLeftOf="@+id/btn_env"

android:layout_toStartOf="@+id/btn_env"

android:id="@+id/radioGroup">

<RadioButton

android:layout_width="wrap_content"

Page 197: ARNOLD STIVEN ALFONSO CONTRERAS

197

android:layout_height="wrap_content"

android:id="@+id/R1"

android:checked="false"

android:textColor="#FFFFFFFF"

android:textSize="25dp" />

<RadioButton

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/R2"

android:checked="false"

android:textColor="#FFFFFFFF"

android:textSize="25dp" />

<RadioButton

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/R3"

android:checked="false"

android:textColor="#FFFFFFFF"

android:textSize="25dp" />

<RadioButton

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/R4"

android:checked="false"

android:textColor="#FFFFFFFF"

android:textSize="25dp" />

</RadioGroup>

<TextView

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:id="@+id/Txt_preg"

android:layout_alignParentTop="true"

android:layout_centerHorizontal="true"

android:textSize="40dp"

android:textColor="#FFFFFFFF" />

<ImageView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/Imagen_p"

android:layout_below="@+id/Txt_preg"

android:layout_centerHorizontal="true"

android:clickable="false" />

<Button

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Iniciar"

android:id="@+id/btn_env"

android:layout_alignTop="@+id/radioGroup"

android:layout_alignParentRight="true"

android:layout_alignParentEnd="true" />

Page 198: ARNOLD STIVEN ALFONSO CONTRERAS

198

<Button

style="?android:attr/buttonStyleSmall"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Cancelar"

android:id="@+id/btn_canc"

android:layout_below="@+id/btn_env"

android:layout_alignParentRight="true"

android:layout_alignParentEnd="true" />

</RelativeLayout>

Ítem_menu <?xml version="1.0" encoding="utf-8"?>

<RelativeLayout

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent">

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textAppearance="?android:attr/textAppearanceLarge"

android:text="Transcribir"

android:id="@+id/text_menu"

android:layout_marginTop="43dp"

android:height="@dimen/abc_action_bar_default_height_material"

android:textSize="40dp"

android:textStyle="italic"

android:typeface="serif"

android:layout_alignParentTop="true"

android:layout_centerHorizontal="true"

android:textColor="#fdfcfc"

android:background="#201d1d" />

<ImageView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/img_men"

android:layout_below="@+id/text_menu"

android:layout_centerHorizontal="true"

android:src="@drawable/transcribir" />

</RelativeLayout>

Ítem_view <?xml version="1.0" encoding="utf-8"?>

<RelativeLayout

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent">

<ImageView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/imagen"

android:layout_alignParentTop="true"

android:layout_alignParentLeft="true"

Page 199: ARNOLD STIVEN ALFONSO CONTRERAS

199

android:layout_alignParentStart="true"

android:src="@drawable/b"

android:layout_toStartOf="@+id/Text_letra"

android:layout_alignBottom="@+id/Text_letra" />

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textAppearance="?android:attr/textAppearanceLarge"

android:text="letra"

android:id="@+id/Text_letra"

android:textSize="@android:dimen/notification_large_icon_height"

android:layout_alignParentTop="true"

android:layout_alignParentRight="true"

android:layout_alignParentEnd="true" />

</RelativeLayout>

Music_menu <?xml version="1.0" encoding="utf-8"?>

<RelativeLayout

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent">

<LinearLayout

android:orientation="horizontal"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_centerHorizontal="true"

android:weightSum="1">

<ImageView

android:layout_width="175dp"

android:layout_height="184dp"

android:id="@+id/img_nota"

android:layout_gravity="right"

android:src="@drawable/musica" />

<ImageView

android:layout_width="match_parent"

android:layout_height="187dp"

android:id="@+id/Img_notab"

android:src="@drawable/musica" />

</LinearLayout>

</RelativeLayout>

Splash_screen <?xml version="1.0" encoding="utf-8"?>

<RelativeLayout

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context=".Splash"

android:background="#111010">

<TextView

Page 200: ARNOLD STIVEN ALFONSO CONTRERAS

200

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/app_name"

android:id="@+id/textView"

android:textStyle="normal|bold"

android:textSize="55dp"

android:theme="@style/AppTheme"

android:typeface="sans"

android:layout_centerHorizontal="true"

android:textColor="#f7f3f3"

android:layout_above="@+id/img_anim" />

<ImageView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/img_anim"

android:layout_centerVertical="true"

android:layout_centerHorizontal="true"

android:src="@drawable/appbraille" />

<ProgressBar

style="?android:attr/progressBarStyleLarge"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/progressBar"

android:layout_below="@+id/img_anim"

android:layout_alignLeft="@+id/img_anim"

android:layout_alignStart="@+id/img_anim"

android:layout_alignRight="@+id/img_anim"

android:layout_alignEnd="@+id/img_anim" />

</RelativeLayout>

Transc_layout <?xml version="1.0" encoding="utf-8"?>

<RelativeLayout

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent">

<ImageView

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:id="@+id/imageView"

android:layout_alignParentTop="true"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="true"

android:src="@drawable/a"

android:layout_gravity="center" />

</RelativeLayout>