Aplicación en Android para elaborar un mapa de ruido con un

Transcripción

Aplicación en Android para elaborar un mapa de ruido con un
Ingeniería Técnica en Informática de Sistemas
Aplicación en Android para
elaborar un mapa de ruido con un
Smartphone
Presentado por:
Roberto Garcia Porcellá
Dirigido por:
Raul Montoliu Colás
Castellón de la Plana, 6 de Septiembre de 2012
2
Resumen
El presente proyecto consiste en el desarrollo de una aplicación en Android que será
utilizada en teléfonos móviles táctiles (Smartphones), cuya funcionalidad es saber el
nivel de ruido que hay por los lugares por donde el usuario transcurre diariamente.
Para ello se dispone de una interfaz grafica en la que se puede activar y desactivar el
muestreo y ver tanto en una tabla como en un mapa, las zonas por las que se ha pasado y
el ruido que ha soportado.
La aplicación ha sido implementada para el sistema operativo Android y se ha tenido
en cuenta en todo momento la tecnología de pantalla táctil que incorporan los
dispositivos móviles de última generación, la opción que tienen todos los smartphones
para tener conexión a Internet y como obtener la localización en cada momento (GPS)
3
Índice
Resumen
Índice
Índice de figuras
3
4
5
1. Introducción
6
1.1 Motivación .……………………………………………………………….. 6
1.2 ¿Qué es Android? .………………………………………………………... 7
1.3 ¿Por qué una aplicación en Android? …….……………………………….. 9
1.4 Conceptos básicos ……….……………………………………………….. 10
1.5 Objetivo de la aplicación .………………………………………………… 11
1.6 Herramientas utilizadas .………………………………………………….. 11
2
Planificación
2.1 Identificación de las tareas ………………………………………………
2.2 Seguimiento del proyecto ………………………………………………..
2.2.1 Planificación prevista ………………………………………..
2.2.2 Planificación real ………………………………………….....
12
12
14
14
16
3
Programar en Android
3.1 ¿Qué se necesita? …………………………………………………………
3.2 ¿Cómo se programa? ……………………………………………………..
3.3 ¿Cómo se instala la aplicación en un móvil? ……………………………..
19
19
23
34
4
Desarrollo de la aplicación
35
4.1 Análisis …………………………………………………………………… 35
4.2 Diseño de la interfaz ……………………………………………………… 36
4.3 Implementación ………………………………………………………….. 39
4.4 Pruebas …………………………………………………………………… 43
4.5 Aplicación finalizada …………………………………………………….. 44
5
Utilización de la aplicación
48
6
Mejoras y trabajo futuro
49
Bibliografía
50
4
Índice de figuras
Figura 1.2.1 Estructura del S.O Android …………………………………………… 7
Figura 2.2.1 Tabla planificación prevista …………………………………………. 14
Figura 2.2.2 Diagrama de Gantt de la planificación prevista ……………………... 15
Figura 2.2.3 Tabla planificación real ……………………………………………… 16
Figura 2.2.4 Diagrama de Gantt de la planificación real ………………………….. 17
Figura 3.1.1 Descarga Eclipse …………………………………………………….. 19
Figura 3.1.2 Descarga Android SDK ……………………………………………... 20
Figura 3.1.3 Actualizando Android SDK ………………………………………… 21
Figura 3.1.4 Configurando AVD …………………………………………………. 22
Figura 3.2.1 Pantalla inicial para crear un nuevo proyecto ……………………….. 23
Figura 3.2.2 Pantalla para diseñar el icono de la aplicación ………………………. 24
Figura 3.2.3 Pantalla para crear la actividad ………………………………………. 25
Figura 3.2.4 Pantalla para configurar la actividad ………………………………… 26
Figura 3.2.5 Estructura inicial de carpetas ………………………………………… 26
Figura 3.2.6 Ejemplo de código de la parte gráfica ……………………………….. 27
Figura 3.2.7 Ejemplo de código de la parte funcional …………………………….. 28
Figura 3.2.8 Pantalla inicial para generar la firma ……………………………….... 29
Figura 3.2.9 Asistente de ayuda (chequeo del proyecto) ………………………….. 30
Figura 3.2.10 Asistente de ayuda (crear una clave) ……………………………….. 31
Figura 3.2.11 Asistente de ayuda (asignación de datos) …………………………... 32
Figura 3.2.12 Asistente de ayuda (Ubicación donde guardar el apk firmado) …..... 33
Figura 4.2.1 Pantalla inicio ………………………………………………………... 36
Figura 4.2.2 Inicio cargando datos ………………………………………………… 36
Figura 4.2.3 Pantalla con mapa y resultados ………………………………………. 37
Figura 4.2.4 Barras de filtrado …………………………………………………….. 38
Figura 4.3.1 Estructura de la carpeta src ………………………………………….. 39
Figura 4.3.2. Estructura de la primera ventana ……………………………………. 41
Figura 4.3.3. Estructura de la segunda ventana …………………………………… 42
Figura 4.5.1 Pantalla principal ……………………………………………………. 44
Figura 4.5.2 Primera ejecución …………………………………………………… 44
Figura 4.5.3 Obteniendo el sonido ………………………………………………... 44
Figura 4.5.4 Cinco seg. “parada” ………………………………………………… 44
Figura 4.5.5 Aplicación parada …………………………………………………… 45
Figura 4.5.6 Botón View Map ……………………………………………………. 45
Figura 4.5.7 Tabla con valores …………………………………………………… 45
Figura 4.5.8 Organizada por distancia ……………………………………………. 45
Figura 4.5.9 Organizada por fecha ………………………………………………… 46
Figura 4.5.10 Organizada por valor ……………………………………………….. 46
Figura 4.5.11 Probando filtro (I) …………………………………………………... 46
Figura 4.5.12 Probando filtro (II) …………………………………………………. 46
5
1. Introducción
1.1 Motivación
La realización de cualquier actividad humana suele llevar aparejado un nivel sonoro
de mayor o menor intensidad. Estos sonidos en función del tipo, lugar, duración y el
momento del día en que se producen pueden resultar desde molestos a llegar a alterar el
bienestar físico y psíquico de los seres vivos. Cuando esto sucede hablamos de Ruido y
es considerado como Contaminación.
La Contaminación Acústica es considerada en la actualidad como una de las formas
de contaminación ambiental que más contribuyen al deterioro de la calidad ambiental
del territorio. Diversos estudios realizados sobre la contaminación acústica en las
grandes ciudades indican que la contaminación acústica es un fenómeno generalizado
en todas las zonas urbanas y constituye un problema medioambiental cada vez más
importante.
Gracias al volunteered geographic information (VGI) que es un programa donde
voluntarios de todo el mundo están contribuyendo a recopilar y mostrar información
geográfica, podemos saber los cambios que hay en la biodiversidad, contaminaciones
que nos pueden afectar, etc. Este es uno de los motivos por los que se realiza esta
aplicación, ya que se podría ayudar a obtener información sobre la contaminación
acústica.
Para realizar las mediciones de ruido se necesitan muchos instrumentos y accesorios
como sonómetro o decibelímetro, calibrador acústico, pantalla anti viento, trípode,
micrófono, preamplificador, etc. por tanto, ¿Por qué no aprovechar la tecnología de los
móviles (Smartphones) que utilizamos hoy en día para simplificar y no llevar tantos
aparatos? Está claro que la medición no es tan precisa como lo que se puede obtener con
estos instrumentos, pero si lo que se quiere es hacer una medición a modo de curiosidad
o no se precisa de tanta exactitud se puede tener al alcance de la mano.
Este es otro de los motivos por los cuales se dio inicio a este proyecto ya que con un
smartphone se puede obtener mayor información, con mayor rapidez y mayor
comodidad con solo un dispositivo. Podemos capturar el sonido mediante el micrófono,
saber la localización mediante el GPS, ver el mapa accediendo a Internet y consultar
cualquier muestra utilizando la pantalla táctil de la que se dispone.
6
1.2 ¿Qué es Android?
Android es un sistema operativo diseñado inicialmente para smartphones y tablets
aunque hoy en día también hay otros dispositivos que funcionan con Android como
pueden ser: relojes, reproductores de MP3, ordenadores, netbooks e incluso televisores.
Está basado en el núcleo de Linux y permite controlar dispositivos por medio de
bibliotecas desarrolladas o adaptadas por Google mediante el lenguaje de programación
Java.
El siguiente diagrama muestra los principales componentes del sistema operativo
Android.
Figura 1.2.1 Estructura del S.O Android
7
Características:

