• No se han encontrado resultados

Descripción de bloques principales 40

3   Diseño SW 36

3.1   Diseño Android 36

3.1.3   Descripción de bloques principales 40

3.1.3 Descripción de bloques principales   

 

APLICACION

CONFIGURACION PROGRAMA PRINCIPAL

UBICACION TRANSPORTE CALLE METRO AUTOBUS CERCANIAS ESTACION NOMBRE TIEMPO ACTIVAR DES-ACTIVAR ….. …. ….. ….. ….. ….. ESCUCHAR MENSAJES  

Figura 27 Flujo de programa Android   

En el esquema de bloques podemos ver lo que sería la estructura de una aplicación.  Como podemos ver al principio de la aplicación nos encontraremos con una pantalla  donde deberemos de elegir si comenzamos a utilizar la aplicación o deseamos cambiar la  configuración. 

 

  Figura 28 Primera pantalla 

 

En esta primera pantalla se muestran dos botones a la vez que el sistema TTS (text‐to‐ speach) comienza a lanzarnos indicaciones para utilizar la aplicación. 

 

Una vez terminada la explicación sonora de las opciones de cada pantalla, la aplicación  lanza el reconocimiento de voz para que el usuario elija entre una de las opciones  disponible en esa pantalla. 

  Figura 29 Reconocimiento de voz 

   

Esta aplicación que es propia del sistema Android reconoce el comando que el usuario  pide e inicia la acción pertinente que puede ser ir a la siguiente pantalla o salir para  comenzar la aplicación. 

 

Una vez tenemos todo configurado como el usuario desea la aplicación se queda en  escucha de alguna comunicación Bluetooth para dar indicaciones pertinentes al usuario.   

Como segunda opción toda la aplicación se puede manejar mediante pulsaciones en las  opciones que aparecen en pantalla, pero no es el objetivo de esta aplicación. 

 

Cuando hemos lanzado la aplicación esta nos indicara que hay un mensaje disponible y  mediante un toque en cualquier parte de la pantalla nos dará la información disponible en  el punto bluetooth que esté más cerca. 

 

3.1.3.1Descripción clases proyecto Android 

3.1.3.1.1 Estructura proyecto Android 

Para  la realización del proyecto Android hemos utilizado la plataforma de  desarrollo ANDROID SDK.

En el ANEXO C se describe los pasos necesarios para la instalación de dicho  IDE. 

 

Una vez instalados todos los sw necesarios así como sus complementos  pasamos a describir todos los archivos que vamos a necesitar para la creación  de nuestro proyecto así como su implementación en este proyecto. 

 

Para empezar a comprender cómo se construye una aplicación Android vamos  a echar un vistazo a la estructura general de un proyecto tipo. 

Cuando creamos un nuevo proyecto Android en Eclipse se genera 

automáticamente la estructura de carpetas necesaria para poder generar  posteriormente la aplicación. Esta estructura será común a cualquier  aplicación, independientemente de su tamaño y complejidad. 

 

En la siguiente imagen vemos los elementos creados inicialmente para un  nuevo proyecto Android: 

 

  Figura 30 Estructura carpetas Android   

Describamos los elementos principales.   

Carpeta /src/ 

Contiene todo el código fuente de la aplicación, código de la interfaz gráfica,  clases auxiliares, etc. Inicialmente, Eclipse creará por nosotros el código básico  de la pantalla (Activity) principal de la aplicación, siempre bajo la estructura del  paquete java definido. 

 

  Figura 31 Carpeta src   

En nuestro proyecto en esta carpeta tenemos recopilados todos los códigos de  cada pantalla. En la siguiente tabla se describen cada una de las pantallas y  clases necesarias en nuestra aplicación. 

 

Nombre Clase  Descripción 

AdminSQLiteOpenHelper.java 

Clase necesaria para  poder generar nuestra 

base de datos  BluethootActivity.java  Activity para inicializar el 

 

Nombre Clase  Descripción 

BluetoothChatService.java 

Clase que genera el  servicio dentro de la  aplicación Android para 

poder utilizar el  bluetooth del dispositivo 

ClaseDatos.java 

Clase que no tiene  asignada una ventana  donde podamos actuar. 

Con esta clase creamos  una base de datos 

Pantalla_Activacion.java 

Pantalla donde  indicamos a la aplicación 

que propiedad se debe  activar o desactivar en la 

base de datos 

Pantalla_calle_caracteristicas_cajero.java 

Pantalla que nos permite  configurar las diferentes   características de cajero: 

Tipo  Nombre 

Estado 

Pantalla_calle_caracteristicas_obras.java 

