Informe sobre el desarrollo de una aplicacion en la plataforme de Androir Studio para aplicaciones en dispositivos moviles sobre el uso y el potenciamiento del turismo en la ciudad de cuenca.
Codigo del programa en GitHub: https://github.com/KamilaMolinaOrellana/MiApp
Código de la presentacion en SlideShare: https://www.slideshare.net/KamilaNicoleMolinaOr/proyecto-interciclo
1. 1
Programación 3 Grupo 1
Informe de presentación del proyecto
individual interciclo.
Aplicación realizada para usuarios de android 5.0.1 en adelante
“Find Me”.
Molina Orellana Kamila Nicole kamila.molina@ucuenca.ec
Resumen.-
Al realizar este proyecto en forma individual se ha buscado brindar una muestra del
código que se ha efectuado para este trabajo, de manera que se dé a cumplir con algunos
objetivos planteados tales como que el usuario sienta que esta propuesta le ha ayudado a
mejorar su experiencia dentro de la ciudad, o a su vez que los clientes puedan creer en la
veracidad de la información que se brindará una vez que los usuarios comiencen a
registrarse, para así dar énfasis en la seguridad y en el fácil acceso que brindará esta
aplicación; en segunda instancia se muestra cómo funciona la aplicación realizando una
simulación real para el cliente en la que ya existan ciertos usuarios a los cuales podamos
acceder a sus servicios, los cuales estarán mostrados en las secciones de “Figuras”,
además de demostrar cuales han sido los diferentes métodos y materiales empleados en
el transcurso de este proyecto.
2. 2
Introducción.-
Find Me es un programa que ayuda a los visitantes de la ciudad a encontrar a
personas registradas y dispuestas a brindar sus datos personales, como lo son sus
nombres y apellidos de pila, su edad, los idiomas que maneja, su número de
contacto telefónico, su dirección y tres tipos de servicios pre-establecidos por el
desarrollador, tales como lo son: servicio de guía turística, servicio
de intérpretes y servicio de transporte; los cuales gracias al uso de
esta aplicación se los podrá mostrar con distinción de colores en una ubicación
instanciada por el mismo usuario dentro del mapa de la ciudad, donde al brindar su
ubicación referencial, el cliente podrá visualizar la cercanía o lejanía del usuario con
respecto al mismo cliente que desee contratar los servicios de otra persona; vale
mencionar que este contrato ya no se dará mediante la aplicación, sino más bien se hará
ya por parte del propio cliente que contacte de forma manual al usuario gracias al número
telefónico que ha sido brindado por el mismo usuarios; por ello es que se pide 100% de
veracidad al momento de registrarse pues así está dando credibilidad a su mismo usuario,
causando buenas reseñas en lugar de malas para las personas que han ingresado datos
erróneos o aquellos a quienes los clientes consideren no haber visto en ellos a personas
de confianza que cumplan con lo antepuesto y con lo que ellos mismo han llenado. Una
vez que el cliente se encuentre en la ventana de visualización del mapa con los usuarios
registrados, no es responsabilidad de la aplicación brindar imágenes del lugar o como
llegar a ese desde la ubicación actual; aunque sin importar a eso gracias al apoyo de la
API de google maps se consiguió hacer que la aplicación lo haga.
Materiales y Métodos.-
> Android Studio: Entorno de desarrollo integrado IDE oficial para la plataforma
de Android enfocado en el desarrollo de sus aplicaciones, el cual ofrece
funcionalidades de productividad gracias a su sistema flexible y amigable.
> Api de Google maps: Plataforma de creación de mapas atractivos para las
aplicaciones, en este caso específico aplicaciones de dispositivos móviles, las cuales
contiene facilidades de acceso ilimitado a la base de datos mundial de Google. Por lo
que esta nos permite emplear mapas y todas las funcionalidades que vengan incluida
3. 3
en esta API y que las podemos instanciar dentro de nuestro código al momento de
efectuar nuestra aplicación.
> GitHub: Plataforma de desarrollo donde se cargó esta aplicación para que las demás
personas interesadas en el puedan analizar su código y ver su funcionalidad e incluso
esté disponible para la descarga a quien desee y pueda modificarlo según sus gustos
y necesidades.
> Zootero: Gestor de referencias bibliográficas de libre acceso instalado como una
extensión del navegador web Google Chrome, además de la descarga para la
plataforma de Windows, la cual es la parte que nos permite tener el
complemento en Word ideal para las citas y referencias.
> SlideShare: Plataforma virtual donde se cargó la presentación explicativa del
proyecto, con las ideas principales y la graficas mas generales.
Procedimiento.-
Sin lugar a duda para comenzar con la explicación del procedimiento de la
aplicación fabricada, tenemos (ver figura 1) a nuestro ícono de la aplicación con su
respectivo nombre y a partir de ahí, de darle click e inicializarlo, comenzaremos con la
explicación de las clases e interfaces más importantes de esta aplicación.
Antes de poder explicar el código y la interfaz escogida por mí persona como la
desarrolladora de esta aplicación; considero necesario mostrar el modelo de desarrollo
que se ha empleado para esta aplicación, es decir, el desacoplamiento de las partes que
componen al mismo [1], esto se ha logrado al seguir el diseño de tres capas que son: capa
de presentación, o también conocida como la >>capa de interfaz gráfica<<, es la
adecuada para presentar el sistema en funcionamiento hacia el usuario, pues esta capa
comunica y capta la información con la que esta interactuando el usuario en un mínimo
de tiempo y de procesos, considerando a su vez que esta debe ser amigable para quien la
use. Tenemos después el segundo nivel llamado capa de negocio, llamada también
capa lógica del negocio, esta es la capa donde se establecen aquellas reglas que deben
cumplirse en la ejecución del programa, más claro, esta capa está enfocada en recibir las
peticiones de los usuarios y enviar las respuestas a esas peticiones >>recibir solicitudes y
presentar los resultados<< gracias a la comunicación que esta tiene con la capa de
4. 4
presentación por medio del uso de un gestor de base de datos. Nuestro tercer nivel en este
diseño de software es la capa de datos, donde como su mismo nombre lo explica,
aquí es lugar en el cual entran y también donde se accede a los datos, debido al uso de un
gestor de uno o varias base de datos, las cuales hacen factible >>recibir las solicitudes de
almacenamiento y de recuperación de información<< gracias a la conexión de esta capa
con la capa de negocios.
Una vez expresados estos niveles dentro de nuestra aplicación, podemos notar que
en el ya enfocado entorno de desarrollo en el que estamos trabajando, ya está separada la
capa de la interfaz gráfica del resto de código, por lo que es mucho más fácil y conveniente
trabajar de esta manera, pues nos restaría separar los códigos en nuestros otros dos niveles
antes mencionados; y para ello crearemos paquetes en los cuales los organizaremos según
su funcionalidad en código y con la concordancia en las definiciones de las capas antes
dadas (ver figura 2).
En esta parte de la presentación tenemos agregada una cuarta capa, la cual la
llamamos capa de bienvenida, donde encontramos secciones de código básicas
que son simplemente la primera ventana, que es la bienvenida (ver sección de código 1),
y la otra parte es una actividad sencilla que tiene conectado a esta más actividades que se
mostrarán a continuación por medio de la conexión entre actividades (ver sección de
código 2).
A continuación se explicaran las clases de Java que constan dentro de cada clase,
por lo que lo haremos en orden, así:
1. Revisión del código de la aplicación en la capa de datos:
Para esta segunda capa considero correcto mencionar las clases que perteneces
a esta, las cuales son: “DBHelper”, “MapsActivity”,
“MostrarusuariosActivity”; estas tres clases están enfocadas en recibir y
devolver datos, por lo que al analizar las clases en orden tenemos:
La primera clase DBHelper que es donde creamos nuestra base de datos (ver
sección de código 3), dando inicio a nuestros datos y a la creación (teórica)
de nuestra tabla, conjuntamente con las distintas opciones que tenemos para
5. 5
trabajar con nuestra base de datos, tales como son el hecho de Guardar los
datos en la tabla de base de datos (ver sección de código 6), los cuales al
recibir por teclado los datos a guardar empleamos un contenedor, el cual
funciona para ir colocando según se vayan llenando los datos dentro de la
tabla ya creada con anterioridad. Buscar dentro de nuestra base de datos el
nombre y la contraseña con la que se creó un nuevo dato en la misma base
(ver sección de código 4), gracias que con esta sección de código podemos
comprobar dentro de todas las opciones de usuarios creados, la que es
compatible simultáneamente en los dos campos para que nos muestre un
mensaje avisándonos si existe o no dicho usuario y así poder trabajar con este.
También tenemos como se elimina un dato de la base de datos (ver sección
de código 5), la cual al recibir el usuario que desea eliminar, lo hace simple
y sencillamente al marcar como null en donde solía estar, y así borrarlo. Por
ultimo tenemos la parte en la que se explica cómo mostrar todos los datos
guardados en nuestra base de datos (ver sección de código 7), este
procedimiento se hace por medio de uso de listas donde cada vez que
encontremos un nuevo dato a mostrar lo vamos agregando al final de la lista.
La segunda clase MapsActivity se enfoca específicamente en instanciar el
mapa que estamos creando (ver sección de código 8), es decir en colocarlo
dentro de la aplicación con los respectivos permisos además de la ubicación
predefinida por mí como desarrolladora que está en la ciudad de Cuenca,
donde a partir de ahí podrán los clientes visualizar a todos los usuarios
registrados con sus nombres y servicios.
Le tercera y última clase dentro de esta capa es la de MostrarusuariosActivity
la cual como pude mencionar en la primera clase de esta capa, esta clase que
muestra a los usuarios (ver sección de código 9), llama a su función ubicada
en la base de datos para poder efectuar el procedimiento de ir guardando e
imprimiendo en forma de lista.
2. Revisión del código de la aplicación en la capa de negocios:
Dentro de esta capa considero ideal mencionar cuales sol las clases que la
conforman, “RegistrarseActivity”, “IniciarsesionActivity” y
6. 6
“NavegacomoclienteActivity”; al estar estas clases en esta capa específica
podemos mencionar de ellas lo siguiente, por ejemplo para los primeras clases es
necesario el uso de la base de datos local que se creó para esta aplicación; por lo que
las explicaremos a continuación:
La primera actividad RegistrarseActivity está asentada en el uso de base de
datos pues una vez llenados los datos que pide en esta actividad, estos datos
son obtenidos (ver sección de código 10), y así son transformados en strings
para a partir de ahí poderlos asignar al llamado de la función de guardar la
cual se creó en la clase DBHelper, y como podemos ver en esta clase (ver
sección de código 11), una vez que hayamos hecho el llamado a la función
donde se guarde la información ingresada para nuestro nuevo dato, limpiamos
los espacios donde se debe ingresar y nos redirige hacia la actividad principal
para desde ahí decidir que se desea hacer, si se desea agregar otro usuario, si
se desea iniciar sesión o si se desea mirar la lista de datos (usuarios).
La segunda actividad es la de IniciarsesionActivity, y como su propio nombre
lo expresa, debemos ingresar por teclado la información del usuario que
seamos, es decir, nombre y contraseñas correctas (ver sección de código 12),
para poder por medio de la transformación a strings de los datos ingresados,
compararlos con la opción de búsqueda de la base de datos para corroborar
que esa contraseña pertenece a ese usuario, y en especial que dicho usuario
existe; por lo que una vez corroborada que la información ingresada existe
dentro de la base de datos poder asignar cada dato a un array que ayudará a
imprimirlo en esa misma ventana para poder analizarla, y dada el caso que
pueda incluso ser eliminada (ver sección de código 13).
La tercera clase dentro de este nivel es NavegacomoclienteActivity la cual nos
da la posibilidad de hacer exactamente lo que dice, es decir que desde esta
actividad nos redirigirá directamente hacia la actividad de vista del mapa
donde podremos diferencias los distintos marcadores con sus nombres y
servicios e incluso desde ahí dirigirnos hacia una vista de todos los usuarios
para que desde ahí podamos también ver cuál es el indicado para el caso que
deseemos.
7. 7
3. Revisión del código de la aplicación en la capa de presentación o
interfaz gráfica:
Como ya se mencionó con anterioridad este nivel ya está desacoplado pre
definidamente, por lo que a continuación se mostrara el trabajo realizado en este nivel
mostrando, como se les llama en este entorno >>cada actividad<< es decir,
coloquialmente cada >>ventana<< que posee nuestra aplicación.
En primera vista, se muestra la actividad de bienvenida (ver figura 3), la cual es
una >>ventana de información<< que brinda al usuario en primera instancia de lo que
va a tratar la aplicación; después. Al presionar el botón “SIGUENTE” de esa misma
actividad, nos redirige hacia una segunda actividad (ver figura 4) donde desde aquí
podemos distinguirnos entre clientes y usuarios, los cuales se redirigirán a distintas
actividades dependiendo de lo escogido; al ir en orden analizaremos primero el caso
de ser usuarios, es decir, que nos podemos >>registrar<< e >>iniciar sesión<<; entonces
si seleccionamos el botón de “REGISTRAR” nos redirige hacia la ventana donde
debemos >>registrarnos como usuarios<< ingresando todos los datos que nos piden de
manera verídica (ver figura 5) y al seleccionar el botón “REGISTARSE” notamos como
nos envía nuevamente a la ventana anterior; por lo que ahora, en el mismo modo
usuario nos queda la segunda opción de “INICIAR SESION” la cual nos redirige a una
actividad donde al ingresar el nombre de pila con el que nos registramos y que la
contraseña coincida con la del usuario, al seleccionar el botón “BUSCAR USUARIO”
(ver figura 6), en este caso específico ingresaremos datos reales (ver figura 7) lo
cuales nos habilitara la misma ventana con una vista hacia abajo (ver figura 8) donde
podremos >>encontrar la información del usuario<< requerido y a partir de ahí,
trabajar con él, tanto si se desea eliminarlo permanentemente de la base de datos o si
solo se desea modificarlo. Una vez que hayamos navegado como usuarios, también
tenemos la opción de hacerlo como clientes como se veía la actividad anterior (ver
figura 4) donde al seleccionar el botón “NAVEGA COMO CLIENTE” podemos analizar
otra ventana de información (ver figura 9) la cual nos indica el funcionamiento visual
de la siguiente actividad que al seleccionar el botón “IR AL MAPA” nos redirige a esta
otra (ver figura 10) que es la actividad enfocada en el mapa de extensión de >>google
maps<< con sus respectivos marcadores según cada usuario se hayan registrado con
su ubicación de referencia. Quiero mencionar que cuando se seleccione algún
8. 8
marcador, automáticamente aparecerá en la parte inferior derecha de esta misma
actividad dos opciones propias de la api de google que no son propias de las
especificaciones de esta aplicación, pero que sirven para el cliente pueda >>ubicarse<<
de mejor manera y si desea dado el caso, pueda >>llegar<< a esa ubicación en una
ciudad extraña para él/ella.
Para terminar dentro de la figura 4 hay una especie de extensión si deslizamos
hacia abajo (ver figura 11), donde podemos encontrar la opción de mirar la
información de todos los usuarios registrados en esta base de datos, redirigiéndonos a
otra actividad que mostrará todos los datos en nuestra base de datos (ver figura 12).
Deseo agregar que como se pudo haber notado en las figuras, todas estas capas están
dentro de una misma aplicación y de un mismo ordenador sin la necesidad de conectarlas
como se creyera, dando la solución a este problema de desacoplamiento con la simple
solución de separarlas en las tres capas principales [2] y en una cuarta que se lo ha hecho
por decisión propia para esta aplicación.
Conclusiones.-
De acuerdo a lo realizado durante esta aplicación, puedo asegurar que he cumplido
muchos de los objetivos que me propuse como meta al realizar este proyecto, pero
también hubo algunos otros que conforme iba avanzando en la programación del código
se me complicaba un poco resolver esos problemas de la forma en la que me lo propuse
inicialmente en hacer. A continuación expresaré mis metas cumplidas por mi primera
opción, y las que tuve que cambiar el plan inicial; así como las que no pude completar
dada su dificultad.
Dentro de las metas cumplidas según la idea originaria, tengo que sí inicialicé una
base de datos local en la cual puedo hacer que usuarios se registren guardando su
información en dicha tabla y a partir de ahí, también es posible extraer los datos como era
la idea principal. También he logrado una parte de código en la cual puedo iniciar sesión
como un usuario registrado, y si no lo estoy, no se abrirá el menú de información; por lo
que con esto puedo comprobar que tengo validada la información pertinente e ideal para
realizar muchas de las actividades. Además de otra meta cumplida que sería la agregación
del mapa gracias a la API de google maps, con la cual pude trabajar de manera en la
9. 9
que muestro lo que deseo, en donde deseo y en el momento que lo quiero. Por otro lado
también he tenido metas cumplidas, pero para efectuarlas tuve que cambiar el plan
principal, por ejemplo en el caso de registrarse como usuario, tenía planeado escoger entre
los tres tipos de servicio a brindar por medio de check boxes, pero una vez que me
encontraba en esa situación, no supe como extraer los datos de forma continua, por lo que
mi solución fue el cambiar el método de entrada, y a la final lo conseguí de manera que
el usuario tenga que escribirlo por teclado.
Aunque parezco inverosímil, también tuve un objetivo que no pude alcanzar, ese
fue que al momento que un cliente ya haya contratado y experimentado el servicio
brindado por tal usuario, no logré implementar una función en la cual esté disponible la
opción de darle un Rankin de satisfacción, por lo que puedo afirmar que esto
no se cumplió.
Para finalizar, en el desarrollo de esta aplicación, me siento muy satisfecha con el
trabajo realizado durante todo este tiempo para llevar a cabo el proyecto, pues siento que
no he fallado en mi investigación previa al desarrollo del código [3], pues al no haber
tenido ninguna base ni idea antes de este proyecto, opino que al ser el primero (espero de
muchos más) logré aumentar mis conocimientos en programación de aplicaciones para
dispositivos, y más allá de todo esto, incrementé mis propios conocimientos en
programación.
Referencias.-
[1] «Conoce Android Studio | Android Studio,» 17 05 2017. [En línea]. Available:
https://developer.android.com/studio/intro/index.html.
[2] «HERE Map APIs - HERE Developer,» 19 05 2017. [En línea]. Available:
https://developer.here.com/lp/mapAPIs?cid=sem-bing-iprospect_cmTier1-Competitors-
E_agGoogle%3EMaps%3EE%3EUS&utm_source=ppc&utm_campaign=Maps-Bing-MM-T1-
Dev-Comp-E&utm_term=google%20maps%20api.
[3] «geolocalizacion,» 2007. [En línea]. Available:
https://www.definicionabc.com/geografia/geolocalizacion.php. [Último acceso: 11 05
2017].
10. 10
Links de referencias.-
Código de la aplicación cargado en GitHub:
https://github.com/KamilaMolinaOrellana/MiApp
Figuras.-
Figura 1: Ícono de la aplicación.
11. 11
Figura 2: Separación de las tres capas con las que se va a trabajar.
Figura 3: Ventana de información de la aplicación.
12. 12
Figura 4: Ventana de división entre –clientes- y –usuarios-
Figura 5: Ventana de Registro de usuario.
13. 13
Figura 6: Ventana de Inicio de sesión como usuario.
Figura 7: Ejemplo práctico de inicio de sesión para comprobar que funciona como se espera.
14. 14
Figura 8: Ventana que muestra la información del usuario que inició sesión.
Figura 9: Ventana de información para los clientes para que se guíen en el mapa que se muestra a continuación.
15. 15
Figura 10: Mapa de la ubicación predefinida por la desarrolladora que muestra ya tres marcadores de 3 usuarios
que ya están registrados dentro de la base de datos.
Figura 11: Ventana que muestra la extensión de la Figura 4
16. 16
Figura 12: Ventana que muestra la lista con todos los usuarios y su información referencial registrada en la base de
datos.
Secciones de Código.-
Sección de Código 1