Un Framework que permite la reutilización y sustitución de componentes.

Máquina virtual de Dalvik optimizada para dispositivos móviles.

Navegador integrado basado en el motor de código libre WebKit.

Gráficos optimizados proporcionados por una colección de librerías gráficas
2D personalizadas; Gráficos 3D basados en la especificación OpenGL ES 1.0
(aceleración hardware opcional).

SQLite para almacenamiento de datos estructurados.

Soporte multimedia para audio, vídeo, y formatos de imágenes (MPEG4,
H.264, MP3, AAC, AMR, JPG, PNG,GIF).

Telefonía GSM (dependiente del hardware).

Bluetooth, EDGE, 3G, y WiFi (depende del hardware del móvil).

Cámara, GPS y acelerómetro (depende del hardware del móvil).

Un rico entorno de desarrollo incluyendo un emulador de dispositivos,
herramientas para depuración, perfiles de rendimiento y memoria y plugin
para el IDE Eclipse.
8
1.3 ¿Por qué una aplicación en Android?
La aplicación se desarrollara en el sistema operativo Android por las numerosas
ventajas que presenta, por ejemplo:

Android es fácil de aprender. Si se tienen conocimientos de cómo programar en
Java o C#, solo se debe obtener el SDK de Android, incorporarlo al IDE y
comenzar a aprender lo básico para empezar a desarrollar en Android.

Android es sencillo de instalar. Por ello, esta presente en multitud de
dispositivos y abarca desde relojes hasta televisores.

Android es open source (código abierto). De esta forma se evitan problemas de
licencias, problemas comerciales y se mantiene el código base.

Android gestiona inteligentemente los recursos de que dispone. Con esto se evita
que aplicaciones multitarea deje sin recursos al dispositivo y hace que funcione
correctamente.

Android tiene una comunidad muy extensa de desarrolladores y usuarios.
Gracias a ello se pueden compartir soluciones o ideas y resolver dudas o
problemas que puedan ir surgiendo durante el desarrollo.

Android te da la posibilidad de manejar y gestionar cualquier parte o accesorio
del dispositivo. Tiene una gran cantidad de herramientas que te ayudan a
mantener el control de aplicación, como por ejemplo el uso de la memoria, el
manejo de la interfaz táctil, la comunicación con los demás terminales, etc.
9
1.4 Conceptos básicos
Se define a continuación la terminología utilizada en el presente proyecto a fin de
que este sea fácil y cómodo de entender.
-
Android: Sistema operativo móvil en el que nos vamos a basar para realizar la
aplicación.
-
Java: Lenguaje de programación de alto nivel orientado a objetos que se va a
utilizar para programar la aplicación.
-
Eclipse: Entorno de desarrollo de código abierto con el que se ha diseñado,
elaborado y compilado la aplicación.
-
Ruido: En el campo de la contaminación acústica, es el sonido con intensidad
alta que puede resultar incluso perjudicial para la salud humana.
-
Mapa de ruido: Es la representación cartográfica de los niveles de ruido
existentes en una zona concreta y en un período determinado.
-
Contaminación acústica: exceso de sonido que altera las condiciones normales
del ambiente en una determinada zona provocado por las actividades humanas
(tráfico, industrias, locales de ocio, aviones, etc.), y produce efectos negativos
sobre la salud auditiva, física y mental de las personas.
-
Smartphone: teléfono móvil inteligente construido sobre un sistema operativo
móvil, con una mayor capacidad de computación y conectividad que un teléfono
movil convencional. Tiene la capacidad de conectarse a Internet, integrar GPS,
cámara de fotos y acelerómetro, etc.
-
Interfaz de usuario: es el medio con que el usuario puede comunicarse con el
movil, y comprende todos los puntos de contacto entre la persona y el
dispositivo. Normalmente suelen ser fáciles de entender y fáciles de accionar.
Las interfaces básicas de usuario son aquellas que incluyen elementos como
menús, ventanas, algunos sonidos que el movil hace, y en general, todos
10
aquellos canales por los cuales se permite la comunicación entre el ser humano y
los dispositivos.
1.5 Objetivo de la aplicación
El objetivo de este proyecto es el de desarrollar una aplicación para teléfonos
móviles que incorporen el sistema operativo Android, que permita de forma sencilla
y cómoda, obtener los datos del lugar donde se encuentra el usuario y el ruido que
está soportando para hacer un mapa de ruido.
Los principales objetivos del proyecto son los siguientes:
1. Realizar una aplicación que nos muestre un mapa de ruido de las zonas por
donde transitamos habitualmente.
2. Facilidad de uso. Se ha intentado hacer una aplicación simple para que le sea
fácil al usuario utilizarla en un momento dado y pueda obtener los resultados
sin mucho esfuerzo.
3. Aprender a programar en Java. En diferentes asignaturas de la carrera de
Ingeniería Técnica en Informática de Sistemas se han enseñado varios
lenguajes de programación como C, Python, ensamblador, C++ pero no Java
y por ello era un objetivo también aprender a programar en este lenguaje.
4. Aprender a desarrollar en Android mediante código. Existen programas
“diseñadores” como AppInventor o Mono (entre muchos otros) con los que se
pueden hacer aplicaciones mediante una interfaz grafica sin tener muchos
conocimientos de Java, solo eligiendo desde un menú lo que quieres utilizar y
que quieres que haga. Esta aplicación ha sido programada con Java y se ha
utilizado el entorno de desarrollo Eclipse para hacer el diseño y elaborarla.
1.6 Herramientas utilizadas
Las herramientas que se han utilizado para realizar este proyecto son las siguientes:







Microsoft Windows 7
Eclipse
Software Development Kit (SDK) de Android
Java Development Kit (JDK)
Microsoft Word 2007
GanttProject 2.5.5
Smartphones para realizar pruebas (Samsung Galaxy Ace y Samsung Galaxy
S III)
 Paint
11
2. Planificación
Con el fin de llevar una organización y un seguimiento de la duración de las tareas
requeridas en el proyecto, se elaboró una tabla con dichas tareas y la duración estimada
de cada una de ellas. A continuación se muestran dos tablas, una indicando las tareas y
un cálculo estimado de horas y otra con el cálculo real de la duración de estas.
Debido a la jornada laboral que se está realizando no se pudo avanzar de una manera
planificada y se alargó más del periodo estipulado.
2.1 Identificación de las tareas
Tras el estudio de los requisitos que debía cumplir el proyecto, se decidieron las
tareas del proceso de desarrollo del proyecto. De esta manera, la organización sería la
siguiente:
1. Requisitos
2. Diseño
3. Implementación
4. Pruebas
A continuación se muestra la tabla con las tareas especificadas:
FASE
PLANIFICACION
DESARROLLO
TAREAS
Definición de objetivos
Especificación de las tareas
Instalación de las herramientas a utilizar
Familiarización con el entorno de trabajo
Especificación de requisitos
Diseño de la interfaz
Implementación
Pruebas
CONCLUSIONES
Instalación y pruebas en un dispositivo real
Estudio de posibles mejoras
DOCUMENTACION
Elaborar la guía de uso
Realización de la memoria final
12
A continuación se explica cada una de las tareas:
 Definición de objetivos. Tras varias reuniones con el profesor, se acordaron los
objetivos que debía alcanzar el presente proyecto y las características que debía
tener en su versión final.
 Especificación de las tareas. A partir de los objetivos establecidos, se definieron
las tareas en las que debía de estar dividido el proyecto.
 Instalación de las herramientas a utilizar. Se buscaron, descargaron e instalaron
todas las herramientas necesarias para el desarrollo.
 Familiarización con el entorno de trabajo. Después de haber instalado las
herramientas, fue necesario un periodo de aprendizaje tanto para programar en
Java como para utilizar el entorno de trabajo y las herramientas de las que se
disponía. Al disponerse en carpetas los archivos que se generan en Android,
hubo que hacer un esfuerzo mayor para intentar adaptarse a esta forma de
programar. Se hicieron diferentes ejemplos de dificultad progresiva para ir
adquiriendo conocimientos y experiencia.
 Especificación de requisitos. Se definieron los requisitos que debía cumplir la
funcionalidad de la aplicación.
 Diseño de la interfaz. Se hizo un diseño sencillo e intuitivo para una mayor
usabilidad y rapidez.
 Implementación. Se generó el código necesario para realizar todas las tareas
requeridas.
 Pruebas. Se hicieron diferentes pruebas con el emulador de Eclipse para
comprobar que no habían errores en el código y que funcionaba todo
correctamente.
 Instalación y pruebas en un dispositivo real. Al comprobar que no daba errores
en el emulador, se paso a probar la aplicación en varios móviles (Samsung
Galaxy ace y Samsung Galaxy S III) que es donde realmente se va a utilizar.
 Estudio de posibles mejoras. Con la aplicación finalizada se miraron posibles
mejoras que ampliara la funcionalidad de la aplicación.
 Elaborar la guía de uso. Como esta aplicación va orientada al público en general,
se hizo una guía de uso para guiar al usuario a utilizarla y poder obtener y
entender los resultados más fácilmente.
13
 Realización de la memoria final. Se hizo la presente memoria con el objetivo de
documentar todas las tareas realizadas durante la elaboración de la aplicación, la
planificación y el manual de uso.
2.2 Seguimiento del proyecto
 Planificación prevista
Como vemos en la figura 2.2.1, la fecha de inicio del proyecto fue el 3 de
Octubre de 2011 y la fecha para finalizarlo era el 3 de Abril de 2012. De esta
forma se cumplirían entre 300 y 350 horas de proyecto aproximadamente
(descontando días festivos que no están descontados en los siguientes datos
mostrados).
En la siguiente tabla se muestra la planificación prevista para cada tarea:
Figura 2.2.1 Tabla planificación prevista
o




Duración estimada proyecto: 137 días
Planificación : 71 días
Desarrollo : 42 días
Conclusiones : 6 días
Documentación : 21 días
14
A continuación se adjunta diagrama de Gantt donde se puede observar la tabla
anterior de manera gráfica:
Figura 2.2.2 Diagrama de Gantt de la planificación prevista
15
 Planificación real