Pantalla que nos permite  configurar los diferentes 

características de las  obras: 

Tipo  Duración  Protecciones 

 

Nombre Clase  Descripción 

Pantalla_calle_caracteristicas_semaforo.java 

Pantalla que nos permite  configurar los diferentes 

características de los  semáforos:  Estado  Duración  Distancia  Pantalla_calle_distancia_semaforo.java 

Pantalla que nos permite  configurar a que  distancias de semáforos 

queremos que nos  informe:  Más de diez metros  Menos de diez metros  Menos de cinco metros 

Pantalla_calle_duracion_obras.java 

Pantalla que nos permite  configurar los tiempo de  duración de las obras: 

Un día  Dos días  Sin determinar 

Pantalla_calle_duracion_semaforo.java 

Pantalla que nos permite  configurar los tiempo de 

duración de los  semáforos: 

Un minuto  Menos de un minuto  Menos de treinta seg. 

 

Nombre Clase  Descripción 

Pantalla_calle_estado_cajero.java 

Pantalla que nos permite  configurar las diferentes   características de cajero: 

Funciona  Averiado 

Otro 

Pantalla_calle_estado_semaforo.java 

Pantalla que nos permite  configurar los diferentes  

estados de los  semáforos:  Funciona  Averiado  Otro  Pantalla_calle_nombre_cajero.java 

Pantalla que nos permite  configurar las diferentes  

nombres de cajero:  Santander 

BBVA  Otro 

Pantalla_calle_protecciones_obras.java 

Pantalla que nos permite  configurar las diferentes  

características de las  protecciones:  Valla  Zanja  Andamio  Pantalla_calle_tipo_cajero.java 

Pantalla que nos permite  configurar las diferentes   características del tipo 

de cajero:  Interior  Exterior  Otros 

 

Nombre Clase  Descripción 

Pantalla_calle_tipo_obras.java 

Pantalla que nos permite  configurar los diferentes 

tipos de obras:  Edificio 

Calle  Otros 

Pantalla_Destino.java 

Pantalla que nos permite  configurar los diferentes 

tipos de destinos:  Nombre 

Horario  Incidencia 

Pantalla_Estacion.java 

Pantalla que nos permite  configurar los diferentes 

tipos de estaciones:  Nombre 

Horario  Incidencia 

Pantalla_tipo_supermercado.java 

Pantalla que nos permite  configurar los diferentes  tipos horario de apertura  en los supermercados: 

Ocho  Doce  Veinticuatro 

Pantalla_ubicacion_caracteristicas_farmacia.java 

Pantalla que nos permite  configurar las diferentes 

características de las  farmacias : 

Tipo  Día laboral 

 

Nombre Clase  Descripción 

Pantalla_ubicacion_caracteristicas_supermercado.java 

Pantalla que nos permite  configurar las diferentes 

características de los  supermercados :  Tipo  Día laboral  Horario  Pantalla_ubicacion_día_laboral.java 

Pantalla que nos permite  configurar las diferentes 

jornadas de trabajo:  Lunes a viernes  Fines de semana 

Todos los días 

Pantalla_ubicacion_farmacia.java 

Pantalla que nos permite  configurar los diferentes  tipos horario de apertura 

en las farmacias:  Ocho  Doce  Veinticuatro 

Pantalla_ubicacion_horario.java 

Pantalla que nos permite  configurar los diferentes 

tipos horario de  apertura: 

Mañana  Tarde  Todo el día 

 

Nombre Clase  Descripción 

Pantalla_ubicacion_tipo_farmacia.java 

Pantalla que nos permite  configurar los diferentes  tipos horario de apertura 

en las farmacias:  Ocho  Doce  Veinticuatro 

Pantalla_ubicacion_tipo_supermercado.java 

Pantalla que nos permite  configurar los diferentes  tipos de supermercado: 

Vegetariano  Nacional  Internacional 

PantallaCalle.java 

Pantalla que nos permite  configurar los diferentes  tipos de opciones en la  calle:  Semáforo  Obras  Cajero  PantallaServicios.java 

Pantalla donde se nos  permite elegir que  servicio queremos  configurar:  Transporte  Calle  Ubicación  PantallaTiempo.java  Pantalla donde  configuramos las  propiedades de tiempo:  Último   Siguiente  Incidencia 

 

Nombre Clase  Descripción 

PantallaTransporte.java 

Pantalla que nos permite  configurar los diferentes 

tipos de transporte :  Metro   Autobús  Cercanías 

PantallaTransporte2.java 

Pantalla donde nos  permite elegir que factor 

