Está en la página 1de 49

ESCUELA TCNICA SUPERIOR DE INGENIERA DE TELECOMUNICACIN

UNIVERSIDAD POLITCNICA DE CARTAGENA




DESARROLLO DE UNA APLICACIN PARA ANDROID DE


GEOLOCALIZACIN Y COMUNICACIN EN EXTERIORES
MEDIANTE WIFI


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

El objetivo de este proyecto desarrollar una aplicacin para Android de


realidad aumentada que sea capaz de geolocalizar el dispositivo cuando cambia de
ubicacinenespaciosinterioresosincoberturaGPS.

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

Quieroagradecery dedicarestetrabajoamifamilia,especialmentea mis padresy mi


hermano.

Merecen una mencin destacada mis amigos y compaeros de clase, as como todos
losprofesoresqueenalgnmomentohancontribuidoamiformacin.Enestepuntoquiero
expresarmiagradecimientoaJuanCarlosSnchezAarnoutseporeltratorecibidoduranteel
desarrollodeesteProyectoFindeCarrerayporsermuybenevolenteapesarderetrasarnos
msdeloquedebimos.

Y por supuesto, a Alejandro Barcel Snchez. Apoyo incondicional en el desarrollo del


proyecto porque siempre ha sabido ayudarme cuando ms lo he necesitado. Ha cumplido
concreceselsignificadodelapalabraamigoycompaero.

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

Este proyecto nacecon el objetivo de familiarizarse las caractersticas del sistema


operativo para mviles Android. Dicha plataforma se ha ido extendiendo
rpidamente entre la sociedad dada su similitud al popular iPhone, pero con la
ventaja quesupone, tanto para usuarios comodesarrolladores, el habersidodistribuido
como cdigo abierto, permitiendo un importante crecimiento en el abanico de
aplicaciones disponibles. Este condicionante ha posibilitado el nacimiento de una
extensa red deinformacin al alcance decualquiera, queofreceelsoporte necesariopara
desarrolladores nveles.
Estos enormes fondos de informacin permiten obtener un apoyo indispensable
paralastareasformativas orientadas a conocer elfuncionamientodelaplataformaen
suconjunto,absolutamentenecesariasparaelfin l ti mo delproyecto:eldesarrollo de
unanueva aplicaciny supuestaadisposicindelosusuarios potenciales.
Para conseguir el objetivo final, el primer paso necesario es la investigacin del
funcionamiento del sistema operativo Android, las posibilidades de las caractersticas
ofrecidas y sugestin por partedelasAPIs disponiblesyelmanejo deaplicaciones.
Centrndonos en las tareas de desarrollo, es indispensable el conocimiento de la
completa herramienta ofrecida para tal fin, as como su integracin y uso enentornos
dedesarrollo yaexistentes.
Finalmente, se llevar a cabo la implementacin de la aplicacin propiamente
dicha, orientado a ser probado y testado sobre el terminal Samsung Galaxy R con la
ayudadeotrosterminalescomosonelZTEBladeoelMotorolaDelphi.
De formacomplementaria, la aplicacin seacompaa de la documentacin necesaria
parasucorrecta instalaciny uso,ascomosuestudioparafacilitar lacompresindesus
componentes y la interconexin existente, al igual que posteriores ampliaciones por
partedeterceros desarrolladores.

1.2.Objetivos

El principal problema a la hora de realizar aplicaciones para Smartphones que requieran


geolocalizacin es la imposibilidad de realizar una ubicacin correcta debido a que el
dispositivo no capta la seal de un nmero adecuado de satlites. Este hecho se da en
interioresde edificiosperotambinse puede darenexteriores,porejemplo,enciudadescon
una densidad de edificaciones que apantalle la seal GPS o en situaciones en las que
simplementeeldispositivonodisponedeunreceptorGPSoprefierenoemplearlo.
El objetivo del proyecto es proporcionar al usuario un mtodo de localizacin en exterior
de dispositivos Wifi. Como es probable que no se disponga de seal GPS, la localizacin la
realizaremos mediante la triangulacin de dispositivos Wifi encontrados. Las coordenadas de
losdispositivosWifisernconocidasconanterioridad,conlocual,latriangulacinserealizar
demaneratrivial.Elserviciodeberserejecutadoensegundoplanoparacuandoelusuariose
desplaceporelmapavayalocalizandonuevosdispositivos.
La primera parte del proyecto se puede decir que se centra en el descubrimiento de
terminales(medianteunservicioejecutadoensegundoplano)yelposicionamiento.Conforme
se vayan localizando dispositivos Wifi nuevos, se irn almacenando en una base de datos. En
segundo lugar, se encuentra la comunicacin con ellos. La informacin recibida de cada
dispositivosealmacenaenlabasededatosdemaneraquepodrserutilizadaposteriormente.