Después de calcular los tiempos estimados para cada tarea, se empezó a
desarrollar el proyecto intentando ajustarse a lo previsto. Aun así, no se pudo
cumplir lo establecido, ya que, por motivos laborales, hubo un cambio en el
horario de trabajo y esto afectó al tiempo dedicado a la realización diaria del
proyecto.
De esta forma, el tiempo real dedicado al proyecto se dividiría como se muestra
en la siguiente tabla:
Figura 2.2.3 Tabla planificación real
o




Duración real proyecto : 241 días
Planificación : 71 días
Desarrollo : 151 días
Conclusiones : 6 días
Documentación : 16 días
16
A continuación se adjunta diagrama de Gantt donde se puede observar la tabla de la
dedicación real de manera gráfica:
Figura 2.2.4 Diagrama de Gantt de la planificación real
17
¿Por qué hay una diferencia tan grande entre la tarea de desarrollo prevista y la real?
Los motivos son los siguientes:
1. Como se comentó en la introducción, el lenguaje Java no se ha impartido en
ninguna de las asignaturas estudiadas durante la carrera, por lo tanto se tuvo que
aprender a programar en este lenguaje.
2. Se tuvo que adaptar los conocimientos obtenidos, a la manera de programar para
Android, además de adquirir nuevos conocimientos.
3. No existía mucha información sobre código o métodos para sacar un valor
absoluto del ruido que obtenemos y se tuvo que, mediante el profesor, preguntar a
profesores de otras universidades (proceso que demoró también la realización de
esta tarea). Con esta ayuda y buscando mucho, se pudo obtener.
Observando la información obtenida de las tablas anteriores podemos comprobar
que el proyecto se ha retrasado 104 días. Después del cambio de jornada laboral
realizado en Noviembre, solo se podía dedicar 1 o 2 horas al día por lo que ha sido
otros de los motivos del retraso sobre lo planificado inicialmente.
18
3. Programar en Android
3.1 ¿Qué se necesita?
A continuación se van a detallar las herramientas necesarias para empezar a
programar y el proceso de instalación de cada una de ellas para que sea mas cómodo y
fácil de entender.
Para empezar a programar se necesita:
 Java 5.0 o superior
 Eclipse (Eclipse IDE for Java Developers)
 Android SDK
 Eclipse Plug-in (Android Development Toolkit - ADT)
Instalación de la maquina virtual Java
Este software va a permitir ejecutar código java en el equipo. Posiblemente ya
este instalada en la mayoría de los equipos, pero a continuación se indica el enlace de
descarga por si se tuviese que instalar de nuevo.
Acceder a la web http://java.com/es/download/ y descargar e instalar el fichero
correspondiente.
Instalación de Eclipse
Seguidamente se instalará el JDK (Java Development Kit) y el Eclipse. La
versión del JDK debe ser 5.0 o superior. Eclipse es el entorno de desarrollo más
recomendable para programar en Android ya que es libre y ha sido utilizado por los
desarrolladores de Google para crear Android.
Para descargarlo hay que acceder a la web http://www.eclipse.org/downloads/ y
descargar la última versión de “Eclipse IDE por Java Developers”. Se puede
descargar para Windows, Linux y Mac OS.
Figura 3.1.1 Descarga Eclipse
19
La instalación consiste simplemente en descomprimir el zip descargado en la
ubicación deseada. Para ejecutarlo se accederá al fichero “eclipse.exe” dentro de la
ruta donde hayamos descomprimido la aplicación, por ejemplo
“c:\eclipse\eclipse.exe”.
Durante la primera ejecución de la aplicación, preguntará cuál será la carpeta
donde se quieren almacenar los proyectos. Se indicará la ruta deseada y se marcará la
opción check “Use this as the default” para que no vuelva a preguntarlo.
Instalación Android SDK
El siguiente paso a realizar es instalar el Android SDK de Google.
Se accede a la web http://developer.android.com/sdk/index.html y se descarga la
última versión del SDK para el S.O que utilicemos.
Figura 3.1.2 Descarga Android SDK
Una vez descargado, se instala fácilmente con el instalador del sistema
operativo.
Descargar el plug-in Android para Eclipse (ADT)
Google pone a disposición de los desarrolladores un plug-in para Eclipse
llamado Android Development Tools (ADT) que facilita en gran medida el desarrollo
de aplicaciones para la plataforma. Se puede descargar mediante las opciones de
actualización de Eclipse, accediendo al menú “Help / Install new software…” e
indicando la siguiente URL de descarga:
https://dl-ssl.google.com/android/eclipse/
20
Se seleccionaran los dos paquetes disponibles “Developer Tools” y “NDK Plugins”
y se pulsará el botón “Next>” para comenzar con el asistente de instalación.
Para configurar el plug-in se tendrá que indicar la ruta en la que se ha
instalado el SDK de Android. Para ello, se accede a la ventana de configuración de
Eclipse (Window / Preferences…), y en la sección de Android se indicará la ruta en
la que se ha instalado. Finalmente se pulsará OK para aceptar los cambios.
Instalar las Platform Tools y los Platforms necesarios
Además del SDK de Android que contiene las herramientas básicas para
desarrollar en Android, también se deberán descargar las llamadas Platflorm Tools,
que contienen herramientas específicas de la última versión de la plataforma, y una o
varias plataformas (SDK Platforms) de Android, que no son más que las librerías
necesarias para desarrollar sobre cada una de las versiones concretas de Android.
Así, si se quiere desarrollar por ejemplo para Android 2.2 se tendrá que descargar su
plataforma correspondiente.
Para ello, desde Eclipse se debe acceder al menú “Window / Android SDK
Manager“. En la lista de paquetes disponibles se seleccionarán las “Android SDK
Platform-tools“, las plataformas “Android 4.1 (API 16)” y “Android 2.2 (API 8)”, y
el paquete extra “Android Support Library“, que es una librería que permitirá utilizar
en versiones antiguas de Android características introducidas por versiones más
recientes. Se pulsará el botón “Install packages…” y una vez concluida la descarga
ya estaría este paso completado.
Figura 3.1.3 Actualizando Android SDK
21
Configurar un AVD
Cuando se vaya a probar y depurar aplicaciones Android no hay que hacerlo
necesariamente sobre un dispositivo físico, sino que se puede configurar un emulador
o dispositivo virtual (Android Virtual Device, o AVD) donde poder realizar
fácilmente estas tareas. Para ello, se accede al AVD Manager (menú Window / AVD
Manager), y en la sección Virtual Devices se pueden añadir tantos AVD como se
necesiten (por ejemplo, configurados para distintas versiones de Android o distintos
tipos de dispositivo).
Figura 3.1.4 Configurando AVD
Para configurar el AVD hay que indicar un nombre descriptivo, la versión de la
plataforma Android que utilizará, y las características de hardware del dispositivo
virtual, como por ejemplo su resolución de pantalla, el tamaño de la tarjeta SD, o la
disponibilidad de GPS. Además, se marcará la opción “Snapshot enabled”, que
permitirá arrancar el emulador más rápidamente en futuras ejecuciones.
22
1.2 ¿Cómo se programa?
Para crear un nuevo proyecto hay que seguir los siguientes pasos: File -->
New --> Project. Aparecerá una nueva ventana para indicar qué tipo de proyecto se
quiere utilizar. Aquí se elegirá Android Project. A continuación se verá una ventana
como la siguiente:
Figura 3.2.1 Pantalla inicial para crear un nuevo proyecto
Aquí se deben rellenar los siguientes campos:
-
Application name (Nombre de la aplicación): El nombre que aquí pongamos será
el que aparezca en la aplicación instalada en el dispositivo, en nuestro caso, en el
móvil.
-
Project name (Nombre del proyecto): Dentro de esta carpeta estarán todos los
archivos por los que esta compuesto el proyecto.
23
-
Package name (Nombre del paquete): Paquete de la aplicación, dentro de este
paquete estarán todos los archivos .java de nuestro proyecto.
Después de debe de elegir la versión para la que se va a programar la aplicación
y la mínima con la que debería “correr”.
Una vez rellenado esto, se le daría al botón “Siguiente” y nos aparecería esto:
Figura 3.2.2 Pantalla para diseñar el icono de la aplicación
Aquí se puede diseñar el icono de la aplicación con el que se mostrara en el
dispositivo final. Se puede configurar el tamaño, la imagen, el fondo, etc.
24
Si se continúa con el asistente, muestra las siguientes opciones:
Figura 3.2.3 Pantalla para crear la actividad
Se puede crear una actividad vacía o una predefinida a la que podemos modificar.
25
Por último, muestra la pantalla donde se configura la actividad principal del
proyecto.
Figura 3.2.4 Pantalla para configurar la actividad
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.
Figura 3.2.5 Estructura inicial de carpetas
26
A continuación se describirá brevemente que contiene cada una de ellas.
o Src - Contiene todo el código fuente de la aplicación.
o Gen - Contiene una serie de elementos de código generados automáticamente al
compilar el proyecto. Se hace de esta manera porque así Android controla los
recursos de la aplicación.
o Assets - Contiene todos los 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.
o Res - Contiene todos los ficheros de recursos necesarios para el proyecto:
imágenes, vídeos, cadenas de texto, etc. Cada recurso tiene su propia carpeta:
“drawable” para las imágenes, “layout” para los ficheros de definición de las
diferentes pantallas de la interfaz grafica, etc.
o Fichero AndroidManifest.xml – Este fichero es muy importante ya que, aparte
de definir los aspectos principales de la aplicación, contiene los permisos
necesarios para su ejecución.
Una vez creado el proyecto base, se puede empezar por modificar la pantalla de
la aplicación. Para ello, se debe abrir el archivo /res/layout/main.xml donde está la
parte grafica o /src/paquetejava/HolaUsuario.java que es donde está la parte
funcional para ir modificando lo que se necesite. Por ejemplo:
Figura 3.2.6 Ejemplo de código de la parte gráfica
27
Código de la parte funcional que viene por defecto:
Figura 3.2.7 Ejemplo de código de la parte funcional
Posteriormente ya se puede ir ampliando el código e ir añadiendo
funcionalidades para crear la aplicación.
Una vez implementada y probada, el último paso que queda antes de instalarla
en el móvil es exportarla a un archivo .apk que es el formato que reconocen los
móviles que utilizan Android. Para ello, primero se tiene que firmar la aplicación y
después generar el .apk.
Tener la aplicación firmada es uno de los requisitos indispensables a la hora de
compartirla con los demás o subirla al Android Market.
¿Por qué firmar la aplicación?