queremos configurar en  los transportes:  Tiempo  Estación  Destino  PantallaUbicacion.java 

Pantalla que nos permite  configurar los diferentes  tipos de ubicaciones :  Restaurantes  Supermercados  Farmacias  Ventanas.java  Pantalla principal  de  inicio de aplicación. Aquí 

se decide que acción se  toma si lanzar o 

configurar.   

 

Carpeta /res/  

Contiene todos los ficheros de recursos necesarios para el proyecto: imágenes,  vídeos, cadenas de texto, etc. Los diferentes tipos de recursos de deberán  distribuir entre las siguientes carpetas: 

/res/drawable/. Contienen las imágenes de la aplicación. Se puede 

 

utilizar diferentes recursos dependiendo de la resolución del  dispositivo.  

/res/layout/. Contienen los ficheros de definición de las diferentes 

pantallas de la interfaz gráfica. Se puede dividir en /layout y /layout‐ land para definir distintos layouts dependiendo de la orientación del  dispositivo.  

En nuestra aplicación vamos a definir los siguientes layouts: 

Descripcion Layouts  activity_clase_datos.xml  activity_connexion_bluetooth.xml  activity_main.xml  activity_pantalla__activacion.xml  activity_pantalla__destino.xml  activity_pantalla__estacion.xml  activity_pantalla_calle_caracteristicas_cajero.xml  activity_pantalla_calle_caracteristicas_obras.xml  activity_pantalla_calle_caracteristicas_semaforo.xml  activity_pantalla_calle_distancia_semaforo.xml  activity_pantalla_calle_duracion_obras.xml  activity_pantalla_calle_duracion_semaforo.xml  activity_pantalla_calle_estado_cajero.xml  activity_pantalla_calle_estado_semaforo.xml  activity_pantalla_calle_nombre_cajero.xml  activity_pantalla_calle_protecciones_obras.xml  activity_pantalla_calle_tipo_cajero.xml  activity_pantalla_calle_tipo_obras.xml  activity_pantalla_ubicacion_caracteristicas.xml  activity_pantalla_ubicacion_día_laboral.xml  activity_pantalla_ubicacion_farmacia.xml  activity_pantalla_ubicacion_horario.xml  activity_pantalla_ubicacion_restaurante.xml  activity_pantallla_ubicacion_supermercado.xml  pantalla_ubicacion_tipo_farmacia.xml 

 

   

/res/anim/. Contiene la definición de las animaciones utilizadas por la 

aplicación.  

/res/menu/. Contiene la definición de los menús de la aplicación.  

/res/values/. Contiene otros recursos de la aplicación como por 

ejemplo cadenas de texto (strings.xml), estilos (styles.xml), colores  (colors.xml), etc.  

/res/xml/. Contiene los ficheros XML utilizados por la aplicación.  

/res/raw/. Contiene recursos adicionales, normalmente en formato 

distinto a XML, que no se incluyan en el resto de carpetas de recursos.    

  Figura 32 Carpeta res   

 

 

Carpeta /gen/  

Contiene una serie de elementos de código generados automáticamente al  compilar el proyecto. Cada vez que generamos nuestro proyecto, la maquinaria  de compilación de Android genera por nosotros una serie de ficheros fuente en  java dirigido al control de los recursos de la aplicación. 

pantallacalle.xml  pantallainicio.xml  pantallametro.xml  pantallaservicios.xml  pantallatiempo.xml  pantallatransporte.xml  pantallatransporte2.xml  pantallaubicacion.xml 

 

 

  Figura 33 Carpeta gen   

El más importante es el que se puede observar en la imagen, el fichero R.java,  y la clase R. 

Esta clase R contendrá en todo momento una serie de constantes con los IDs  de todos los recursos de la aplicación incluidos en la carpeta /res/, de forma  que podamos acceder fácilmente a estos recursos desde nuestro código a  través de este dato.  

 

Carpeta /assets/ 

Contiene todos los demás ficheros auxiliares necesarios para la aplicación (y  que se incluirán en su propio paquete), como por ejemplo ficheros de  configuración, de datos, etc. 

La diferencia entre los recursos incluidos en la carpeta /res/raw/ y los incluidos  en la carpeta /assets/ es que para los primeros se generará un ID en la clase R y  se deberá acceder a ellos con los diferentes métodos de acceso a recursos.  Para los segundos sin embargo no se generarán IDs y se podrá acceder a ellos  por su ruta como a cualquier otro fichero del sistema. Usaremos uno u otro  según las necesidades de nuestra aplicación. 

   

Fichero AndroidManifest.xml 