3

CAPTULO2

TECNOLOGASEMPLEADAS

2.1.Android

2.1.1.IntroduccinaAndroid

Android es una plataforma abierta de software para dispositivos mviles. Est


desarrollada por la Open Handset Alliance, compuesta por ms de 50 empresas y
liderada por Google. Esta plataforma est compuesta por el Sistema Operativo,
Midlewarey aplicaciones clavesdelsistema.
Est basado en un ncleo Linux 2.6 que hace de capa de abstraccin entre el
hardwarey el resto del sistema, ofreciendo a la capa del software los diversos servicios
existentes, como la seguridad, gestin de procesos y memoria, pila de red y modelo de
drivers.
Por encima delncleo se handiseado unaserie decapas que completan un entorno de
desarrollo asequibleparacualquierprogramador.
El runtime es un conjunto de bibliotecas que ofrece la mayora de las
funcionalidades disponibles en el ncleo de Java, lenguaje mediante el cual est
programado elsistema.
Uno de sus principales componentes es la Mquina Virtual Dalvik. Android
permite que un dispositivo pueda ejecutar varias mquinas virtuales, de modo que
cadaaplicacin sea lanzadacomoun proceso independiente y con supropiainstanciade
lamquinavirtual, alavezquesupone unbajoconsumo derecursos.
El conjunto de bibliotecas, escritas en C/C++, son usadas para muchos de los
programas de Android, y estn puestas a disposicin del programador mediante el
Framework de aplicaciones. Sus competencias abarcan desde la propia gestin del
sistema, como System C, hasta la manejo de bases de datos, con SQLite, pasando por
diversas libreras multimedia con soporte para audio y video 2D y 3D, como Surface
Manager, Media Framework, OpenGL, o FreeType, o la navegacin web facilitada por el
motorLibWebCore,entreotrasfuncionalidades.
ElFrameworkdeAndroid es elcomponente quedasoportealosdesarrolladorespara
elusodelascaractersticasanteriormenteexpuestas, yes, adems,elmismo sobreelque
estndiseadaslasaplicacionespropiasincluidasenlaplataformaAndroid.

Permiteunasencilla reutilizacin decomponentes y comunicacin enteaplicaciones,


siempre sujetas a ciertas medidas de seguridad, que facilita, por ejemplo, la
actualizacin o sustitucin de componentes por parte del usuario, resultando un
sencillo yefectivomtodoparautilizar novedadesointroducir mejorasenelsoftware.
Losprincipales conjuntosdeservicios ofrecidos sonlossiguientes:

Un extenso y variado conjunto de vistas (Views) ofrecidas para el diseo de


interfaces grficas de usuario y su interactividad con el sistema, como los
tpicosbotones, cuadros detexto olistas.

Los proveedores decontenidos (Contents Providers)sonel mtodo de intercambio


de informacin entre aplicaciones, ya sea compartiendo los datos propios o
accediendo alosdeotrasaplicaciones.

Losgestoresderecursos(ResourcesManager)permitenelaccesoindexadoarecursos
como cadenas o grficos, en un intento de modular an ms el diseo de las
aplicaciones yeluso desus recursos.

El gestor denotificaciones (Notification Manager) dirigealertas personalizadasal


software, quesonmostradas enunabarradeestado.

Finalmente,elgestor de actividades (Activities Manager) es responsable ciclo de


vidadelasaplicaciones.

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

En este manual se va a tratar la instalacin paso a paso de las herramientas