Como medida de seguridad y certificado de garantía
Para poder instalar y distribuir la aplicación sin problemas
Para que solo el autor pueda modificar y actualizar la aplicación
Porque es un requisito que pide Android Market
28
Para crear un certificado de firma y generar el .apk hay que hacer lo siguiente:
1. Se abre el archivo AndroidManifest.xml del árbol de directorios y se accede a la
primera pestaña llamada Manifest y en la parte de bajo aparece la sección
Exporting.
Figura 3.2.8 Pantalla inicial para generar la firma
29
2. Se selecciona la opción Use the Export Wizard, que es un asistente de ayuda en
este proceso. El asistente seleccionara automáticamente el proyecto al que
pertenece ese archivo y, si esta todo correcto, aparecerá la siguiente pantalla
para poder avanzar.
Figura 3.2.9 Asistente de ayuda (chequeo del proyecto)
30
3. Para firmar una aplicación es necesario tener una keystore que es un almacén de
claves en dónde se encuentran todos los certificados validados que se requieren.
Si es la primera vez que se va a firmar una aplicación, se debe crear una
keystore. Para ello se pulsa la opción Create new keystore y se rellenan los
siguientes campos:
 Location: Será el directorio del PC dónde se quiere que se guarde la
keystore y se le da un nombre.
 Password: La keystore deberá tener una contraseña de 6 dígitos o más
para crearla.
Figura 3.2.10 Asistente de ayuda (crear una clave)
Una vez confirmada, se le da a “Next”.
31
4. En la siguiente pantalla hay que rellenar el formulario para asignar los datos a la
keystore.




