Documentos de Académico
Documentos de Profesional
Documentos de Cultura
AUTOR: Antonio Helln Hernndez
DIRECTOR: Juan Carlos Snchez Aarnoutse
Marzo / 2013
Autor AntonioHellnHernndez
Emaildelautor antonio.hh7@gmail.com
Director JuanCarlosSnchezAarnoutse
Emaildeldirector JuanC.Sanchez@upct.es
TtulodelPFC DesarrolloDeUnaAplicacinParaAndroidDeGeolocalizacinY
ComunicacinEnExterioresMedianteWifi
Descriptores
Resumen
Paraello,laaplicacinrealizarunsondeodelosdispositivoswificercanos.Laapp
debecontarconunaBDDenlaqueestalmacenadalaposicingeogrficadetodoslos
dispositivos conocidos. Con toda esa informacin debe hacer una estimacin del lugar
en el que se encuentra. Finalmente, la aplicacin mostrar en googlemaps el lugar en
queseencuentra.Adems,dichoplanomostrarlasituacindelosdispositivos
Adicionalmente,sepodrhacerunintercambiodemensajesmedianteelprotocolo
UDP.
Titulacin IngenieroTcnicodeTelecomunicaciones,Esp.Telemtica
Departamento Tecnologasdelainformacinylascomunicaciones
Fechadepresentacin 21/03/2013
AGRADECIMIENTOS
Merecen una mencin destacada mis amigos y compaeros de clase, as como todos
losprofesoresqueenalgnmomentohancontribuidoamiformacin.Enestepuntoquiero
expresarmiagradecimientoaJuanCarlosSnchezAarnoutseporeltratorecibidoduranteel
desarrollodeesteProyectoFindeCarrerayporsermuybenevolenteapesarderetrasarnos
msdeloquedebimos.
Atodosaquellosquemehabisayudadoallegarhastaaqu,MUCHASGRACIAS.
NDICEGENERAL
1. Introduccinyobjetivos
1.1. Introduccin
1.2. Objetivos
2. Tecnologasempleadas
2.1. Android
2.1.1. IntroduccinaAndroid
2.1.2. Instalacindelentornodetrabajo
2.1.2.1. InstalacindeEclipse
2.1.2.2. InstalacindelSDKAndroid
2.1.2.3. InstalacindelpluginADTdeEclipse
2.1.3. GoogleMapsAndroidv1API
2.2. RedesWiFi
2.2.1. Introduccinalasredesinalmbricas
2.2.2. Historia
2.2.3. Protocolos
2.2.4. TecnologaWiFi
2.2.5. Dispositivos
2.2.5.1. PuntosdeaccesoWireless
2.2.5.2. Routers
2.2.5.3. TarjetasdeRedWiFi
3. Desarrolloeimplementacin
3.1. CreacindeunproyectoenEclipse
3.2. Archivos
3.2.1. ArchivosXML
3.2.1.1. AndroidManifiest
3.3. Funcionamientoeimplementacindeclases
3.4. DescripcindelastablasdelaBBDD
4. Manualdeusuario
4.1. Instalacindelaaplicacin
4.2. Usodelaaplicacin
5. Conclusionesylneasfuturas
5.1. Conclusiones
5.2. Lneasfuturas
6. Bibliografa
NDICEDEFIGURAS
Figura2.1:ArquitecturaAndroid
Figura2.2:CiclodevidadeunaaplicacinAndroid
Figura2.3:DescargardeEclipse
Figura2.4:DescargarSDKAndroid
Figura2.5:InstalacindeAndroidDeveloperTools
Figura2.6:UbicacindelSDK
Figura2.7:AVDManager
Figura3.1:CreacindeunnuevoproyectoAndroidI
Figura3.2:CreacindeunnuevoproyectoAndroidII
Figura3.3:CreacindeunnuevoproyectoAndroidIII
Figura3.4:CreacindeunnuevoproyectoAndroidIV
Figura3.5:CreacindeunnuevoproyectoAndroidV
Figura3.6:EstructuradecarpetasdeunproyectoAndroid
Figura3.7:FicheroXML(modogrfico)
Figura3.8:FicheroXML(modotexto)
Figura3.9:AndroidManifiest.xml
Figura3.10:Estructuradeclases
Figura3.11:UsodelafuncinaddOverlay()
Figura3.12:Visualizacindelapantallaprincipaldelaaplicacin
Figura3.13:Implementacindelmen
Figura3.14:TabladelosdispositivosWiFi
Figura3.15:Tabladelospuntosdeacceso
Figura4.1:IconodelaaplicacinHelloGoogleMaps
Figura4.2:Visualizacindelapantallaprincipaldelaaplicacin
Figura4.3:Iniciarelservicio
Figura4.4:Mandarmensajebroadcast
Figura4.5:MensajebroadcastrecibidoenelterminalMotorolayZTE
Figura4.6:MandardatosdesdelosterminalesMotorolayZTE
Figura4.7:Pararelservicio
Figura4.8:BaseDatosD.java
CAPTULO1
INTRODUCCINYOBJETIVOS
1.1 Introduccin
1.2.Objetivos
CAPTULO2
TECNOLOGASEMPLEADAS
2.1.Android
2.1.1.IntroduccinaAndroid
Losgestoresderecursos(ResourcesManager)permitenelaccesoindexadoarecursos
como cadenas o grficos, en un intento de modular an ms el diseo de las
aplicaciones yeluso desus recursos.
Figura2.1:ArquitecturaAndroid
Una vez proporcionados todos estos estratos, Android proporciona una serie de
aplicaciones base, programadas en Java, que facilitan el manejo de las caractersticas del
sistema, talescomo unclientedecorreoelectrnicoy SMS,calendario, mapas, navegador o
gestor de contactos, entre otros. Sobre esta misma capa ser donde se sustenten las
aplicacionesdeusuariodiseadasporterceros desarrolladores.
El resto de caractersticas del sistema Android podramos agruparlas por
conectividad (telefona GSM, Bluetooth, EDGE, WIFI, 3G), formatos multimedia
soportados (MPEG4, H.264, MP3, OGG, AAC, AMR, JPG, PNG, GIF) y otras
caractersticashardware,talescomoGPS,etc
En elmbitodedesarrollo, dispone deun complemento paraelIDEEclipse,ascomo
herramientas de simulacin y depuracin. Las aplicaciones creadas pueden ponerse a
disposicin del usuario a travs del Market Android, donde podrn ser descargadas e
instaladas porlosusuarios, sirviendoigualmente comofuentedereportedefallosyerrores
enelfuncionamiento.
Otra peculiaridad de Android es el ciclo de vida de las aplicaciones, ya que no se
trata n i c a me n t e de abrir y cerrar a gusto del usuario, si no que estas, una vez
iniciadas, permanecen cargadas en memoria siempre que se disponga de recursos para
ello. En caso contrario el propio sistema operativo se encargar de destruirlas
definitivamente. Dicho ciclo de vida se rige por las llamadas a los mtodos onCreate,
onStart, onResume, onPause, onStop, onStop, onDestroy y onRestart. En el grfico
adjuntopuede entenderse esteflujo de formamsintuitiva.
Figura2.2:CiclodevidadeunaaplicacinAndroid
2.1.2.Instalacindelentornodetrabajo
2.1.2.1.InstalacindeEclipse
Aunque la instalacin del IDE no forma parte del proyecto, vamos a proceder a
su instalacin, que es fcilmente abordable desde su propia web
(
http://www.eclipse.org). En la seccin Download, se elige la versin deseada, que en
nuestro caso sera Eclipse IDE for Java Developers para Windows 32 bits. Una vez
descargado, basta descomprimir y ejecutar eclipse.exe para comenzar a usar la
aplicacin.
2.1.2.2.InstalacindelSDKAndroid
(
http://developer.android.com
)
tenemostodaslasversionesdelSDK,enlaseccinSDK.
En nuestro caso elegimos la versin para Windows. Una vez completada la descarga,
descomprimimos enlaubicacindeseada.
Antes deproseguir, esrecomendable almacenarla ruta dela subcarpetatools en
la variable de entorno path de nuestro sistema. Para ello hacemos clic con el botn
derecho en Equipo para acceder a las Propiedades del sistema. En configuracin
avanzada podemos acceder a dichas variables. Basta buscar la variable path en la
lista y hacer doble clic para editar. Al valor actual debemos aadir nuestra ruta,
precedida por;,paraconservar losvalores anteriormentealmacenados.
Esto nos facilitar el acceso mediante smbolo del sistema a algunas
configuraciones del SDK Android por comandos, no siendo necesario escribir la ruta
completadelaubicacindelasutilidades.
Figura2.3:DescargarEclipse
Figura2.4:DescargarSDKAndroid
Figura2.5:InstalacindelAndroidDeveloperTools
9
Figura2.6:UbicacindelSDK
Para ellos accedemos al men Window\Android SDK and ADV Manager, que nos
mostrara una ventana del mismo nombre. Ah, seleccionando la opcin Virtual
Devices podremos crear fcilmente nuestros dispositivos haciendo clic en new.
Basta elegir el nombre deseado, elegir la versin de la API deseada y aadir la
compatibilidad hardwarequevayamos anecesitar. TrashacerclicenCreateADVnuestro
dispositivoaparecerenellistado.
Figura2.7:AVDManager
2.1.3.GoogleMapsAndroidv1API
UnavezcomentadodeformagenericaelconceptodeAPIeshoradeprofundizar
un poco ms en la API de Google Maps. Haciendo uso de la API de Google Maps
podremos obtener una serie de funciones proporcionadas por Google que se
encargarandetodoloreferidoamapas.
Esto ltimo tambin requiere algunos pasos previos. Para poder utilizar la API de
GoogleMapsserequierelaobtencinpreviadeunaclavedeuso(APIKey),queestar
asociada al certificado con el que firmamos digitalmente nuestra aplicacin. Esto
quiere decir que si cambiamos el certificado con el que firmamos nuestra aplicacin
(algoquesehacenormalmentecomopasoprevioalapublicacindelaaplicacinen
elMarket)tendremosquecambiartambinlaclavedeusodelaAPI.Eneltemadelos
certificadosnovoyaentrarmuchopuestoquelotrataremosenunartculoposterior,
por ahora tan slo diremos que durante la construccin y depuracin de nuestras
aplicaciones en el emulador de Android se utiliza automticamente un certificado de
depuracin creado por defecto. Por tanto, para poder depurar aplicaciones en el
emuladorquehaganusodeGoogleMapstendremosquesolicitarunaclaveasociadaa
nuestrocertificadodedepuracin.
Para ello, en primer lugar debemos localizar el fichero donde se almacenan los
datosdenuestrocertificadodedepuracin,llamadodebug.keystore.Podemossaberla
ruta de este fichero accediendo a las preferencias de Eclipse, seccinAndroid,
apartadoBuild,ycopiarlarutaqueapareceenelcampoDefaultDebugKeystore.Una
vez conocemos la localizacin del fichero debug.keystore, vamos a acceder a l
mediantelaherramientakeytool.exedejavaparaobtenerelhashMD5delcertificado.
Esto lo haremos desde la lnea de comandos de Windows mediante el comando >
keytool list alias androiddebugkey keystore Ruta storepass
android keypass android
Con esto, terminamos con todos los pasos previos para la utilizacin de los
serviciosdeGoogleMapsdentrodenuestrasaplicacionesAndroid.Unavezcontamos
conlaclavedeusodelaAPI,lainclusindemapasennuestraaplicacinesunatarea
relativamentesencillaydirecta.
2.2.RedesWiFi
2.2.1.Introduccinalasredesinalmbricas
Durantelosltimosaoshansurgidoysehanhechocongranpopularidadnuevas
tecnologas inalmbricas como WIFI, WIMAX, GSM, Bluetooth, Infrarrojos, etc, siendo
12
2.2.2.Historia
2.2.3.Protocolos
Desde 1997, cuando se certific el primer estndar 802.11 con una velocidad de
transferenciamximade2Mbps,hanidosurgiendonuevosestndaresquepermiten
velocidades cada vez mayores y con distintas bandas de frecuencias, alcanzando hoy
endahasta300Mbps.
A continuacin se describen los diferentes protocolos para redes WiFi que han sido
certificadoscomoestndaresdesdelaaparicindelIEEE802.11
802.11:creadoen1997,nofueaprobadohasta1999,cuandolohizojuntocon
el 802.11b, y apareci en el mercado en productos en el 2001. Este estndar
utiliza el mismo protocolo de base que el estndar original, pero opera en la
banda de 5 GHz y utiliza 52 subportadoras OFDM (Orthogonal Frequency
DivisionMultiplexing)conunavelocidadmximade54Mbps,loquehaceque
sea un estndar prctico para redes inalmbricas con velocidades reales de
unos 20 Mbps. No puede interoperar con equipos del estndar 802.11b, a
menosquedichoequipoimplementeambosestndares.Unpuntoafavorpara
esteprotocoloesquealutilizarlabandadefrecuenciasde5GHzsepresentan
muchas menos interferencias, debido a que la banda de 2.4 GHz es utilizada
porunagrancantidaddeaparatosdomsticos.Comocontrapartidaestabanda
restringe eluso de los equipos a puntos en lnea de vista, lo que requiere una
instalacindeunmayornmerodepuntosdeaccesoyaunacoberturamenor.
Este protocolo conserva su velocidad mxima de 54 Mbps en un rango de 30
metrosenelexterioryde12metrosenelinterior.
802.11h: aparece en 2003 como una modificacin del 802.11a con el fin de
resolver los problemas derivados de la coexistencia de las redes WiFi con
sistemas de radares y satlites, debido a que la banda de 5 GHz era utilizada
generalmente por sistemas militares. Este nuevo protocolo proporciona a las
redes 802.11a la capacidad de gestionar dinmicamente tanto la frecuencia,
comolapotenciadetransmisin.
802.11g:aprobadoen2003,aligualqueel802.11butilizalabandade2.4GHz
yescompatibleconelmismo,perooperaconunavelocidadtericamximade
54 Mbps (unos 24.7 Mbps de velocidad real), semejante a la del 802.11a. El
14
diseodelestndarserealizpretendiendohacerlocompatibleconel802.11b,
pero en redes bajo el estndar g, la presencia de nodos bajo el estndar b
reduce significativamente la velocidad de transmisin. En la actualidad se
comercializan equipos con esta especificacin que, con potencias de hasta
medio vatio, permitenestablecer comunicaciones de hasta50 km de distancia
medianteantenasparablicasapropiadas.
802.11e:esteestndarpermitesoportartrficoentiemporealentodotipode
entornos y situaciones. El objetivo de este estndar es introducir nuevos
mecanismos a nivel de enlace para soportar los servicios que requieren
garantasdeCalidaddeServicio(QoS).
2.2.4.TecnologaWiFi
WiFi,esunconjuntodeestndarespararedesinalmbricasderealocal(WLAN)
basado en las especificaciones IEEE 802.11. Fue creada por la WiFi Alliance
(anteriormente WECA, Wireless Ethernet Compability Alliance), la organizacin
comercial que prueba y certifica que los equipos cumplen los estndares 802.11. Se
identificaconunsmboloconelestilodelyingyangysunombrenoesunacrnimode
WirelessFidelity,apesardequeensuscomienzosseaadijuntoconelnombreWiFi
la frase The Standard for Wireless Fidelity con el fin de dar significado al mismo, sino
quefuecreadocomounjuegodepalabrasrelacionadoconHiFi(HighFidelity).
15
2.2.5.Dispositivos
2.2.5.1.PuntosdeaccesoWireless
Los puntos de acceso en redes WiFi son los elementos que interconectan los
distintos dispositivos de comunicacin inalmbrica para formar una red wireless.
Habitualmente estos dispositivos pueden conectarse a redes cableadas, permitiendo
intercambiarinformacinentredispositivoscableadosywireless.Delamismamanera,
distintos puntos de acceso pueden ser conectados permitiendo realizar roaming. Son
losencargadosdecrearlared,permaneciendoalaesperadenuevosclientesalosque
dar servicios. El punto de acceso recibe la informacin, la almacena y la transmite
entre la WLAN y la LAN cableada. Estos dispositivos tienen direcciones IP asignadas,
parapoderserconfigurados.Desdeunnicopuntodeaccesosepuededarsoportea
ungrupodeusuariosytrabajarenunrangodesdeunos30avarioscientosdemetros,
siempre en funcin de las antenas utilizadas. Los Puntos de Acceso pueden ser
agrupadosendoscategoras:
2.2.5.2.Routers
16
2.2.5.3.TarjetasderedWiFi
Sonlosdispositivosencargadosdelarecepcindeinformacinenestacionesderedes
WiFi. Una de las principales caractersticas que las diferencian entre s es el tipo de
interfaz que utilizan, es decir, el puerto de conexin de la tarjeta. A continuacin se
describenlosdiferentestiposdetarjetasenfuncindelainterfazqueutilizan:
17
CAPTULO3
DESARROLLOEIMPLEMENTACIN
En este captulo vamos a ver los aspectos ms relevantes de lo que ha sido el
desarrollo de este proyecto. En primer lugar, daremos una visin ms detallada de
nuestro entorno de trabajo utilizado (Eclipse) para poder detallar las partes ms
importantesdelaimplementacindenuestraaplicacin.
3.1.CreacindeunproyectoenEclipse
Una vez instalado Eclipse, el SDK y el ADT, ya tenemos todo lo necesario para
poderdesarrollaraplicacionesenAndroid.AcontinuacinprocedemosaabrirEclipsey
una vez abierto pulsaremos en File > New > Project. Dentro encontraremos una
carpeta de nombre Android, dentro de esta seleccionaremos la opcin Android
ApplicationProject.Acontinuacinnosaparecerlasiguienteventana:
Figura3.1:CreacindeunnuevoproyectoAndroidI
18
ApplicationName:nombredelaaplicacin.
ProjectName:nombredelproyectoAndroid.
PackageName:nombredelpaquetedondeestarubicadoelproyecto.
Minimum Required SDK: versin mnima de Android que soportara nuestra
aplicacin.
TargetSDK:versinmximadeAndroidquesoportaranuestraaplicacin
Theme:temaquetendrpordefectolaaplicacin.
Una vez que se han rellenado todos los campos, pulsamos Next y aparecer un
men donde deberemos de indicar donde se creara el proyecto Android, entre otras
opcionesdemenosndole.
Figura3.2:CreacindeunnuevoproyectoAndroidII
19
Figura3.3:CreacindeunnuevoproyectoAndroidIII
EnlasiguienteventanaseleccionamoselBankActivity.
Figura3.4:CreacindeunnuevoproyectoAndroidIV
20
Yporltimo,deberemosdedarleunnombreaactividadprincipaldelaaplicacin
yalficheroXMLquevaacontenerlavistadenuestraprimerapantalladelaaplicacin,
es decir, lo que aparecer cuando iniciemos nuestra aplicacin desde el men de
cualquierterminal.
Figura3.5:CreacindeunnuevoproyectoAndroidV
Figura3.6:EstructuradecarpetasdeunproyectoAndroid
Carpeta src: esta carpeta contendr todos los paquetes que pueda contener
nuestra aplicacin y en cada paquete habrn los diferentes archivos JAVA
implementados.
Carpeta gen: esta carpeta contendr los archivos R.java y BuildConfig.java.
Estos ficheros son generados automticamente por Eclipse y tienen una gran
importanciadentrodeunaaplicacinAndroid.EnelarchivoR.javaseestablece
la relacin entre la interfaz grfica y su correspondiente implementacin en
java a travs de referencias. Ninguno de estos dos archivos puede ser
modificadoporelprogramador.
Carpeta assets: este directorio est vaco por defecto. En l se podr incluir
cualquiertipodeficheroexternoparaqueseautilizadoencualquiermomento
delaaplicacin.
Carpeta res: esta carpeta contiene ocho directorios. Cinco de ellos llamados
drawable,drawablehdpi,drawableldpi,drawablemdpiydrawablexhdpi,que
contendrn las imgenes usadas en nuestra aplicacin. En la carpeta layout y
menu se encuentran los archivos .xml que definen las interfaces grficas y
mensdecadapantalla.Yporltimo,lacarpetavaluesquecontieneelarchivo
string.xml, dimens.xml o styles.xml donde se podrn definir constantes
dependiendodequficherosetrate.
AndroidManifiest: Este archivo es muy importante e imprescindible en
cualquier aplicacin Android. Est escrito en XML y describe los componentes
de los que constara nuestra aplicacin. Esta descripcin contiene aspectos
como las clases que los implementan, sus requisitos, los datos que pueden
manejarocuandodebenserejecutados.Tambinsedefinenlospermisosque
el desarrollador solicita para utilizar en su aplicacin como puede ser
localizacinGPS,accesoainternetoutilizarBluetooth.
project.properties: contiene configuraciones bsicas como la versin de la
plataforma destino. Se configura automticamente y no debe ser modificado
porelprogramador.
22
3.2.Archivos
3.2.1.ArchivosXML
Paradesarrollarlainterfazgrficadeunaactividadsepuedehacerdemanerams
intuitiva y sencilla mediante archivos XML. Cada archivo XML est formado por un
rbol de elementos que especifican la manera en la que los elementos de la UI y
contenedores se acomodaran para definir la parte visual de un objeto View. Para la
creacin de estos archivos se nos ofrecen dos posibilidades en Eclipse, una de forma
visual(GraphicalLayout)yotraenmodotexto(archivo.xml).
Figura3.7:FicheroXML(modogrfico)
23
Figura3.8:FicheroXML(modotexto)
Acontinuacin,vamosadescribiralgunosdeloselementosquecomponenunaUI,
en concreto algunos de los usados en el proyecto. Vamos a analizar el contenido del
archivo main.xml, que ser el archivo donde haremos uso de la API de Google Maps
parapodervisualizarmapascadavezquesedesee.
En esta parte del captulo sobre mapas solamente me voy a limitar a mostrar el
mapaenlapantallainicialdelaaplicacin,dandounasbrevespinceladasdelaspartes
delasqueconstaelarchivoXMLquelocontiene.
3.2.1.1.AndroidManifiest
Este es un archivo XML que estar en todas las aplicaciones Android. En l se
declaran todas las especificaciones de nuestra aplicacin. Cuando hablamos de
especificacionesnosreferimosalasActivity,Service,Intents,bibliotecas,elnombrede
laaplicacin,elhardwarequesenecesitar,lospermisosdelaaplicacin,etc
Ahoravamosaverlosprincipalestagsdelmanifiesto:
<usessdk>:tagutilizadoparadeterminarlasdistintasversionesAndroidqueva
a utilizar nuestra aplicacin, tanto sobre qu versiones va a correr como qu
versin fue utilizada para realizar nuestras pruebas. Mediante el atributo
android:minSdkVersion establecemos a partir de qu versin de Android
nuestraaplicacinpodrcorrer.
25
Figura3.9:AndroidManifiest.xml
3.3.Funcionamientoeimplementacindeclases
En este apartado se vern las clases que componen la aplicacin y los aspectos
msrelevantesenlaimplementacinjava.
Figura3.10:Estructuradeclases
26
GoogleMapsActivity.java
Esta clase ser la encargada de visualizar el mapa (haciendo uso de la API de
Google Maps), los dispositivos WiFi detectados, los puntos de acceso o mi
propio dispositivo. Para poder dibujar en la misma vista el mapa, los
dispositivos WiFi, los puntos de acceso o mi dispositivo, se podr realizar
aadiendocapasconlaclaseCustomOverlay.java.Comolascoordenadasdelos
dispositivos WiFi detectados o de los puntos de acceso se conocen de
antemano,representarlosenelmapaserealizardeformatrivialllamandoala
funcinaddOverlay().
Figura3.11:UsodelafuncinaddOverlay()
Larepresentacinenelmapadeldispositivoquerecibirlosdatosserealizar
portriangulacinconlosdispositivosWiFiopuntosdeaccesodetectados.Se
implementunhilo(solosedetendrcuandoseparelaaplicacin)quecomprueba
cadacincosegundossihadetectadoalgndispositivoWiFiopuntodeaccesonuevo
paraaspodervariarmiposicinono.
Figura3.12:Visualizacindelapantallaprincipaldelaaplicacin
27
Enestaclasetambinsehaimplementadounmenqueestarcompuestode
tresbotonesconunafuncionalidadvitalennuestraaplicacin.Unodeellosse
encargardeactivarelservicioparapoderrecibirdatos,otropararelservicio
paraquenopuedarecibirnaday,elltimobotn,seencargardemandarun
mensaje broadcast a todos los dispositivos conectados en la misma red que el
dispositivo.
Figura3.13:Implementacindelmen
CustomOverlay.java
CustomOverlay,queextiendeaItemizedOverlay,eslaclasequepermitesituar
aldispositivoquerecibedatos,aldispositivoWiFioalpuntodeaccesosobreel
mapa. El principal elemento de la clase es mOverlays, que ser donde se
guarde el elemento a posicionar. El mtodo addOverlay es el que permitir
modificar esa lista, actualizando as con cada nueva posicin. La sentencia
populate()eslaresponsabledepintarlospuntossobreelmapa.
Constants.java
Esta clase contendr las coordenadas de los dispositivos WiFi que ya
conocamos previamente. Se usaran los GeoPoint porque nos permitirn
construir un punto para localizarlo en el mapa fcilmente, es decir, incluye las
coordenadasgeogrficas(latitudylongitud).
28
BroadcastChatService.java
Esta clase ser un servicio ejecutado en segundo plano el cual se encarga de
crear las bases de datos que necesita la aplicacin, crear un objeto de la clase
BroadcastChatThread() e inicializarlo. Tambin contendr el mtodo
insertarBD() al cual tendremos que llamar cada vez que sea necesario insertar
algndispositivoenlabasededatos.
BroadcastChatThread.java
Esta clase contendr el hilo ms importante de la aplicacin si hablamos de la
comunicacinconlosdispositivosWiFi.Unavezqueescreadoelconstructorde
estaclase,creamoselhiloComThread() donde,haciendousodelasfunciones
getBroadcastAddress() y getLocalAddress(), se obtendr la direccin
broadcast de la red que nos proporciona servicio de red y la direccin IP Local
respectivamente. Se hace uso de estas funciones para poder recibir datos
solamente de los dispositivos que estn conectados a la misma red que el
terminal.OtrautilidadmuyimportantedelafuncingetBroadcastAddress()
es, enviando un mensaje broadcast a todos los dispositivos de la red,
comprobar cul de ellos est disponible. Los dispositivos que reciban dicho
mensaje broadcast estarn preparados para enviar los datos oportunos al
terminal. En la inicializacin del hilo ComThread(), abriremos un socket UDP
para poder transmitir paquetes desde un dispositivo WiFi detectado hasta el
terminal. Se escogi el protocolo UDP porque no era necesario establecer
conexin entre el terminal y el dispositivo WiFi y tambin se pueden enviar
mensajes a varios receptores a la vez, aunque yo no hice uso de esta
funcionalidad.
Una vez que sea iniciado el hilo ComThread(), el mtodo se mantendr
bloqueado hasta que no reciba ningn paquete. La funcin empleada para
recibirpaquetesmedianteelprotocoloUDP sermSocket.receive(packet).
Esta clase no parar de recibir paquetes hasta que no se parece el servicio y
mientras se sigan recibiendo paquetes, se harn uso de una funcin capaz de
obtenerladireccinIPdeldispositivoquemandlosdatosyotrafuncinpara
poderobtenerlosdatos.ParapoderinsertarlaIPdeldispositivoylosdatosen
la base de datos, se har uso de los ContentValues que se encargarn de
retenerlosvalores(IPyDatos)enunsoloregistroparaquealahoradeinsertar
enlabasededatosseamuchomssencillo.
Funciones.java
Esta clase contiene las funciones insertarBD(), insertarBDPA(),
guardarDatosBD(),leerBDexterna()lascualesdetallareacontinuacin.
La funcin insertarBD() tendr como funcionalidad exclusiva almacenar los
dispositivos en la base de datos creada para ello. Obviamente, si el dispositivo
no existe en la base de datos, lo creara. Anlogamente, la funcin
insertarBDPA()seencargardealmacenarlospuntosdeaccesoenunabasede
datoscreadaparaello.
LafuncinguardarDatosBD()iraguardandolos datosrecibidosdelosdistintos
terminales en la base de datos creada para ello (BaseDatosD.java). Realizar
29
unabrevecomprobacindelaIPdelterminalquemandalosdatosparasaber
enqufilahabrquealmacenarlosdatos.
Con la funcin leerBDexterna(), leeremos de una base de datos externa las
direccionesMACdelospuntosdeaccesoqueyaconocemospreviamente.Para
crear la base de datos externa use un software para PC llamado SQLite
Database Browser. Una vez creada, se depositar en cualquier parte de la
memoria del terminal para, posteriormente, poder leerla desde la funcin
leerBDexterna() haciendo uso de otra funcin (openDatabase()) facilitada por
lalibreradeSQLiteDatabase.AlafuncinopenDatabase() selepasaracomo
parmetrolarutadondehemosguardadolabasededatoscreadaporelPC.
Element.java
Estaclasehasidocreadaparapoderaccederalainformacindecadapuntode
accesoyaquehansidocreadasdosvariablesparaguardarelnombredelpunto
deaccesoysudireccinMAC.
BaseDatosD.java
Esta clase ha sido creada exclusivamente para almacenar los dispositivos WiFi
detectadosyquesehancomunicadoconelterminal.
BaseDatosPA.java
Esta clase ha sido creada para almacenar las puertas de acceso a las cuales se
vaconectandoelterminalconformesevadesplazandoporelmapa.
Constantes.java
Enetaclaseseidentificarnlascolumnasdelasdosbasesdedatosconlasque
trabajarlaaplicacin(BaseDatosD.javayBaseDatosPA.java).
3.4.DescripcindelastablasdelaBBDD
Figura3.14:TabladelosdispositivosWiFi
31
Figura3.15:Tabladelospuntosdeacceso
32
33
CAPTULO4
MANUALDEUSUARIO
4.1.Instalacindelaaplicacin
Disponemosdetresopcionesparainstalarlaaplicacin:
AndroidMarket
Todas las aplicaciones que se desarrollan en Android pueden alojadas en el
Market (tienda virtual de Android). Si la aplicacin HelloGoogleMaps ha sido
subida al Market, simplemente hay que buscar la aplicacin, seleccionarla y
aceptarlainstalacin.Seinstalaraautomticamente.
InstalacindesdeunarchivoAPK
Para crear el archivo ejecutable apk de un proyecto Android se podr hacer
seleccionando la opcin de Eclipse Import o simplemente ejecutando el
proyectoenundispositivovirtualAndroid(AVDManager).Unavezgeneradoel
archivoapk,guardaremosdichoarchivoencualquierpartedenuestroterminal.
Usaremos un explorador de archivos, como por ejemplo Astro, para poder
ejecutarloyaspoderinstalarlo.Sernecesarioteneractivadoeneltelfonola
opcin Origenes desconocidos, que nos permitir instalar aplicaciones que no
hayanpasadoporelAndroidMarket.
InstalacindesdeEclipse
Para instalar la aplicacin desde Eclipse ser necesario conectar el telfono al
PCmediantesucableUSB.Unavezconectado,pondremoselterminalenmodo
depuracin (debug), y al igual que si se tratar de un dispositivo virtual, nos
aparecer en el AVD Manager. Solo tendremos que pinchar en la opcin de
Eclipse Run as y seleccionar nuestro dispositivo. Esta opcin es la ms usada
porque permite a los desarrolladores analizar todas las partes de la ejecucin
de la aplicacin para as detectar rpidamente cualquier error en la misma.
Tambin deberemos tener activado en el telfono la opcin Orgenes
desconocidos.
4.2.Usodelaaplicacin
Una vez instalada la aplicacin, se proceder a ejecutarla para ver todas las
funcionalidadesenuncasoreal.Paraelloharemosusodeunterminalconlaaplicacin
HelloGoogleMaps instalada y otros dos terminales (dispositivos WiFi) en los se ha
34
tenido que implementar otra aplicacin Android muy sencilla que se dedicar
exclusivamente a recibir mensajes broadcast y, una vez recibido ese mensaje
broadcast,podremosenviardatosalterminalgeolocalizado.
Figura4.1:IconodelaaplicacinHelloGoogleMaps
Unavezejecutadalaaplicacin,selocalizarnenelmapatresdispositivosWiFide
los cuales solo transmitirn datos dos de ellos. No habra ningn problema si fuera
necesario realizar pruebas con ms dispositivos, solamente deberamos aadir sus
coordenadasenlaclaseConstants.java.
Figura4.2:Visualizacindelapantallaprincipaldelaaplicacin
Enprimerlugar,seactivarelservicioejecutadoensegundoplanoquemantendr
a la espera el terminal hasta que reciba algn dato de cualquier dispositivo WiFi
localizado.Paraactivarelserviciohabrquedesplegarelmenqueseimplementen
35
Figura4.3:Iniciarelservicio
Para comprobar cul de esos dispositivos est activo y est preparado para
mandar datos al terminal, mandar un mensaje broadcast. Para ello habr que
desplegar el men que se implement en la aplicacin y seleccionar el botn
Broadcast.Alpulsaresebotnmandarunacadenadetextoatodoslosdispositivos
WiFiconectadosalamismaredqueelterminal.
36
Figura4.4:Mandarmensajebroadcast
ParaquelosdispositivosWiFiestnactivosypuedanrecibirelmensajebroadcast,
deberntenerejecutadalaaplicacinimplementadaexclusivamenteparahacer
pruebasquesecomentalcomienzodelcaptulo.
Figura4.5:MensajebroadcastrecibidoenelterminalMotorolayZTE
37
Una vez que los dispositivos activos han recibido el mensaje broadcast, se
dispondrn a mandar un paquete al terminal. El propio terminal se encargar de
procesaresepaqueteparasacarlaIPylosdatosdeldispositivoqueseloenvi.Como
estamosusandoelprotocoloUDP,podranmandarpaquetestodoslosdispositivosala
vezquenohabraningnproblemaparaqueelterminallosrecibieracorrectamente.
Figura4.6:MandardatosdesdelosterminalesMotorolayZTE
UnavezquelosdispositivosWiFihanmandadotodoslospaquetesquetenanque
mandar, es muy importante parar el servicio ejecutado en segundo plano porque
puedesuponerunconsumoderecursosenelterminalbastanteconsiderable.Paraello
habr que desplegar el men que se implement en la aplicacin y seleccionar el
botn No Recibir. Una vez hecho esto, el terminal no podr recibir absolutamente
nadadelosdispositivosWiFi.
38
Figura4.7:Pararelservicio
Paracomprobarqueseharecibidoyalmacenadocorrectamenteelpaqueteenla
basededatos,seharusodeunaaplicacinAndroidparapodervisualizarlasbasesde
datoscreadasenmiterminal.Apartedepodervisualizarlasbasesdedatoscreadasen
nuestroterminal,tambintendremoslaposibilidaddemodificarlassiempreycuando
tengamospermisosparaello.EstaaplicacinrecibeelnombredeSQLiteEditor.
Figura4.8:BaseDatosD.java
39
CAPTULO5
CONCLUSIONESYLNEASFUTURAS
5.1.Conclusiones
Enprimerlugar,seconsiguisatisfactoriamentedesarrollarlaaplicacinhaciendo
uso de las herramientas ofrecidas por la plataforma Android. Se logr obtener una
versin de la aplicacin donde se encuentran operativas sus funcionalidades ms
importantesymuestralapotenciadeestaplataforma.
Secomprendieronloselementosmsimportantesatenerencuentaalmomento
de disear e implementar una GUI que permita a los usuarios navegar a travs de la
aplicacin de una manera fluida e intuitiva. De hecho, es sta una de las principales
virtudesdeestaversindeestaaplicacin;unainterfazgrficamuyatractiva.
Porotraparte,amedidaquelaaplicacinfuetomandoforma,seimplementaron
funciones adicionales al diseo original. Esto sucedi ya que se notaron algunas
deficienciasyposiblesmejorasquenorepresentabangrandesinconvenientesdesdeel
punto de vista de implementacin, pero otorgaban considerables mejoras en la
usabilidadgeneraldelaaplicacin.
40
5.2.Lneasfuturas
Esteproyectodejaunagranvariedaddeposibilidadesdeampliacinysepueden
abrir varias lneas de investigacin y desarrollo, desde la mejora de la aplicacin
presentada como la implementacin en dispositivos reales. A medida que aparezcan
nuevos SDK con funcionalidades mejoradas y nuevas, las posibilidades se irn
ampliando, pudiendo desarrollar aplicaciones bastante ms completas pero a la vez
bastantemscomplejas.Algunasdeestaslneasfuturaspuedenser:
Mejorarlarealidadaumentada.Laaplicacinpodrarepresentarenelplanola
posicin de los dispositivos localizados, quizs mostrando cierta informacin
sobreellos.
Mejora de la realidad aumentada II. Tambin podra mostrar en el plano los
dispositivosnovisiblesdesdesuposicin.
Aumentar el nmero de tecnologas empleadas. Actualmente se ha realizado
este PFC con wifi. Sin embargo, se est realizando en paralelo una versin
similar en Bluetooth. Sera interesante que la misma aplicacin emplease
todaslastecnologasposibles:Bluetooth,WiFi,RFID,NFC,etc.
Vistas guidas. Una evolucin de esta aplicacin puede ser emplear los
conceptos de sta para crear una aplicacin que geolocalice el dispositivo
dentrodeunedificioyleofrezcaunavisitaguiadaalmismo.
41
CAPTULO6
BIBLIOGRAFA
[1]WeboficialparadesarrolladoresAndroid
http://developer.android.com/index.html
[2]ComunidaddedesarrolladoresI(proyectosopensource)
http://www.codeproject.com/
[3]ComunidaddedesarrolladoresII
http://stackoverflow.com/
[4]CursodeprogramacinAndroid
http://www.sgoliver.net/
[5]VideotutorialesAndroiddelaUniversidadPolitcnicadeValencia
http://politube.upv.es
[6]VideotutorialesAndroidenYoutube
http://www.youtube.com/user/0utKast/videos?view=0
[7]Android.Guaparadesarrolladores.W.FrankAbleson,RobiSenyChrisKing.