1.- Alumno termina el tutorial del sistema, si es primera vez que entra a la
aplicación debe aceptar los permisos correspondientes.
2.- El Sistema solicita archivo de Horario, desplegando la pestaña de
almacenamiento del dispositivo.
3.- Alumno selecciona archivo deseado.
4.- Sistema carga y utiliza el archivo y retorna a la interfaz del horario,
mostrando los datos contenidos en el archivo.
1. - Alumno pulsa botón de "Nueva Asignatura".
2. - Sistema despliega interfaz para agregar nueva asignatura.
3. - Alumno escribe Nombre de la asignatura, la Sigla y selecciona Estado
(inscrita o pendiente), Campus y Jornada, luego presiona botón de
"Registrar Asignatura".
4. - Sistema guarda los datos en la base de datos y retorna a la interfaz del
horario.
1. - Alumno pulsa botón de "Nuevo Bloque".
2. - Sistema despliega interfaz para agregar nuevo bloque.
3. - Alumno selecciona Asignatura, Bloque, Día y escribe la Sala donde será
la clase, luego presiona botón de
"Registrar Bloque".
4. - Sistema guarda los datos en la base de datos y retorna a la interfaz del
horario mostrando el nuevo bloque agregado.
1. Parseo del PDF: El parsear un PDF es un trabajo tedioso, el texto plano que es entregado no está estructurado por lo que se debieron usar muchos condicionales y expresiones regulares para poder sacar la información que se quería obtener.
2. Lectura del PDF: Desde Android 6 en adelante, se cambió el como se manejaba los permisos, uno de ellos fue el uso de archivos externos, éstos se usaban atraves de un URI, y no de un path como lo era antes, el uso de URI fue bastante complicado, pero leyendo mucho se llegó a poder usarlos para la lectura del archivo, para ello se uso la clase UriHelpers, con metodos que retornaban el path necesario para trabajar.
3. Uso de Fragments: Al tener dos vistas en la barra de navegación, queríamos que no se abriera una nueva actividad al ir entre ellas, ya que quedaba poco estético, por lo que optamos por usar los llamados Fragments, como su nombre lo dice son fragmentos de una activadad que pueden actualizarse independientemente de la actividad, su uso fue complicado, se debió leer la documentación hasta entener su ciclo de vida y como éstos se renderizaban.
4. Topes de Horario: Al existir un tope de horario, se nos producia un error al querer rellenar el horario, por lo que tuvimos que agregar esta condicional para que aceptara este tipo de situación, asignandole un bloque especifico de color rojo, con la palabra, TOPE, el problema fue que al existir esto el usuario se quedaba sin saber que clase tocaba, por lo que tuvimos que agregar un modal con una lista de las asignaturas que tenian tope para que el pudiera acceder a el bloque en especifico desde ahí.
5. Horario en una tabla: El querer mostrar el horario de una forma amigable fue complicado, primero pensamos hacer un tipo de tabla, pero al final nos dimos cuenta que las ListView de Android podian ser usadas de la misma manera, tuvimos que estudiar sobre como asignarles una posición a cada bloque.
1. Permisos: Al ingresar por primera vez a la aplicación esta pide los permisos para leer archivos, al aceptar los permisos es necesario reiniciar la aplicación para que ésto surga efecto.
2. PDFs compatibles: No se han probado todos los casos de horarios disponibles, algunos podrían producir error debido a que no se tuvieron en cuenta a la hora de parsearlo.
3. Resolución: No se ha probado la aplicación ni se diseño para todas las resoluciones, por lo que pueden haber problemas de diseño y uso al usarlas en resoluciones más pequeñas que en las que fueron pensadas, esto fue por tema de tiempo.