Alias: Un alias para la keystore, puede ser el mismo que el del nombre o
una abreviación del mismo.
Password: Nuevamente se asigna una contraseña y se confirma.
Validity (years): En esta parte se define la duración de la validación de la
keystore en años. Se puede definir un número relativamente grande para
asegurarse de que no expirará pronto.
Los siguientes campos corresponden a los datos personales y de empresa
de cada uno. Para España, las dos letras del Country Code son “ES”.
Figura 3.2.11 Asistente de ayuda (asignación de datos)
Se le vuelve a dar a “Next”.
32
5. En la siguiente pantalla, se elige el directorio de destino dónde se quiere guardar
el archivo .apk firmado y también indicará cuándo expirará el certificado. Se da
clic en Finish y ya con esto se tiene la aplicación firmada.
Figura 3.2.12 Asistente de ayuda (Ubicación donde guardar el apk firmado)
Para el caso en que se quieran firmar mas aplicaciones, se tienen que repetir
los pasos 1 y 2 pudiendo aprovechar la keystore que ya se tiene generada, ya que
no es necesario generar una keystore para cada aplicación.
33
1.3 ¿Cómo se instala la aplicación en un móvil?
En este apartado se describirá la forma de instalar la aplicación desarrollada ya
que, al no estar en el Android Market, se puede descargar e instalar de dos formas.
Antes de nada, lo primero que hay que hacer es activar en el teléfono móvil la
opción “Fuentes desconocidas” porque como se ha dicho antes, no es una aplicación
que este en el Android Market y por lo tanto el teléfono la reconoce como no fiable y
no la deja instalar. Esto esta en la siguiente ruta: Ajustes – Aplicaciones – Fuentes
desconocidas.
1. La primera forma de instalar la aplicación es de manera online: Se accede al
enlace http://www4.uji.es/~al076945/SoundMap.apk con el navegador web
del móvil y directamente pregunta si desea hacer la descarga del archivo. Se
guarda en la memoria interna o externa del dispositivo y una vez
descargado, se puede ejecutar desde el icono que aparece donde está
almacenado. Esta forma es la más cómoda y práctica, ya que al ocupar solo
33.1 Kb se puede obtener en cualquier momento y es muy rápida la descarga
y la instalación.
2. La segunda forma de instalar la aplicación es de manera local: Se conecta el
teléfono al pc por cable, se transfiere el archivo mediante cualquier
administrador de archivos que utilice el móvil y se almacena en la memoria
de este para poder ser instalada y ejecutada.
Una vez instalada la aplicación en el teléfono móvil, aparecerá el icono junto al resto
de aplicaciones que se tenga y podrá ser ejecutada en cualquier momento como
cualquier otra.
34
4. Desarrollo
En este apartado se explicará el proceso de desarrollo del proyecto, viendo el análisis
de requisitos, el diseño de la interfaz, la implementación y se analizará la aplicación ya
terminada.
4.1 Análisis
La aplicación tendrá las funcionalidades para obtener una serie de datos del
ruido captado y mostrarlos gráficamente en un mapa de ruido.
 Obtener datos
El usuario pulsa el botón “Start” para que el teléfono empiece a captar datos del
ruido de su entorno y la localización de donde se encuentra en ese momento.
Cada 10 segundos toma un muestreo de 5 segundos de sonido, obtiene la
localización actual y actualiza los datos.
 Parar la obtención de datos
El usuario pulsa el botón “Stop” y el teléfono deja de obtener datos.
 Mostrar mapa