necesarias para comenzar a desarrollarnuestraaplicacin sobreunsistemaAndroid. Los
principales componentes son el SDK de Android, el plugin ADT para eclipse, as como el
propio IDE Eclipse. En este caso setrabaja con elIDE Eclipse Galileofor JavaDevelopers,
porloesteserelcaso que sedetallaparalainstalacindelSDKAndroid.

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

Entre los numerosos recursos disponibles en la web de Android

(
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

2.1.2.3.Instalacindel plugin ADTde Eclipse

Usando Eclipse, este plugin nos facilitar tareas de programacin, simulacin y


depuracin de nuestras aplicaciones. Para descargarlo, basta acceder a Install new
software del men Help e introducir la direccin donde se ubica (https://dl
ssl.google.com/android/eclipse)

como directorio de trabajo. Aunque por razones de


seguridad es preferible usar el protocolo https, en caso de problemas tambin podra
usarse http.
A continuacin debe ofrecernos la instalacin de Developer Tools, y desplegando el
rbol podremos ver que se compone de Android DDMS y Android Developer Tools.
Elegimos ambas herramientas y tras aceptar la correspondiente licencia en el siguiente
paso, comienza ladescarga delnuevo software.
Unavezdescargadoeinstaladohayqueconfigurarlasnuevasutilidadesparaque
EclipsereconozcaelSDKAndroid.Paraello,enelmenWindow/Preferenceselegimos
laopcinAndroid.Enelcuadrodedialogomostradodebemosintroducirlarutadonde
fueinstaladoelSDKenelpasoanterior,porejemploC:\nandroidsdkwindows.Sitodo
el proceso se ha realizado correctamente, tras pulsar el botn Apply nos aparecern
todaslasversionesdelasAPIsincluidasennuestroSDK.

Figura2.6:UbicacindelSDK

Aceptamos los cambios y ya podremos empezar a desarrollar para Android. Sin


embargo, para completar la puesta en marcha de las utilidades que nos ofrece el
plugin, todava nos queda por crear nuestro simulador, o simuladores, para probar
nuestras aplicaciones. Esto evitar tener queacceder anuestro terminal paratestear cada
cambio realizado enelcdigofuentedesarrollado.
10

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

En primer lugar debemos tener claro el concepto de API para un mejor


entendimientodelaAPIdeGoogleMaps.UnaAPI(ApplicationProgrammingInterface)
es una llave de acceso a funciones que nos permiten hacer uso de un servicio web
provistoporuntercero,dentrodeunaaplicacinwebpropia,demanerasegura.

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.

Antes de empezar a utilizar el servicio de mapas de Google es necesario realizar


algunas tareas previas. En primer lugar, debemos asegurarnos de que tenemos
instalado el paquete correspondiente a la versin de Android para la que
desarrollamos enriquecido con las APIs de Google. Estos paquetes se llaman
normalmente Google APIs by Google, Android API x, revisin y. Esto podemos
comprobarlo y descargarlo si es necesario desde Eclipse accediendo alAndroid SDK
and AVD Manager. Al crear nuestro proyecto de Eclipse tendremos que seleccionar
comotargetque vamos a utilizar la API de Google. Con todo esto ya tendramos
creado nuestro proyecto de Eclipse y estaramos preparados para poder ejecutar
aplicacionesenelemuladorsobrelaversincorrectadeAndroidylasAPIsnecesarias
deGoogle.Portanto,yapodemoscentrarnosenlautilizacindedichasAPIs.
11

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

Copiaremos el dato que aparece identificado como Huella digital de certificado


(MD5) y con ste accederemos a la web de Google
(http://code.google.com/android/mapsapisignup.html) para solicitar una clave de
uso de la API de Google Maps para depurar nuestras aplicaciones (Insisto, si
posteriormente vamos a publicar nuestra aplicacin en elMarket deberemos solicitar
otra clave asociada al certificado real que utilicemos). Dicha web nos solicitar la
marcaMD5denuestrocertificadoynosproporcionarlaclavedeusodelaAPI.

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

los dispositivos inalmbricos una de las grandes revoluciones tecnolgicas de los


ltimostiempos.
Lastecnologasinalmbricas,owireless,hanconseguidoesapopularidadgraciasa
la movilidad que permiten, llegando a cambiar la estructura y topologa de las redes
empresariales.Losdispositivosdealmacenamientodeinformacinqueanteseranfijos
ahora pueden ser portados y cambiar su conexin a distintas redes de una manera
sencilla.
Esprobablequeenunfuturocercanotodoslosdispositivosquehoyutilizamosse
unifiquen, pudiendo pasar a llamarse Terminales Internet, en los que se reuniran
funcionesdetelfono,agenda,reproductormultimedia,ordenadorpersonal,etc.

2.2.2.Historia

En 1999 los principales vendedores de soluciones inalmbricas (3com, Aironet,


Intersil, Lucent Technologies, Nokia y Symbol Technologies) crearon una asociacin
conocidacomoWECA,conelfinderesolverelproblemaquesuponalaexistenciade
diferentes estndares, lo que provocaba problemas de incompatibilidad. Por lo tanto
esta asociacin se propuso crear una marca que permitiese fomentar la tecnologa
inalmbricayasegurarlacompatibilidaddelosdispositivos.
Es en el ao 2000 cuando WECA con la norma IEEE 802.11b certifica la
interoperabilidaddeequiposbajolamarcaWiFi,conloquesegarantizaquetodoslos
elementos con el sello WiFi pueden trabajar juntos sin problemas
independientementedelfabricantedecadaunodeellos.
En2002laasociacin,formadayaporcasi150miembros,anuncialamarcaWiFi
utilizada para certificar equipos IEEE 802.11a de la banda de 5 Ghz, debido a que las
velocidadesmximasofrecidasporlanorma802.11b(11Mbps)habasidosuperada.

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 legacy: publicado en 1997, es la versin original del estndar IEEE


802.11.Permitadosvelocidadestericasdetransmisin,1y2Mbps,mediante
sealesinfrarrojasenlabandaISM(Industrial,ScientificandMedical,deusono
13

comercial) a 2,4 GHz. Este estndar defina el protocolo CSMA/CA (Carrier


Sense Multiple Access with Collision Avoidance) como mtodo de acceso. Una
parteimportantedelavelocidaddetransmisinseutilizaenlasnecesidadesde
esta codificacin para mejorar la calidad de la transmisin bajo condiciones
ambientales diversas, lo que produjo dificultades de interoperabilidad entre
equipos de diferentes marcas y rechazo entre los consumidores. En la
actualidadnosefabricanproductossobreesteestndar.

802.11b: certificado en 1999, corrige las principales debilidades del estndar


original y es el primer protocolo de la familia en ser aceptado por los
consumidores. Permite una velocidad mxima de transmisin de 11 Mbps
trabajando en la misma banda de frecuencia de 2.4 GHz. Tambin utiliza el
mtodo de acceso CSMA/CA lo que reduce en la prctica la velocidad mxima
detransmisina5.9MbpssobreTCPya7.1MbpssobreUDP.

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.11n: se espera que este protocolo se implante en 2008, aunque existen


dispositivosqueofrecendeformanooficialesteestndar.Lavelocidadrealde
transmisin podra llegar a 600 Mbps, lo que significa una velocidad terica
todava mayor, y lo que supondra redes 10 veces ms rpidas que las de
estndarayg,ycasi40vecesmsrpidasquelasdeestndarb.Elalcanceque
seesperaseaalcanzadotambinseincrementargraciasalatecnologaMIMO
(Multiple Input Multiple Output), que permite utilizar varios canales a la vez
paraenviaryrecibirdatosgraciasalaincorporacindevariasantenas.

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).

802.11i: este protocolo est dirigido a batir la vulnerabilidad actual en la


seguridad para protocolos de autenticacin y de codificacin, abarcando los
protocolos802.1x,TKIP(ProtocolodeClavesIntegraSegurasTemporales),y
AES(EstndardeCifradoAvanzado).

802.11 Super G: trabaja en la banda de 2.4 GHz y gracias al chipset Atheros


alcanzavelocidadesdetransferenciade108Mbps.

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

Resaltando sus principales caractersticas, se podra decir que las Redes


Inalmbricas WiFi son muy fciles de adquirir,no tanto de configurar y muy difciles
deproteger.TambincabeaclararquelatecnologaWiFinoescompatibleconotros
tiposdeconexioneswirelesscomoBluetooth,GPRS,UMTS,etc.

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:

Puntos de Acceso Robustos: son bastante inteligentes e incorporan funciones


adicionales de gestin y seguridad, como Firewall, Site Survey o no emitir el
ESSID (algo que se comentar ms adelante). Adems son ms costosos y
complicados de gestionar y suelen sobrecargar el trfico. En algunos casos
disponendeslotslibresparafuturasactualizaciones.
Puntos de Acceso Bsicos: son ms econmicos y sencillos de gestionar y
configurar,ademssuelesermssencillocompatibilizarlosconotrasmarcas.

2.2.5.2.Routers

Los routers reciben la seal de la lnea que ofrezca el operador de telefona y se


encargan de todos los problemas relacionados a la recepcin de la seal, como el
controldeerroresylaextraccindelainformacin,paraquelosdiferentesnivelesde
red puedan trabajar. Los routers trabajan de manera conjunta con los puntos de
acceso wireless, funcionando estos ltimos a modo de emisor remoto, es decir, en
lugaresdondelasealwifidelrouternotengasuficienteradio.
Otros dispositivos como hubs o switches tambin pueden encargarse de la
distribucindelaseal,peronopuedenencargarsedelastareasderecepcin.Hoyen
dalamayoradelosPuntosdeAccesoincluyenlasfuncionalidadesdelosRouters,por
loqueestosseestnviendosustituidos.

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:

PCI: Peripherial Component Interconnect, bus de interconexin de


componentes perifricos, que conecta directamente a la placa base de la
computadora dispositivos perifricos (bus local). Permite configurar el
dispositivo de manera dinmica y suele ser utilizado en ordenadores de
sobremesa.Habitualmentesueledisponerdeconectoresparaantenas.
Mini PCI: Este tipo de tarjetas posee caractersticas semejantes a las PCI, pero
sutamaoesmuchomenor,seutilizaenporttilesynodisponedeconectores
paraantenas.
PCMCIA: Personal Computer Memory Card Internacional Association, es un
dispositivo utilizado habitualmente en porttiles, la mayora de estas tarjetas
solosoncapacesdellegaralatecnologa802.11b,nopermitiendodisfrutarde
unavelocidaddetransmisindemasiadoelevada.LastarjetasPCMCIAtambin
recibenelnombredePCCardsisonde16bitsoCARDBUSsisonde32debits.
CENTRINO: Centrino Mobile Technology es una iniciativa de Intel para
promocionarunacombinacinprestablecidadeCPU,chipsetdelaplacabasee
interfaz dered inalmbrica enel diseo de ordenadores personales porttiles.
LainterfazderedesdeltipoIntelPRO/Wireless2100(802.11b)oPRO/Wireless
2200 (802.11g). Todo lo mencionado corresponda simplemente al tipo de
interfaz que utiliza la tarjeta WiFi, sin embargo a la hora de considerar una
tarjetawireless,sobretodoparalatareadeauditoras,esconocerelchipsety
losdriversqueutiliza,quenotienenporquserdesarrolladosporlacompaa
quehafabricadolatarjetaWiFi.
USB: UniversalSerialBus,proveeunestndardeserieparaconectar
dispositivosaunPC.


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

A continuacin se detallaran los campos que aparecen en la ventana emergente


quenosacabadeaparecer:

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

En la siguiente pantalla tendremos la posibilidad de elegir el icono que tendr


nuestra aplicacin una vez instalada en un terminal. Tambin se podr elegir algunos
iconospordefecto.

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

Una vez creado nuestro proyecto se proceder a explicar detalladamente las


carpetasyficherosmscaractersticosquesehangenerado.
21

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

Para desarrollar una aplicacin Android correctamente, ser de vital importancia


tenerunaexcelentebaseenprogramacinjavayxml.Alolargodeldesarrollodeuna
aplicacin Android, nos encontraremos con nmeros archivos xml (interfaz grfica) y
archivos java (funcionalidad de la aplicacin) y, por eso, ser conveniente hacer un
repasogeneraldeestosdostiposdearchivos.

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.

Para incluir un mapa de Google Maps en una ventana de nuestra aplicacin


utilizaremos el controlMapView. Estos controles se pueden aadir al layout de la
ventana (en mi caso, main.xml) como cualquier otro control visto hasta el momento,
tan slo teniendo en cuenta que tendremos que indicar la clave de uso de Google
Mapsensupropiedadandroid:apiKeycomosemuestraenlafiguraanterior.

Si observamos la figura anterior, vamos a diferenciar entre dos tipos de


elementos:layoutsycomponentes.Loslayoutsdescribenunasuperficieespecficade
la pantalla, configurada por el desarrollador, en la que se incluirn los distintos
componentes. En nuestro archivo tenemos dos contenedores del tipo LinearLayout,
dondeelsegundodeelloscontieneelMapView.Paraunodeestoselementossehan
definido una serie de propiedades entre las que vamos a destacar android:id. Esta
propiedadnospermitedefinirunnombreparadichoelementopormediodelcualest
ser accesible desde el cdigo. Posteriormente veremos todo esto en ejemplos con
cdigo Java. Tambin se pueden apreciar varias propiedades como
android:layout_width o android:layout_height donde se indicara el ancho y
largodeinterfazdelaaplicacin.Siponemosatruelapropiedadandroid:clickable
podremosinteractuarconelmapamediantegestosconlosdedos.
24

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:

<manifiest>: tag raz. En l se declara el nmero de versin de desarrollo, el


nmerodeversindenuestraaplicacinyelpaqueterazquelacontiene.

<application>: tag que contiene todas las Activities, Services, Providers,


Receiversylasbibliotecasqueseusanennuestraaplicacin.

<supportsscreens>: tag utilizado para describir las pantallas soportadas por


nuestraaplicacin.

<usespermissions>: mediante este tag especificamos los permisos que va a


necesitarnuestraaplicacinparapoderejecutarse,ademssonlosquedeber
aceptar el usuario antes de instalarla. Por ejemplo, si se desea utilizar
funcionalidades con Internet o el vibrador del telfono, hay que indicar que
nuestraaplicacinrequiereesospermisos.

<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

En primer lugar, la aplicacin dispondr de una base de datos donde se


almacenarn todos los dispositivos que han transmitido cualquier tipo de datos. Esta
tablacontendrelcampoID,IPyDatos.
El campo ID es obligatorio para poder asignarle un identificador nico a cada
dispositivo.
El campo IP es bastante importante porque nos aportar la informacin
necesariaparasaberquedispositivonosmandolosdatos.
El campo Datos ha sido creado para almacenar el mensaje enviado por el
dispositivoWiFiparasuposterioruso.
30

Figura3.14:TabladelosdispositivosWiFi

En segundo lugar, la aplicacin dispondr de una base de datos donde se


almacenarn todos los puntos de acceso el terminal se ir conectando conforme se
vayadesplazandoporelmapa.EstatablacontendrelcampoID,SSIDyMAC.
El campo ID es obligatorio para poder asignarle un identificador nico a cada
dispositivo.
ElcampoSSIDserelnombredelaredqueproporcionarelserviciodered.
ElcampoMACsealmacenarladireccinMACdecadapuntodeacceso.

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.

Habr que buscar entre las aplicaciones instaladas en el terminal y ejecutar la


aplicacinHelloGoogleMaps,quetendruniconotalqueas:

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

la aplicacin y seleccionar el botn Recibir. Si no activamos el servicio, el terminal


nuncarecibirnada.

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

Como conclusin general, mencionar que este proyecto ha conseguido alcanzar


todoslosobjetivosquesepropusieroninicialmente.

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.

Adicionalmente, se obtuvieron grandes conocimientos en el manejo de las


tecnologas relacionadas con un proyecto de este tipo. Se aprendieron conceptos
importantes para el desarrollo de software dentro de las limitaciones tpicas de un
dispositivo mvil. Tambin se obtuvieron conocimientos avanzados en el uso del
lenguajedeprogramacinyunbuenmanejodelasdiferentesAPIsquehacenposible
desarrollaraplicacionesbajolaplataformaAndroid.

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.

También podría gustarte