Contiene la definición en XML de los aspectos principales de la aplicación,  como por ejemplo su identificación (nombre, versión, icono, …), sus  componentes (pantallas, mensajes, …), o los permisos necesarios para su  ejecución. Aparte de otras cosas, AndroidManifest.xml se encarga de : 

 

 Nombra el paquete JAVA. Cada paquete JAVA lleva un identificador  único en la aplicación.  

 Describe cada uno de los componentes de la aplicación — activities,  services y broadcast receivers junto con content providers de los que  nuestra aplicación hace uso. Nombra las clases que implementan cada  uno de sus componentes y publica sus posibles opciones. Si necesitas  acceder a una Activity o un Intent, lo declaramos.  

 Determina que procesos implementa.  

 Declara los permisos que necesita nuestra aplicación.  

 Declara, así mismo, que permisos requieren otras partes para  interactuar con nuestra aplicación.  

 Permite definir niveles mínimos y máximo de SDK en los que nuestra  aplicación será compatible.  

 Lista las librerías que son enlazadas a nuestra aplicación.  

En nuestra aplicación vamos a solicitar permisos para acceder a internet y  tener acceso para activar el bluetooth del dispositivo. 

 

<uses‐permission android:name="android.permission.INTERNET" /> ‐‐> Permite a las  aplicaciones abrir sockets de red 

 

<uses‐permission android:name="android.permission.BLUETOOTH" /> ‐‐> Permite que  las aplicaciones se conecten a dispositivos con Bluetooth emparejados 

 

<uses‐permission android:name = "android.permission.BLUETOOTH_ADMIN" /> ‐‐>  Permite a las aplicaciones para descubrir y emparejar dispositivos Bluetooth   

Otra opción que vamos a definir en nuestro archivo manifest será que todas las  pantallas definidas en el layout solo van a tener una posición determinada, es  decir no se podrá utilizar la opción de rotar la pantalla que viene 

predeterminada en la mayoría de los dispositivos móviles. Esto lo 

implementamos en el archivo manifest incluyendo el siguiente comando:   

android:screenOrientation="portrait"   

 

3.1.3.1.2 Subir aplicación a Google Play 

Una vez la aplicación esta depurada y sin errores el plugin de Eclipse nos  proporciona la herramienta para generar la aplicación, que podremos  descargar en nuestro dispositivo y se podrá instalar. Esta aplicación tiene la  extensión “.apk”. 

Básicamente para generar esta aplicación se debe de rellenar los siguientes  datos: 

 

 Alias: Nombre con el que queremos que se identifique   Password: clave para crear la aplicación 

 Confirm: Se debe de confirmar el password anterior 

 Validity(years):Este campo se debe de rellenar con un mínimo de 25  años 

 First and Last Name: Nombre del responsable del desarrollo 

 Organizational Unit and Organization: Empresa y unidad empresarial    City or Locality: Ciudad donde se hizo el desarrollo 

 State or Province: Ciudad donde se hizo el desarrollo   Country Code(XX): 

   

 

  Figura 34 Formulario para generar fichero .apk 

 

Una vez generada debemos de accede a nuestra cuenta como desarrolladores   en la siguiente dirección: 

 

https://play.google.com/apps/publish/signup/ 

 

Para tener acceso debemos de pagar una cuota de 25$. Tendrás que rellenar la  información de tu aplicación que se indica a continuación: 

 

Subir recursos: 

Archivo APK: 

El tamaño máximo admitido de un único archivo APK es 50 MB. Se puede  utilizar archivos de expansión para subir recursos adicionales como, por  ejemplo, gráficos. Si un único archivo APK no es suficiente para todos los  dispositivos que se desean, se puede subir varios archivos APK en la misma  entrada de aplicación para que cada uno se encargue de la configuración de un  dispositivo diferente. 

Hay que tener en cuenta que los nombres de paquetes de los archivos de  aplicaciones son únicos y permanentes, por lo que debes elegirlos con cuidado.  Los nombres de paquetes no se pueden eliminar ni reutilizar en el futuro. Si se 

pierde tu almacén de claves, habrá que publicar la aplicación con un nuevo 

nombre de paquete y una nueva clave. También se debe actualizar la 

descripción de la aplicación original y eliminar su publicación.   

Borrador de archivo APK de aplicación 

Al subir un archivo APK, este se puede guardar como un borrador mientras  editas el resto de aspectos de la lista. Habrá un botón para guardar el borrador  en el cuadro de diálogo después de subir el archivo APK. Si se necesitara añadir  una nueva versión del archivo APK, pero no quieres publicarla, accede de  forma inmediata a Google Play, cambia al modo avanzado y guarda tu nuevo  archivo APK como borrador. 

 