El usuario pulsa el botón de Menú del teléfono móvil (no de la aplicación) y
aparece una pantalla dividida en dos.
En la parte superior aparece un mapa en el cual se muestran puntos de mayor o
menor tamaño según haya sido el valor del ruido obtenido.
En la parte inferior se muestra una tabla con los datos obtenidos, especificando
la fecha y hora a la que se ha tomado la muestra, la distancia a la que estamos
actualmente de ese punto donde se ha tomado la muestra y el valor del ruido
obtenido. Pulsando sobre el nombre de cada columna se puede organizar
respecto al valor que contiene dicha columna. Si se pulsa sobre el nombre de
“Distancia” se organiza de menor a mayor la columna de la distancia, si se pulsa
sobre el nombre de “Fecha” se organiza la columna de fechas quedando en
primera posición la fecha más reciente y si se pulsa sobre la columna ”Valor” se
organiza la columna con los valores de menor a mayor.
35
4.2 Diseño de la interfaz
La idea principal para diseñar la interfaz es la sencillez y usabilidad de la
aplicación por eso, cada una de las pantallas está hecha de forma intuitiva (pocos
elementos y fáciles de utilizar) y sencilla de manejar (pocas funciones en cada
elemento de la pantalla).
La pantalla principal está dividida “invisiblemente” por dos partes: en la parte
superior de la pantalla está la funcionalidad, compuesta de dos botones en los que
inicia y se detiene la toma de datos. De esta forma es muy fácil utilizar la aplicación
ya que se pulsa el botón de “Start” cuando se quiere iniciar o “Stop” cuando se
quiere parar. En la parte inferior esta la ejecución, donde dos bucles de carga indican
que la aplicación está corriendo y se están tomando datos y dos líneas donde
muestran los datos obtenidos en cada ejecución.
Figura 4.2.1 Pantalla inicio
Figura 4.2.2 Inicio cargando datos
36
En la segunda pantalla, se muestran todos los datos obtenidos hasta el momento. Esta
también está dividida en dos partes más diferenciadas: en la parte superior se muestra un
mapa donde se puede ver en qué lugar se han tomado los datos y un punto (por cada
muestra) de mayor o menor grosor e intensidad de color dependiendo si el valor del
ruido es alto o bajo. En la parte inferior se muestra una tabla con tres columnas: en la
primera columna esta la distancia a la que se encuentra actualmente el dispositivo de
donde se tomo el dato, en la segunda la fecha y hora de cuando se tomó y en la tercera
el valor de ese dato (ruido).
En el caso de que se tuviesen muchos datos y no apareciese la tabla completa,
aprovechando que los móviles son smartphones y tienen la pantalla táctil, se puede
desplazar el dedo desde abajo hacia arriba para poder seguir viendo la parte de la tabla
que no se muestre inicialmente. Para hacer zoom en el mapa y ver exactamente la
ubicación, hay que pulsar sobre el mapa con dos dedos y deslizarlos a la vez, hacia el
lado opuesto uno del otro.
Figura 4.2.3 Pantalla con mapa y resultados
37
Modificaciones
Como se puede ver en la figura 4.2.4, en el centro de la pantalla se muestran dos
barras horizontales donde, en la parte izquierda de cada una de ellas, indican un texto:
MIN y MAX.
Con estas barras se puede filtrar los resultados según los valores que se quieran
mostrar. Con esta función se filtraran los valores tanto en el mapa como en la tabla para
mayor comodidad a la hora de observar los datos.
Para recoger todos los datos obtenidos, la barra MIN (mínimo) debe estar lo más
desplazada a la izquierda posible y la barra MAX (máximo) totalmente a la derecha.
Respecto a eso, se pueden ir acortando y acercándolas para hacer un filtro más
exhaustivo o dejándolas separadas para tener más margen.
Se muestra a continuación una imagen de ejemplo donde se puede ver un filtro
bastante exigente:
Figura 4.2.4 Barras de filtrado
38
4.3 Implementación
Para tener una mejor estructuración, el proyecto se ha dividido en 3 paquetes:
org.jaumei.soundmap.info, org.jaumei.soundmap.managers y
org.jaumei.soundmap.screen.
Figura 4.3.1 Estructura de la carpeta src
-
org.jaumei.soundmap.info: En este paquete se encuentran los archivos java
donde se gestiona la base de datos que se muestra en forma de tabla, la creación
de los puntos en el mapa y la forma y color de esos puntos.
o SoundPoint.java: Aquí se define el valor de cada punto. Ello incluye la
ubicación, la fecha y hora, la distancia entre puntos y el valor del ruido
pasado a decibelios (dB).
o SoundPointOverlay.java: En este archivo se define la forma y color de
cada punto mostrado en el mapa dependiendo del valor del ruido (cuanto
mayor sea el valor, más oscuro será el color verde del punto y más
grande será su tamaño)
o SQLiteManager.java: Este es el archivo de la base de datos del proyecto.
Aquí se define la tabla mostrada con los datos, la organización, donde se
guarda y como se guarda.
-
org.jaumei.soundmap.managers: En este paquete se encuentran los archivos java
donde se captura y trabaja con el sonido y donde se saca la ubicación con la
mayor exactitud y menor coste.
o ExtAudioRecorder.java: Este archivo tiene todas las funciones para
tratar la amplitud del sonido que se captura por el micrófono, coger un
valor medio y convertirlo en ruido medido en decibelios. Son funciones
matemáticas algo complejas obtenidas, en parte, del foro
39
http://stackoverflow.com/ donde se comparte código, se exponen
cuestiones y se resuelven dudas de programadores (esta en ingles).
o GpsManager.java: Aquí se definen las características y las funciones del
GPS. Se puede elegir que sea más o menos exacto, se decide cuando se
actualiza la posición, etc.
-
org.jaumei.soundmap.screen: Este paquete contiene los archivos java para
dibujar el mapa y mostrar los datos sobre él, se dibuja también la tabla y se
calculan las distancias sobre los datos obtenidos y tiene el archivo principal que
genera la aplicación.
o MyMapActivity.java: En este archivo se dibujan los puntos sobre el mapa,
las barras que hacen de filtro y se hace la ordenación de la tabla según
los valores que tomemos de referencia (si queremos ordenar según la
distancia, la fecha o el valor del ruido).
o PointsListAdapter.java: En este archivo se dibuja la tabla y se hace la
conversión de valores (la distancia se pone en metros o kilómetros, el
valor del ruido se pasa a decibelios).
o SoundMapActivity.java: Este es el archivo principal de la aplicación.
Desde aquí arranca con las funciones principales y llamando a las
funciones y clases de los archivos anteriores.
Para que la aplicación pueda mostrar el mapa de Google Maps, a parte de la
implementación, hay que obtener una KEY de Google.
Se obtiene de la siguiente forma:
- Se escribe en la consola de MS-DOS (hay que cambiar la ruta donde se tenga
instalado Java y la keystore y poner el alias que se quiera)
C:\Java\jdk1.5.0_15\bin keytool -genkey -alias android -keystore
C:\anddev.keystore
-
Seguidamente se lanza el siguiente comando (modificando los datos oportunos):
C:\Java\jdk1.5.0_15\bin>keytool -list -alias android -keystore
C:\anddev.keystore
-
Y la clave que muestra ponerla en el siguiente enlace:
https://developers.google.com/android/maps-api-signup?hl=es
La KEY obtenida se pone dentro del archivo res/values/appvalues.xml
<string name="google_map_apikey">0vClwjItT9VVFU--9ogmxmmpQXw0R5UPktGOYUQ
</string>
40
La figura 4.3.2 muestra el diagrama seguido en la implementación de la clase
SoundMapActivity (clase principal).
Figura 4.3.2. Estructura de la primera ventana
41
La figura 4.3.3 muestra el diagrama seguido en la implementación de la clase
MyMapActivity (clase secundaria)
Figura 4.3.3. Estructura de la segunda ventana
42
4.4 Pruebas
Se realizaron pruebas de la aplicación tanto en el simulador que trae el Eclipse
como en móviles reales. Se hicieron las siguientes comprobaciones:

Al pulsar sobre el icono de la aplicación cargaba correctamente

Al pulsar sobre el botón de “Start”, los scrolls de carga de empezaban a mover
correctamente

Al pulsar sobre el botón de “Stop”, los scrolls de carga se paraban y
desaparecían.

Cuando estaba en ejecución el muestreo, se mostraban correctamente los valores
de coordenadas y el resultado del ruido en las líneas adecuadas.

Mientras se ejecutaba el muestreo, los scrolls se cargaban y paraban con el
tiempo establecido.

Que en cada muestreo se actualizaban los valores de coordenadas y de ruido.

Se mostraba el mapa correctamente.

Se mostraban los puntos en el mapa.

Los puntos tenían el color y el tamaño establecido.

La tabla tenía los valores correctos.

La tabla de ordenaba correctamente según se indicara una columna u otra.

Se hacia el filtrado correctamente

