Proyecto final de curso Android: Fundamentos de...

5
Proyecto final de curso Android: Fundamentos de Programación (septiembre-diciembre 2016) Nombre de la aplicación: Lista de la compra Autor: Asaustre García, Óscar Qué hace la aplicación: Permite organizar de una manera ágil la lista de la compra. Los productos que se agregan a la lista se puede realizar de tres formas diferentes: - Introduciendo el texto en el cuadro de texto de la aplicación. Éste a partir de 3 caracteres te sugiere productos que ya están registrados (conforme vamos introduciendo productos estos quedan registrados para otras listas). - A través del lector de código de barras. Se utiliza la cámara como lector de código de barras y localiza si está registrado en nuestro sistema ese producto recuperándolo en caso de existir. Si el producto no existe el sistema te sugiere que lo registres de manera manual con su código de barras para en posteriores ocasiones poder recuperarlo por este medio. - A través del reconocedor de voz. Con la voz se puede introducir el producto, el sistema te sugiere varias palabras que encajan con lo dictado a través de la voz y es el usuario quien selecciona la palabra exacta. Se puede gestionar múltiples listas muy útil para los casos que se realizan compras en diferentes comercios o se quiere tener registrado la compra de distintos días. Cada mes, si el usuario ha activado las notificaciones en el menú de preferencias (el proceso se lanza todos los días 1 de cada mes) el sistema lanza un servicio que envía una notificación informando de los gastos registrados en los últimos 6 meses agrupados por meses. El control de gastos también se puede acceder desde la aplicación, en donde se visualizan los gastos de los últimos 6 meses cumplidos, es decir el gasto del mes actual no se podrá visualizar hasta el mes siguiente. Licencia: Autorizo la difusión del código fuente con fines educativos siempre que se haga referencia al autor bajo los términos generales de la licencia “ Academic Free License v.3.0 ”. A destacar: Utiliza una base de datos relaciones (Sqlite) para registrar los artículos en la lista de la compra y llevar el control de gastos. Se almacenan los artículos, categorías, tiendas y las listas de la compra.

Transcript of Proyecto final de curso Android: Fundamentos de...

Page 1: Proyecto final de curso Android: Fundamentos de ...jtomas/android/ProyectosFundamentos2016...Proyecto final de curso Android: Fundamentos de Programación (septiembre-diciembre 2016)

Proyecto final de curso

Android: Fundamentos de Programación

(septiembre-diciembre 2016)

Nombre de la aplicación: Lista de la compra

Autor: Asaustre García, Óscar

Qué hace la aplicación:

Permite organizar de una manera ágil la lista de la compra. Los productos que seagregan a la lista se puede realizar de tres formas diferentes:

- Introduciendo el texto en el cuadro de texto de la aplicación. Éste a partir de 3caracteres te sugiere productos que ya están registrados (conforme vamosintroduciendo productos estos quedan registrados para otras listas).

- A través del lector de código de barras. Se utiliza la cámara como lector de códigode barras y localiza si está registrado en nuestro sistema ese producto recuperándoloen caso de existir. Si el producto no existe el sistema te sugiere que lo registres demanera manual con su código de barras para en posteriores ocasiones poderrecuperarlo por este medio.

- A través del reconocedor de voz. Con la voz se puede introducir el producto, elsistema te sugiere varias palabras que encajan con lo dictado a través de la voz y es elusuario quien selecciona la palabra exacta.

Se puede gestionar múltiples listas muy útil para los casos que se realizan comprasen diferentes comercios o se quiere tener registrado la compra de distintos días.

Cada mes, si el usuario ha activado las notificaciones en el menú de preferencias(el proceso se lanza todos los días 1 de cada mes) el sistema lanza un servicio queenvía una notificación informando de los gastos registrados en los últimos 6 mesesagrupados por meses.

El control de gastos también se puede acceder desde la aplicación, en donde sevisualizan los gastos de los últimos 6 meses cumplidos, es decir el gasto del mesactual no se podrá visualizar hasta el mes siguiente.

Licencia:

Autorizo la difusión del código fuente con fines educativos siempre que se hagareferencia al autor bajo los términos generales de la licencia “Academic Free Licensev.3.0”.

A destacar:

Utiliza una base de datos relaciones (Sqlite) para registrar los artículos en lalista de la compra y llevar el control de gastos. Se almacenan los artículos,categorías, tiendas y las listas de la compra.

Page 2: Proyecto final de curso Android: Fundamentos de ...jtomas/android/ProyectosFundamentos2016...Proyecto final de curso Android: Fundamentos de Programación (septiembre-diciembre 2016)

Se utiliza un framework ORM, greenDao, para realizar las operaciones deborrado, actualizar, insertar y consulta de entidades. Facilita el desarrollo yse elimina el código repetitivo de acceso y conexión a la base de datos.