Capturas de pantalla 

Son obligatorias dos capturas de pantalla y se pueden utilizar otras seis de  forma opcional. 

 

Idioma: sirve para indicar el idioma de tu aplicación. El idioma 

predeterminado es el inglés de EE.UU. La lista de idiomas irá aumentando a  medida que los dispositivos con la tecnología de Android estén disponibles  en más idiomas. Asimismo, se puede incluir traducciones del nombre y de la  descripción de la aplicación para promocionarla para usuarios que hablen  otros idiomas. Las traducciones se mostrarán en Google Play. 

Nombre: es el nombre de tu aplicación tal como te gustaría que apareciera  en Google Play. Se puede añadir un nombre por idioma. 

Descripción: es la descripción de tu aplicación que se verá en Google Play.  Utiliza la función de traducción para traducir la descripción de tu aplicación a  otros idiomas. En este campo, puedes utilizar un máximo de 4.000 

caracteres. 

Cambios recientes: la función de cambios recientes ofrece la oportunidad de 

añadir notas sobre los cambios específicos de la versión más reciente de tu  aplicación. Se utilizara el campo de cambios recientes para informar a tus  usuarios sobre los cambios que has hecho en la aplicación. Más información  sobre la función de cambios recientes 

Texto promocional: es el texto situado junto al gráfico promocional en  lugares destacados de Google Play. 

Tipo de aplicación: Google Play se divide en dos tipos principales de  aplicaciones: Aplicaciones y Juegos. 

Categoría: Se debe elegir una categoría para la aplicación. Consulta más  información sobre las categorías. 

 

Opciones de publicación 

Ubicaciones:  

Son las ubicaciones en las que se puede distribuir tus aplicaciones.  No todas las ubicaciones de la lista actual tienen usuarios con dispositivos  con la tecnología de Android. 

Se puede seleccionar ubicaciones de forma individual o la opción Todas las  ubicaciones actuales y futuras. Esta opción significa que se añadirán más  ubicaciones de distribución a medida que las vayamos habilitando para la  aplicación.  

Nota: en este momento, solo puedes vender aplicaciones a usuarios que se 

 

 

Información de contacto 

Se debe seleccionar un canal de asistencia para tu aplicación (por ejemplo,  sitio web, correo electrónico o teléfono). 

Los usuarios de Google Play verán esta información.  Se puede seleccionar varios canales de asistencia.   

3.1.3.1.3 Base de datos 

Para la realización de este proyecto hemos implementado una pequeña base  de datos donde iremos almacenando todos los registros que el usuario quiera  que se tengan en cuenta mientras la aplicación está funcionando. 

En Android tenemos la posibilidad de almacenar esta información de tres  maneras distintas: 

 Preferencias   Fichero 

 Base de datos SQLite   

Decidimos utilizar el método de base de datos, ya que a nivel didáctico el uso  de esta herramienta nos permite utilizar los conocimientos adquiridos  durante la carrera y aplicarlos en un caso real. 

 

3.1.3.1.4 SQLite 

 

SQLite es una base de datos de código abierto. SQLite compatible con las  funciones de base de datos relacionales estándar, como la sintaxis SQL,  transacciones y declaraciones preparadas. La base de datos requiere poca  memoria en tiempo de ejecución (aprox. 250 Kb), que hace que sea un buen  candidato a ser incorporado en otros tiempos de ejecución.

SQLite está integrado en todos los dispositivos Android. Utilizando una base  de datos SQLite en Android no requiere un procedimiento de configuración o  administración de la base de datos.  

 

Sólo se tiene que definir las instrucciones SQL para crear y actualizar la base  de datos.

El acceso a una base de datos SQLite implica el acceso al sistema de archivos.  Esto puede ser lento. Por lo tanto, se recomienda llevar a cabo las 

operaciones de base de datos de forma asíncrona.  

3.1.3.1.5 Estructura Base de datos 

En nuestra base de datos vamos a crear una tabla de nombre “datos” donde  almacenaremos  los siguientes datos: 

   Código   Descripción   Acción   Estado   Frase   

La base de datos se crea la primera vez que se lanza la aplicación, carga los  datos desde un fichero de texto y queda instalada con todos los valores por  defecto. 

Vamos a crear una tabla simple sin clave primaria, ya que en  SQLite para  Android esto no pude ser implementado y además la complejidad de esta  base de datos no lo requiere. 

 

Dentro de la aplicación tenemos la posibilidad de añadir nuevos registros,  actualizar, modificar y borrar. 

 

Documento similar