Se cruzaron los indicadores de las dos barras para probar si daba error, pero no
indicaba ningún resultado como es lo correcto.
Después de realizar todas estas pruebas, el resultado fue el esperado y no surgió
ningún problema. Tanto los botones cumplían su función y arrancaba y paraba
cuando se ordenaba, como el mapa mostraba los valores correctamente.
43
4.5 Aplicación finalizada
En este apartado se van a describir las diferentes pantallas de la aplicación ya
finalizada. Se podrá observar la pantalla inicial sin ejecutarse ninguna acción, la
pantalla inicial en proceso, la pantalla secundaria con el mapa y las diferentes
funciones que presenta.
Figura 4.5.1 Pantalla principal
Figura 4.5.3 Obteniendo el sonido
Figura 4.5.2 Primera ejecución
Figura 4.5.4 Cinco seg. “parada”
44
Figura 4.5.5 Aplicación parada
Figura 4.5.6 Botón View Map
Figura 4.5.7 Tabla con valores
Figura 4.5.8 Organizada por distancia
45
Figura 4.5.9 Organizada por fecha
Figura 4.5.10 Organizada por valor
Figura 4.5.11 Probando filtro (I)
Figura 4.5.12 Probando filtro (II)
La figura 4.5.1 muestra la pantalla principal de la aplicación. Desde aquí se pueden
pulsar los botones de “Start” y “Stop” para empezar o parar la muestra. También se
accede desde aquí al botón “View Map” para ver el mapa como se mostrara más
adelante.
46
La figura 4.5.2 muestra la primera ejecución de la aplicación. Como se puede ver, en
las líneas de “Coordinates” y “Result” aun no aparece ningún valor anotado y además,
aparecen los dos scrolls de carga en ejecución.
En la figura 4.5.3 se puede ver como solo se está ejecutando el scroll de carga del
valor del ruido. Esto es porque, una vez ya se ha hecho la primera ejecución, el
muestreo de datos se realiza de la siguiente forma: cada 10 segundos se toma la
localización y se obtiene el sonido. Entonces, en cada bloque de muestras, hay 5
segundos donde la obtención de la localización y sonido esta parada y 5 segundos donde
esta capturando datos (figura 4.5.4).
10 segundos
5 segundos obteniendo datos
5 segundos parada (esperando)
La figura 4.5.5 muestra como queda la pantalla cuando se le da al botón “Stop” y se
detiene la ejecución.
En la figura 4.5.6 podemos ver que, cuando se pulsa la tecla de menú en la pantalla
principal, aparece un botón en la parte inferior de la pantalla donde pone View Map.
Pulsando sobre este botón nos aparece el mapa mostrando los datos que ha obtenido
hasta el momento (figura 4.5.7).
En las figuras 4.5.8, 4.5.9 y 4.5.10 se puede ver que, si se pulsa sobre el nombre de
cualquier columna, éste queda de manera más resaltada y la tabla queda organizada
según los datos de esta columna (de menor a mayor).
Como podemos ver en las figuras 4.5.11 y 4.5.12, se ha probado la función del filtro
y funciona correctamente. En la primera de ellas se filtra un solo valor y en la segunda,
no se filtra nada porque no puede ser que el mínimo sea mayor que el máximo.
47
5. UTILIZACIÓN DE LA APLICACIÓN
Para utilizar la aplicación de manera sencilla hay que seguir los siguientes pasos:
1. Activar GPS
2. Ejecutar aplicación
3. Pulsar botón “Start”
4. Esperar el tiempo que se quiera mientras la aplicación toma los datos
5. Pulsar botón “Stop”
6. Pulsar tecla Menu del móvil
7. Pulsar botón “View Map”
8. Aquí ya se puede ver el mapa de ruido y se pueden filtrar los resultados (se
filtran tanto en la tabla como en el mapa)
9. Para volver a la pantalla inicial debemos pulsar la tecla de retorno del móvil
10. Se podría volver a repetir los pasos del 3 al 5 para seguir tomando datos.
48
6. MEJORAS Y TRABAJO FUTURO
Durante las pruebas finales de la aplicación han surgido ideas y mejoras para
implementarlas en un futuro.
Una de estas mejoras sería poder subir en algún momento a un servidor los datos
obtenidos en vez de guardar los datos en el móvil. De esta forma no ocuparía parte de la
memoria del dispositivo. Por ejemplo, cuando el móvil esté conectado a una red wifi se
haría la sincronización y, de esta forma no se consumirían datos de la tarifa que tenga
contratada el usuario.
Otra mejora seria tener el servicio en background para que no esté la aplicación
como hilo principal y se puedan realizar otras tareas con el dispositivo móvil mientras
se toman los datos.
Para trabajo futuro queda tener la posibilidad de borrar los datos obtenidos cuando se
quiera o necesite ya que parece algo necesario si se tienen muchos datos o alguna
muestra que no se quiere. De momento no se puede borrar ningún dato para que no se
puedan modificar los resultados obtenidos.
49
Bibliografía
[1] Volunteer Geographic Information
http://ijsdir.jrc.ec.europa.eu/index.php/ijsdir/article/viewFile/140/223
[2] Volunteer Geographic Information (II)
http://www.esri.com/news/arcwatch/0311/power-of-vgi.html
[3] ¿Que es android?
http://www.xatakandroid.com/sistema-operativo/que-es-android
[4] Android en general
El gran libro de Android,
Autor: Jesús Tomás Gironés
Ed: Marcombo
[5] Mapa de ruido
http://www.valencia.es/ayuntamiento/maparuido.nsf/vDocumentosTituloAux/M
apa%20Ruido-Introducci%C3%B3n?opendocument&lang=1&nivel=8_1
[6] Para aprender a programar en Android. Curso Android
http://www.sgoliver.net/blog/?page_id=3011
[7] Otro curso Android
http://www.androidstartup.com/tutorial-de-desarrollo
[8] Que es Android y caracteristicas
http://www.elbauldelprogramador.com/programacion/desarrollo-android-que-esandroid/
[9] Grabar Audio
http://www.android.es/foro/viewtopic.php?f=2&t=654
[10] Grabar Audio (II)
http://www.benmccann.com/dev-blog/android-audio-recording-tutorial/
[11] Para manejar GPS
http://www.elandroidelibre.com/2010/08/aprendiendo-android-v-inicializaciona-la-api-del-gps.html
[12] Obtener coordenadas
http://www.android-spa.com/viewtopic.php?t=6725&highlight=gps
[13] Colores en android
http://programa.nii.com/pt/forum/topic/f%C3%B3rumandroid/poner-colores-enandroid
[14] Obtener clave para los mapas
http://www.android-spa.com/viewtopic.php?t=1126&highlight=storekey
50
[15] Obtener clave para los mapas (II)
https://developers.google.com/android/maps-api-signup?hl=es
[16] Instalar aplicación en el móvil
http://www.androidforos.es/tutoriales/como-instalar-una-aplicacion-apk-androidtelefono-tablet-t630.html
[17] Firmar aplicaciones en Android
http://androideity.com/2011/08/25/%C2%BFcomo-firmar-aplicaciones-android/
51

Documentos relacionados