Incorpora una librería de terceros, Zxing, para la utilización de la cámaracomo lector de código de barras (es necesario conceder el permiso paratrabajar con la cámara)

La aplicación ha sido diseñada para verse correctamente en vertical yhorizontal.

Aunque no es necesario porque no se va a manejar gran volumen deinformación los accesos a la base de datos se realizan desde hilosindependientes al hilo principal existiendo AsynTask o Runnable según lasnecesidades.

Se hace uso de Intenciones para la llamada entre actividades yfuncionalidades incorporadas en el sistema, como por ejemplo elreconocedor de voz.

Se hace uso de cuadro de diálogos (clase Dialog) personalizados.

Se utilizan tanto actividades como fragment.

Se hace uso del control NavigationView para la barra de menú lateral.

Los iconos de la aplicación están en formato SVG.

Recyclerview personalizados para que puedan realizar agrupaciones.

Se hace uso de la clase ScheduledThreadPoolExecutor para el lanzamientode la tarea periódica (1 vez al mes) del control de gastos.

El diseño de la base de datos se ha realizado desde una herramientaexterna y la primera vez que se arranca la aplicación se copiaautomáticamente el fichero de base de datos que está en el directorioassets a la memoria interna de la aplicación. Con esto facilita los cambiosen el diseño y la precarga de datos previos sin tener que hacerlo mediantecódigo.

Se hace uso de Themes y estilos personalizados tanto para los textos,fondos, menús y controles.

Se utiliza un servicio que es el encargado de enviar una notificaciónavisando que ya está disponible el control de gasto de último mes (semuestra la información de los últimos 6 meses).

Cómo lo hace:

La aplicación está compuesta de varias actividades pero la mayor parte del peso decódigo recae sobre la actividad principal, InitActivity, que es la que contiene el menúlateral, realiza la llamada a las otras actividades a través de Intenciones y recibe larespuestas del resultado del lector de código de barras y del reconocimiento de voz.

El cuadro de texto de la pantalla principal es el núcleo de interacción de la aplicacióny es donde se introducen los nuevos artículos o se recuperan artículos previamenteregistrados (el control es un AutoCompleteTextView que realiza sugerencias deartículos ya registrados). El resultado se guarda en base de datos a la lista de lacompra y se incorpora al recyclerview que está debajo del cuadro de texto.

Page 3: Proyecto final de curso Android: Fundamentos de ...jtomas/android/ProyectosFundamentos2016...Proyecto final de curso Android: Fundamentos de Programación (septiembre-diciembre 2016)

Los accesos a base se realizan en hilos secundarios por medio de un AsynTask quese comunicará con el hilo principal para actualizar la interfaz de usuario. Las clasesque están dentro del paquete com.shop.oasaustre.shoppinglist.activity.task sonlas que contienen los AsynTask con los diferentes accesos a la base de datos.

Como se ha utilizado un framework ORM de acceso a datos los paquetescom.shop.oasaustre.shoppinglist.db.entity,com.shop.oasaustre.shoppinglist.db.service ycom.shop.oasaustre.shoppinglist.db.dao (este último lo genera automáticamentela herramienta al compilar) contienen las entidades y los servicios de acceso a datos.

Continuando con el recyclerview de la actividad principal (InitActivity) al hacer clicken cada uno de los elementos se pasa a la actividad donde se puede actualizar lainformación del producto incorporado a la lista de la compra (cantidad, precio, códigode barras, …..). Está actividad se llama ArticleSaveActivity y es la encargada detrabajar con el formulario que contiene la información del producto.

La comunicación tanto con el framework Zxing para el lector de código de barrascomo el reconocedor de voz se realiza con llamadas a través de intenciones conrespuesta de resultados que son recogidas en la actividad InitActivity a través delmétodo onActivityResult.

Las pantallas para crear las entidades auxiliares categorías, tiendas y listas de lacompra que no contienen mucha información son emergentes y heredan deDialogFragment. Estos Dialog son formularios personalizados y se encuentrandentro del paquete com.shop.oasaustre.shoppinglist.activity.dialog

Por último la clase SettingsHelper es la encargada de lanzar la claseScheduledThreadPoolExecutor, que según las preferencias configuradas, ejecutaráel planificador de la tarea programada que enviará las notificaciones una vez al mescon el resultado de los gastos registrados en los últimos 6 meses (siempre y cuandoesté activa las notificaciones en las preferencias).

Page 4: Proyecto final de curso Android: Fundamentos de ...jtomas/android/ProyectosFundamentos2016...Proyecto final de curso Android: Fundamentos de Programación (septiembre-diciembre 2016)

Captura de pantallas:

Page 5: Proyecto final de curso Android: Fundamentos de ...jtomas/android/ProyectosFundamentos2016...Proyecto final de curso Android: Fundamentos de Programación (septiembre-diciembre 2016)