Está en la página 1de 107

FACULTAT D'INFORMTICA DE BARCELONA

PROYECTO FINAL DE CARRERA


APLICACIN DE GESTIN DE INFORMACIN GEOLOCALIZADA EN ANDROID

AUTOR: Alan Bover Argelaga DIRECTOR: Manuel Medina Llins FECHA: 20 de Enero de 2010

Pgina 1

ndice
1. Introduccin al proyecto .................................................................................... 7
1.1. Motivacin ................................................................................................................7 1.2 Objetivos ...................................................................................................................8

2.

Estado del Arte .................................................................................................. 9


2.1 Geolocalizacin ..........................................................................................................9
2.1.1 Definicin .................................................................................................................................... 9 2.1.2 Aplicaciones tecnolgicas ........................................................................................................... 9 2.1.3 Sistemas de localizacin de dispositivos mviles ..................................................................... 10 2.1.4 Sistemas de localizacin basados en la identidad celular ......................................................... 10 2.1.5 Sistemas de localizacin basados en la red .............................................................................. 12 2.1.6 Tcnicas basadas en la modificacin del terminal mvil .......................................................... 13 2.1.7 APIs de geolocalizacin ............................................................................................................ 17 2.1.8 Aplicaciones actuales con esta tecnologa ................................................................................ 19 2.1.9 Privacidad ................................................................................................................................. 20

2.2 Realidad aumentada ................................................................................................ 21


2.2.1 Introduccin a la realidad aumentada ...................................................................................... 21 2.2.2 Mtodos de visualizacin (Display)........................................................................................... 23 2.2.3 Registro de objetos virtuales .................................................................................................... 24 2.2.4 API'S de realidad aumentada para mviles .............................................................................. 26 2.2.5 Aplicaciones de realidad aumentada para mviles .................................................................. 31 2.2.6 Proyectos en realidad aumentada ............................................................................................ 32

2.3 Proyeccin de mapas ................................................................................................ 34


2.3.1 Introduccin .............................................................................................................................. 34 2.3.2 Geocodificacin ........................................................................................................................ 34 2.3.3 SIG ............................................................................................................................................. 35 2.3.4 Mapas de carreteras existentes ................................................................................................ 37

2.4 Sistemas de categorizacin de productos .................................................................. 39


2.4.1 Introduccin .............................................................................................................................. 39 2.4.2 Introduccin a sistemas de productos y servicios estndar ..................................................... 40 2.4.3 UNSPSC ..................................................................................................................................... 41 2.4.4 EOTD ......................................................................................................................................... 43 2.4.5 E-CL@SS .................................................................................................................................... 45 2.4.6 CPV ............................................................................................................................................ 47 2.4.7 Otros sistemas de clasificacin de productos ........................................................................... 48 2.4.8 Eleccin de un estndar ............................................................................................................ 48 2.4.9 Ejemplos de aplicaciones actuales ............................................................................................ 50

3. Diseo de la aplicacin ....................................................................................... 52


3.1 Requisitos funcionales .............................................................................................. 52 3.2 Requisitos no funcionales ......................................................................................... 54 3.3 Estructura del sistema .............................................................................................. 55 3.4. Diagrama de estados ............................................................................................... 56

Pgina 2

3.4.1 Registro de la aplicacin ........................................................................................................... 56 3.4.2 Vista general ............................................................................................................................. 57 3.4.3 Seleccin de un producto ......................................................................................................... 59 3.4.4 Funcionalidades especiales ....................................................................................................... 61 3.4.5 Notificaciones ........................................................................................................................... 62

3.5 Capas de la aplicacin ............................................................................................... 63


3.5.1 Capa de Gestin de la aplicacin .............................................................................................. 64 3.5.2 Funciones especiales ................................................................................................................ 72 3.5.3 Capa comunicacin ................................................................................................................... 75 3.5.4 Capa Interfaz usuario ................................................................................................................ 78

3.6 Diagramas de secuencia ........................................................................................... 82


3.6.1 Inicio de sesin ......................................................................................................................... 82 3.6.2 Actualizacin de mi lista de productos ..................................................................................... 83 2.6.3 Seleccin de un producto a travs de mi lista .......................................................................... 85 3.6.4 Alertas por proximidad a un punto de inters .......................................................................... 86 3.6.5 Seleccionar una tienda cercana que dispone de un producto.................................................. 87 3.6.6 Borrar un producto de mi lista .................................................................................................. 89 3.6.7 Insertar un producto nuevo por QR .......................................................................................... 91

3.7 Diseo final de las ventanas de la aplicacin ............................................................. 93

4. Pruebas funcionales ............................................................................................ 95


4.1 Resultado de las pruebas .......................................................................................... 95
4.1.1 Pruebas contra la localizacin .................................................................................................. 95 4.1.2 Pruebas contra conexin a Internet ......................................................................................... 95 4.1.3 Pruebas contra base de datos .................................................................................................. 96 4.1.4 Pruebas contra funcionalidades externas................................................................................. 96 4.1.5 Pruebas contra sistema de alertas ............................................................................................ 96 4.1.6 Pruebas de funcionalidad general ............................................................................................ 97

4.2 Descripcin de los errores detectados ....................................................................... 97


4.2.1 Errores en localizacin .............................................................................................................. 97 4.2.2 Errores en conexin a internet ................................................................................................. 97 4.2.3 Errores en funcionalidades externas ........................................................................................ 98

5. Licencias ............................................................................................................. 99 6. Planificacin y costes reales .............................................................................. 100 7. Conclusiones y trabajo futuro............................................................................ 102
7.1 Conclusiones .......................................................................................................... 102 7.2 Trabajo futuro ........................................................................................................ 103

8. Referencias ....................................................................................................... 104


8.1 Sistemas de categorizacin de productos ................................................................ 104 8.2 Sistemas de proyeccin y utilidades de Mapas ........................................................ 105 8.3 Realidad Aumentada .............................................................................................. 106 8.4 Sistemas de Geolocalizacin ................................................................................... 106

Pgina 3

8.5 Programacin en Android ....................................................................................... 107 8.6 Otros ..................................................................................................................... 107

Pgina 4

ndice de Imgenes
Imagen 2.1 Estructura de red en celdas ...................................................................................... 11 Imagen 2.2 Sistemas de localizacin por identidad celular ........................................................ 12 Imagen 2.3 Localizacin por ngulo de llegada .......................................................................... 12 Imagen 2.4 Localizacin GPS ....................................................................................................... 15 Imagen 2.5 Ejemplo de marcadores de patrones ....................................................................... 25 Imagen 2.6 Ejemplo de reconocimiento de objetos en un dispositivo mvil. ............................ 26 Imagen 2.7 Junaio ....................................................................................................................... 27 Imagen 2.8 Arquitectura de layar ............................................................................................... 28 Imagen 2.9 Wikitude ................................................................................................................... 29 Imagen 2.10 Enkimet................................................................................................................... 32 Imagen 2.11 Creacin de un sistema de categorizacin ............................................................. 39 Imagen 2.12 Codificacin en UNSPSC ......................................................................................... 42 Imagen 2.13 Niveles de clasificacin en E-CL@SS....................................................................... 46 Imagen 3.1 Estructura del sistema GeoBuyMe ........................................................................... 55 Imagen 3.2 Diagrama de estados de registro de la aplicacin.................................................... 56 Imagen 3.3 Diagrama de estados general - Vista global ............................................................. 57 Imagen 3.4 Diagrama de estados de seleccin de un producto ................................................. 59 Imagen 3.5 Diagrama de estados de realidad aumentada y mapas ........................................... 61 Imagen 3.6 Diagrama de estados de alertas por proximidad ..................................................... 62 Imagen 3.7 Movimientos entre activities ................................................................................... 79 Imagen 3.8 Diagrama de secuencia de inicio de sesin .............................................................. 82 Imagen 3.9 Diagrama de secuencia de actualizacin de lista de productos ............................... 83 Imagen 3.10. Diagrama de secuencia de seleccin de un producto ........................................... 85 Imagen 3.11 Diagrama de secuencia de alertas por proximidad ................................................ 86 Imagen 3.11 Diagrama de secuencia de muestra de tiendas por producto ............................... 87 Imagen 3.12 Diagrama de secuencia de borrado de un producto (1) ........................................ 89 Imagen 3.13 Diagrama de secuencia de borrado de un producto (2) ........................................ 89 Imagen 3.14 Diagrama de secuencia de insercin de un producto (1)....................................... 91 Imagen 3.15 Diagrama de secuencia de insercin de un producto (2)....................................... 91 Imagen 3.16 Captura inicio de sesin ......................................................................................... 93 Imagen 3.17 Captura ventana principal ...................................................................................... 93 Imagen 3.18 Opciones ................................................................................................................. 93

Pgina 5

Imagen 3.19 Lista de productos .................................................................................................. 94 Imagen 3.20 Informacin de producto ....................................................................................... 94 Imagen 3.21 Lista de tiendas....................................................................................................... 94 Imagen 3.22 Informacin de tienda ............................................................................................ 94

Pgina 6

Introduccin al proyecto

1. Introduccin al proyecto
1.1. Motivacin
En los ltimos aos, las nuevas tecnologas en dispositivos mviles han avanzado hasta un nivel en el que se puede disponer en todo momento de aplicaciones capaces de gestionar grandes cantidades de informacin y de realizar costosas tareas y operaciones. La disponibilidad de esta tecnologa en dispositivos como telfonos mviles o pda's, nos abre un mar de oportunidades a aplicaciones que podemos usar o necesitar en cualquier momento o situacin en el da a da. Si a ello le aadimos que hoy en da es posible conocer nuestra propia posicin en tiempo real, se da la posibilidad de desarrollar una herramienta capaz de conocer, analizar y almacenar informacin sobre lo que nos rodea. El objetivo bsico y principal del proyecto es desarrollar una aplicacin que conozca nuestras preferencias, nuestra posicin, y que nos ayude a encontrar aquello que queremos y que nos rodea en el momento que lo necesitemos. Para ello se decidi utilizar dispositivos mviles, dada su gran disponibilidad por parte de la mayora de personas, y el avance tecnolgico cada vez ms grande de estos. Aunque en un primer momento se pens hacerlo en una plataforma Java, disponible para una gran cantidad de dispositivos, se acab decidiendo desarrollar la aplicacin para dispositivos basados en el sistema Android. Esta decisin se bas en las previsiones que indicaban la desaparicin poco a poco del Java en estos dispositivos, y el crecimiento en contra de dispositivos smartphone [Gartner]. Dentro de las categoras de smartphone, se decidi usar Android por la facilidad de acceso al SDK de desarrollo, a parte de su apoyo por el software libre. El hecho de que Android est desarrollado sobre cdigo abierto, lo ha impulsado fuertemente consiguiendo ocupar una de las posiciones ms vendidas, y tambin ha impulsado a muchos otros desarrolladores de software libre a ofrecer su cdigo de aplicaciones Android de manera abierta.

A raz de la disponibilidad de cmaras en los dispositivos mviles, se decidi hacer uso de dos tecnologas punteras en este tipo de dispositivos. La primera de ellas es la realidad aumentada, con la que se superponen representaciones de objetos o lugares

Pgina 7

Introduccin al proyecto que existen a nuestro alrededor sobre la imagen captada de la cmara. La segunda tecnologa es el reconocimiento de marcadores, parecidos a los cdigos de barras pero con la caracterstica de poder contener mucha ms informacin, y con los que se pueden identificar productos que se encuentran a nuestro alrededor y disponen de estos marcadores. El uso de memoria interna y posicionamiento nos permite tambin utilizar mapas en modo offline en los que se muestra la posicin del dispositivo, y la posicin de aquellos lugares que son de nuestro inters.

1.2 Objetivos
El proyecto se basa en la construccin de una aplicacin capaz de conocer aquellos productos o servicios en los que un usuario puede estar interesado, y a travs del conocimiento de la posicin, el dispositivo debe ser capaz de indicar dnde es posible "adquirir" algo deseado. Los objetivos, por pasos, para la construccin de la aplicacin, son los siguientes:

Estudio de las diferentes tecnologas implicadas en el proyecto. Esto permitir, en primer lugar, conocer cmo funcionan dichas tecnologas, que variables les afectan, como acabarn afectando a la aplicacin, y por ltimo, hacer una valoracin y decidir cul de las diferentes soluciones o opciones es la ms indicada y se adapta mejor a las necesidades de esta.

Desarrollo del diseo preliminar de la aplicacin. Definicin de las acciones posibles. Esto permitir disear la estructura de la aplicacin, las diferentes clases y como se relacionarn entre ellas.

Estudio del funcionamiento de la programacin con el entorno de desarrollo para aplicaciones Android, as como el funcionamiento de las diferentes APIs a usar en la aplicacin final.

Desarrollo de la aplicacin final, utilizando las diferentes tecnologas seleccionadas previamente y basndose en el diseo preliminar. Testeo de la aplicacin, buscando explotar todas las posibilidades de la aplicacin en busca de fallos o errores que puedan encontrarse en la aplicacin, y corregirlos.

Pgina 8

Estado del Arte

2. Estado del Arte

2.1 Geolocalizacin
2.1.1 Definicin Se entiende por geolocalizacin la identificacin de la posicin geogrfica real de un objeto o persona, ya sea un dispositivo conectado a Internet, un telfono mvil o cualquier otro aparato que sea posible rastrear. Dicha localizacin puede ser en un plano de dos dimensiones (por ejemplo, Google Maps), como en un plano de tres dimensiones (GPS). En los ltimos aos, diferentes tipos de tecnologas han apostado por la Geolocalizacin, siendo extraordinario el auge de esta en las tecnologas mviles de ltima generacin. Actualmente es posible el uso de la Geolocalizacin en la mayora de plataformas: En el caso de la Geolocalizacin de un ordenador, esta se hace a travs de una serie de bases de datos que aproximan la zona en la que el usuario se encuentra. En el caso de un dispositivo Mvil, existen diferentes tecnologas actualmente, como GPS o la localizacin por celdas.

2.1.2 Aplicaciones tecnolgicas El conocimiento de la posicin de un aparato electrnico puede definir la posicin de una persona fsica en el mundo, lo cual tiene una infinidad de posibilidades. Con la aplicacin de la Geolocalizacin en un PC de mesa, podemos definir diferentes parmetros sobre el usuario que accede a un sistema a travs del ordenador, como por ejemplo el idioma del usuario, publicidad de empresas cercanas, zona horaria, etc. Tambin se han encontrado sistemas de Hacking de Ingeniera Social que hacen uso de la Geolocalizacin para hacer ms creble el ataque [Dennis Fisher]. Sobre la Geolocalizacin dispositivos Mviles, pero, los usos se disparan. El conocer la posicin actual en un momento determinado nos ofrece el poder disponer de un sinfn de informacin de nuestro alrededor. La primera y ms conocida tecnologa es el

Pgina 9

Estado del Arte sistema GPS, que informa de nuestra posicin actual, lo cual ha derivado a los conocidos navegadores GPS, que a travs de mapas y la posicin actual, indican diferentes rutas a fin de llegar al destino. Actualmente, esta tecnologa ofrece informacin como bares, restaurantes, puntos de encuentro, localizacin de mviles para nios, localizacin de fotos y parajes, etc. 2.1.3 Sistemas de localizacin de dispositivos mviles Introduccin Existen diferentes maneras de localizar un dispositivo mvil, pero la efectividad del mtodo depender de algunas variables como el medio o la disponibilidad de esta medicin en el terminal. Es posible clasificar los diferentes sistemas en tres grandes grupos: - Basados en la red: Estos sistemas utilizan los sistemas del proveedor de servicios para determinar la posicin del terminal, por lo que no necesitamos ninguna aplicacin especfica funcionando en el mvil. El problema principal de este sistema es que es preciso estar cerca del proveedor para que funcione. - Basados en el terminal: Los dispositivos que utilizan estos sistemas disponen de un receptor de seales y un software cliente para determinar la posicin del terminal a travs de las seales externas. Cabe destacar que es preciso instalar una aplicacin en el mvil, haciendo que el funcionamiento de esta dependa de la adaptacin de los diferentes sistemas operativos. - Hbridos: Los sistemas hbridos son una combinacin de sistemas basados en el terminal y sistemas basados en la red. Aunque contenga los mtodos ms fiables, tambin adquiere los problemas de los dos grupos anteriores.

2.1.4 Sistemas de localizacin basados en la identidad celular Identidad Celular Global (CGI) Esta tcnica fue inventada primeramente para la localizacin en redes GSM, aunque actualmente funciona en redes GSM, GPRS, UMTS y CDMA. Debido a su sistema de funcionamiento la red se conoce como red celular, ya que esta se compone de clulas que emiten a una cierta distancia. Cada clula tiene otras 6 contiguas a su alrededor, para diferenciar las seales de las diferentes celdas, cada celda no puede usar la

Pgina 10

Estado del Arte misma frecuencia que sus otras celdas contiguas, por lo cual obliga a usar un mnimo de siete frecuencias diferentes.

Imagen 2.1 Estructura de red en celdas

Con ello, si conocemos la celda en la que nos encontramos conectados, podemos concretar que nos encontramos en algn punto del radio de esa clula. Esta tcnica no necesita ningn tipo de modificacin en el dispositivo mvil ya que el clculo lo hace la propia red de comunicaciones. El margen de error del sistema de identidad celular depende del radio de la seal. As pues, en zonas de mucha afluencia como ciudades, las celdas tienen un radio ms pequeo, por lo que podemos conseguir un posicionamiento con un error de tan solo varios metros, mientras que en zonas de baja afluencia de gente como pueblos o zonas rurales, podemos variar desde un error de 500 metros hasta kilmetros. Esto lo convierte en un mtodo poco preciso fuera de las grandes ciudades.

Identidad Celular Perfeccionada (CGI-TA) Timing Advance (TA) es una tcnica para conocer la distancia de la celda al dispositivo a travs del tiempo de retraso de la seal. La integracin de este mtodo con CGI produce el mtodo CGI-TA, que sita nuestra posicin de una circunferencia a un crculo. Para hacer este clculo, se precisa un LMU (Location Mesurement Unit), que ayudara a la clula en los clculos de distancia de la seal.

Pgina 11

Estado del Arte

Imagen 2.2 Sistemas de localizacin por identidad celular

2.1.5 Sistemas de localizacin basados en la red ngulo de llegada (AOA, DOA) Este mtodo utiliza antenas multiarray en las estaciones telefnicas para calcular el ngulo con el que llega la seal del telfono. Para conocer la posicin de este mvil es preciso tener al menos dos mediciones de dos antenas diferentes. Normalmente en entornos rurales es suficiente para hacer un clculo poco exacto de la posicin del mvil, pero para conseguir un buen clculo de la posicin se necesitan al menos tres antenas. Por otra parte esta tecnologa es relativamente cara, y la posicin de la antena multiarray es muy importante, cualquier desajuste de esta implicara errores importantes en la estimacin.

Imagen 2.3 Localizacin por ngulo de llegada

Tiempo de llegada (TOA) Esta tcnica se basa en el clculo del tiempo de llegada de una seal a las antenas cercanas. Considerando que la seal viaja a la velocidad de la luz, si conocemos el tiempo que tarda la seal en llegar de una antena al dispositivo mvil y volver,

Pgina 12

Estado del Arte podemos conocer la distancia a la que este se encuentra. Si trazamos un crculo con al menos tres de estas antenas, estos crculos se cruzaran en un punto donde se encontrara situado el mvil. Hay que tener en cuenta de que el hecho que el mvil deba responder a una seal crea un error de respuesta, ya sea por el procesado del terminal o por la carga de este.

Diferencia en el tiempo de llegada (TDOA) El mtodo es parecido a TOA, pero en vez de medir el tiempo de llegada de la seal del mvil a una antena, se mide la diferencia en tiempo de la llegada de la seal del mvil a un par de antenas. Una vez tenemos la diferencia del tiempo, si marcamos todos los puntos en que la distancia de cada punto a las antenas este definida por una constante (la constante la marca la diferencia de tiempo de la llegada de la seal), esto genera una Hiprbola. Si repetimos este proceso para todos los pares posibles de antenas de las que disponemos, conseguiremos que las Hiprbolas se crucen en un punto, donde estar situado el dispositivo mvil. Este sistema, al estar basado en mediciones de tiempo en relacin a dos antenas y no solo a una, reduce los errores a causa de la reflexin. Para que este sistema funcione, es importante que todos los relojes estn sincronizados.

Huella multitrayecto La tcnica de la huella multitrayecto aprovecha el fenmeno de refraccin de las ondas del mvil al llegar a la antena. La seal del mvil rebota en edificios, casas, etc, hasta llegar al receptor. Esto hace que el dispositivo reciba la misma seal varias veces con diferentes tiempos de llegada. Con esto, el operador ha de enviar diferentes seales de prueba para que se guarden las diferentes refracciones en una base de datos que luego permita con una serie de clculos saber de dnde procede una seal. Este sistema permite usar tan solo una sola antena para calcular la posicin de un dispositivo.

2.1.6 Tcnicas basadas en la modificacin del terminal mvil Diferencia en el tiempo de llegada con terminal modificado Esta tcnica tiene el mismo funcionamiento que TOA, con la diferencia de que el dispositivo mvil es capaz de saber el momento exacto en que la antena mando la

Pgina 13

Estado del Arte seal, por lo que solo tiene que hacer la diferencia entre el momento en que recibi la seal y el momento que esta se envo para saber la distancia hasta la antena. El problema de este sistema es que requiere que los relojes del dispositivo mvil y la antena estn sincronizados.

Diferencia en el tiempo de llegada perfeccionada (E-ODT) E-ODT es una tecnologa para GSM basada en el concepto de TDOA, con diferencia de tiempos de llegada. A diferencia de TDOA, es el dispositivo mvil el que calcula la posicin, y no el operador. Para que este sistema funcione, primero se necesita, igual que en TDOA, que todos los relojes de los dispositivos estn bien sincronizados. Tambin se necesitan diversas unidades MTU que medirn el tiempo de llegada de la seal de la antena al receptor. Con la diferencia del tiempo de la antena al mvil y al dispositivo MTU, el mvil puede calcular una Hiperbola, igual que en el caso de TDOA. Si repetimos este proceso para diversas antenas y diversos MTU, el mvil ser capaz de calcular la posicin. Para regular posibles desajustes en los relojes de los dispositivos, normalmente se utiliza conjuntamente RTD, que calcula las diferencias de tiempo de una antena con las otras antenas.

Triangulacin avanzada de enlace hacia delante (A-FTL) A-FTL utiliza el mismo procedimiento que TDOA, pero nicamente funciona con CDMA, ya que este tipo de red es sncrona en operacin, por lo cual no es necesario ningn sistema de sincronizacin de reloj aadido.

GPS Global Positioning System, o conocido ms comnmente por sus siglas (GPS), es un sistema de posicionamiento basado en terminal que permite conocer la situacin de un objeto o persona en cualquier lugar del mundo. Se trata de una red de 27 satlites que emiten una seal con el tiempo de emisin y su posicin. Esta seal llega al GPS con un cierto retraso, lo cual nos permite calcular de una manera aproximada la distancia del satlite, ya que sabemos que esa seal viaja a la velocidad de la luz. En cuanto conocemos la distancia de un satlite y su posicin, podemos definir una esfera con el satlite como centro. Conociendo tambin la posicin y distancia de un segundo satlite, podemos conocer tambin su esfera, que cortara con la del primer

Pgina 14

Estado del Arte satlite en un crculo, definiendo nuestra posicin dentro de ese crculo. Con un tercer satlite, conseguiremos de nuevo una esfera que esta vez nos cortara el circulo en dos puntos. Uno de ellos se podr rechazar por no ser real dentro de la superficie de la tierra.

Imagen 2.4 Localizacin GPS

Desgraciadamente, los relojes atmicos de los satlites GPS no estn sincronizados con los relojes del receptor GPS, por lo que nuestra posicin no resulta del todo precisa. La ayuda de un cuarto satlite dar una mejor precisin sobre la posicin donde nos encontramos, ya que al no tener los relojes correctamente sincronizados, la interseccin de tres de las cuatro esferas dar un pequeo volumen. La correccin de la posicin consiste en buscar el ajuste en el reloj para que el corte de las cuatro esferas se d en un punto, o dicho de otra forma, que el volumen se convierta en un punto. En este caso, el problema es que las seales nunca viajan a la velocidad de la luz exactamente, varan segn el medio en el que viajan, por eso la posicin no es 100% exacta. Por ello, los sistemas de GPS suelen usar la seal de otros satlites, ya que la cobertura suele oscilar entre 6 y 10 satlites. Actualmente, los sistemas de GPS, con una buena cobertura (7 o ms satlites), son capaces de ofrecer una posicin con una precisin inferior a 25 metros. Los principales errores producidos al usar GPS son causados por:

Pgina 15

Estado del Arte Errores en los parmetros orbitales: El satlite tiene un margen de error a la hora de calcular su posicin exacta, por lo que este error se transfiere al clculo de nuestra posicin. Refraccin del medio de transporte: El medio de transporte de la seal hace que no llegue a viajar a la velocidad de la luz exactamente. Disponibilidad selectiva: Manipulacin que el departamento de defensa de los Estados Unidos hace sobre los parmetros orbitales y el reloj. Efecto Multipath: El efecto del rebote de la seal en una superficie reflectante, hace que aumente el tiempo que tarda en llegar esta seal. Todo y tener diferentes errores de precisin, todos tienen sistemas para ajustar este error, por lo que se puede afirmar que la precisin de este sistema es bastante fiable. Actualmente, son muy pocos los mviles que disponen de un receptor GPS. Aunque la mayora disponen la posibilidad de conectar un receptor va bluetooth, solo algunos telfonos de ltima generacin son los que han optado por aadir esta funcionalidad.

A-GPS El A-GPS, es un sistema hibrido basado en GPS, creado para solucionar los problemas de localizacin con GPS en ciudades grandes o interiores con poca cobertura de seal de los satlites, y aumentar su precisin. Se trata de recibir la seal de GPS con algn otro tipo de seal, ya sea Wireless, telefona, etc. Tiene dos sistemas de funcionamiento, el modo online, donde el A-GPS necesita una conexin activa y constante a una red de telfono (por ejemplo GSM), de la cual puede recibir su posicin gracias a la celda en que se encuentra, recibir informacin sobre el entorno como posicin de los satlites o condiciones ionosfricas para aumentar la precisin del GPS, o incluso enviar el computo con la informacin del GPS al servidor de asistencia. En el modo offline, la conexin (ya sea a travs de GPRS, Ethernet, Wireless), no es constante, por lo que el A-GPS descarga un fichero con informacin de su celda o posicin de satlites, entorno, etc., mientras disponga de esta conexin, para ms tarde usar dicha informacin incluso durante varios das.

Pgina 16

Estado del Arte 2.1.7 APIs de geolocalizacin Location API for JAVA ME (OpenLAPI) Location API es una interfaz de localizacin de dispositivos mviles para J2ME, la versin reducida de Java para mviles. Fue creada bajo Java Community Process en septiembre de 2003. Nokia es el principal autor y encargado del mantenimiento de esta plataforma. Es posible utilizarla mediante el paquete Javax.microedition.location. Esta API funciona tanto para dispositivos mviles como para PDAs, funcionando con la plataforma CLDC v1.1 como mnimo, ya que las antiguas versiones no dejan trabajar con nmeros en coma flotante. Se encuentra bajo la licencia de GNU (LGPL) de cdigo abierto, por lo que es posible usarla como librera en alguna aplicacin, ya sea esta de cdigo abierto o cerrado. La API funciona con tcnicas diferentes de posicionamiento, a travs de GPS, AGPS, AOA, Diferencia de tiempos (p.e. Cell-ID), E-ODT, TDOA o de corto alcance (p.e. bluetooth). Esta API soporta informacin como posicin (latitud, longitud, altura, direccin y velocidad de movimiento), e incluye soporte para la creacin y uso de lugares de referencia landmarks, datos sobre los puntos de referencia (direccin, tipo de lugar, cdigo postal, etc.), y soporte para el lanzamiento de aplicaciones por posicin. Se pueden definir diferentes mtodos para una nica localizacin, pudiendo establecer unas reglas como rango de error, tiempo de respuesta, necesidad de altura o velocidad. Dado que este sistema esta implementado para dispositivos con especificaciones limitadas, se recomienda no cargar la aplicacin ms de 2 kB para RAM, y que no ocupe mas de 20kB de memoria. Hay que tener en cuenta que es parte de la implementacin de la aplicacin el poder tener acceso a ciertos recursos de posicionamiento del terminal, teniendo en la mayora de ellos una capa de seguridad (como por ejemplo MIPD 2.0), con la que la API no trabaja directamente sino que la aplicacin ha de pedir permiso para usar estos recursos.

Google Gear API Google Gears es una API desarrollada por Google que se instala como extensin del navegador para aadir funcionalidades adicionales a la creacin de Webs. Dentro de sus diferentes posibilidades, Gears permite a la web la localizacin por GPS o por red (por IP + clulas que detecta o por redes Wireless). Esta ltima no es eficiente en

Pgina 17

Estado del Arte tiempo real, por lo que no se aconseja para aplicaciones de seguimiento como navegadores para mapa. Funciona con la mayora de SO y Navegadores ms comerciales, pudiendo ser utilizada tambin en dispositivos mviles sobre IExplorer en Windows Mobile 5 & 6, Opera Movile en Windows Mobile 6 y todos los dispositivos Android. Gears permite el clculo de la posicin actual, la monitorizacin del cambio de posicin a travs del tiempo, y conocer la ltima posicin conocida del dispositivo. Hay que destacar que en este caso, el clculo de la posicin la hace el servidor web a travs de una consulta a la base de datos de Google, por lo tanto, el dispositivo solo enva informacin de su red al servidor. Por ello, es posible que una aplicacin conozca la posicin sin tener que instalar ningn servicio al mvil ms que Google Gears. Cuando Google Gears intenta acceder a este servicio, por temas de privacidad, aparece una ventana de aceptacin por parte del usuario.

Android Location Services Google ofrece en su rea de desarrollo Android para mviles, una API que se encuentra en el paquete android.location. La API de Android permite conocer las ltimas posiciones del mvil, as como monitorizar en tiempo real la posicin del dispositivo, o llamar a una aplicacin cuando el dispositivo se acerca a una zona previamente marcada. Permite trabajar con diferentes tecnologas como GPS o otras basadas en red. Uno de los beneficios de usar esta plataforma es que est diseada para trabajar con facilidad con el sistema de Google Maps.

2.1.7 Trust Management Service (TMS) Trust Management Service funciona como una entidad certificadora, algo parecido al HTTPS para pginas web, que certifica como confiable a una aplicacin que intenta acceder a la informacin sobre nuestra posicin. Este servicio naci por diferentes causas, una de ellas es la poca usabilidad de tener que aceptar manualmente los trminos cada vez que iniciamos una aplicacin de estas caractersticas. Adems, normalmente los usuarios disponen de poca informacin sobre la empresa / aplicacin a la que le estn dando su consentimiento. Con TMS, se delega a esta entidad el decidir sobre la aceptacin o no de estos trminos, segn si es una aplicacin en la que se puede confiar o no.

Pgina 18

Estado del Arte Primero, el cliente llama a una capa de seguridad local cuando una aplicacin intenta acceder a funcionalidades restringidas del dispositivo mvil. A continuacin, el cliente hace una llamada remota a TMS, envindole la informacin sobre la aplicacin que intenta acceder a estas funcionalidades. Por ltimo, TMS decide si debe o no debe ceder estas funcionalidades segn su base de datos y las preferencias predefinidas del usuario.

2.1.8 Aplicaciones actuales con esta tecnologa Actualmente ya hay diferentes aplicaciones comerciales que hacen uso de esta tecnologa. A continuacin se listan algunos ejemplos:

Sky Map Funciona con el sistema operativo Android. Conociendo la posicin del usuario, gracias al navegador GPS y a una brjula digital que indica el lugar hacia el que la persona desea observar, muestra en la pantalla los nombres de las estrellas que se ven en tiempo real. Places Directory Este programa, tambin diseado para Android, muestra una gua de locales comerciales, como restaurantes, bares o gasolineras, que se encuentren cerca de la posicin del usuario. La aplicacin indica la direccin geogrfica y la distancia a la que se encuentran. La gua se complementa con comentarios y puntuaciones de otros usuarios. Search with my Location Se trata de una funcin que el buscador Google ha incorporado a su versin para mviles que permite determinar la posicin del usuario y le ofrece resultados de bsqueda relacionados con esta. Est disponible para telfonos como Iphone y Blackberry. Google Maps La versin para mviles de los mapas de Google tambin permite hacer bsquedas localizadas si antes el navegador GPS ha determinado la posicin del. Est disponible para la gran mayora de mviles de tercera generacin.

Pgina 19

Estado del Arte 2.1.9 Privacidad En Europa, la privacidad sobre localizacin de cualquier dispositivo personal est definida en la DIRECTIVA 2002/58/CE DEL PARLAMENTO EUROPEO Y DEL CONSEJO. En ella se establece que los datos de localizacin de dispositivos en redes pblicas, solo pueden tratarse de manera annima, o con un previo aviso al usuario, el cual podr aceptar o denegar la solicitud de conocer su posicin, en la medida y tiempo necesario para ofrecer un servicio. A parte, durante el tiempo de este servicio, se le ha de dar al usuario la posibilidad de parar por un intervalo de tiempo de manera voluntaria la emisin de datos propios sobre su localizacin, o revocar totalmente el permiso para la obtencin de datos por parte de la operadora. Por ltimo aade, que solo debern tener acceso a esta informacin personas internas o asociadas al proveedor de servicios, o la persona o empresa que ofrece la aplicacin, limitndose nicamente a usar esa informacin en pro del servicio acordado.

Pgina 20

Estado del Arte

2.2 Realidad aumentada


2.2.1 Introduccin a la realidad aumentada Definicin La realidad aumentada es el trmino usado para definir un tipo de tecnologa donde la visin de la realidad se ampla con elementos virtuales que aaden informacin digital. As definimos esta tecnologa como un punto intermedio entre la realidad tal y como a conocemos y la realidad virtual. Se basa en tecnologas derivadas de la visualizacin o reconocimiento de la posicin para crear un sistema que reconozca la informacin real que tenemos alrededor y cree una nueva capa de informacin, ya sea a travs de grficos en 2 dimensiones o en 3 dimensiones. Esta informacin, se mezcla con el mundo real de forma que para el usuario coexistan objetos virtuales y reales en el mismo espacio. Esta es la principal diferencia de cualquier aplicacin tradicional de un dispositivo, donde toda la informacin que vemos es virtual, como por ejemplo, el ordenador. As segn la definicin de Ronald Azuma [Azuma. R] , un sistema de realidad aumentada cuenta con las siguientes caractersticas: Combina lo real y lo virtual. Funciona en tiempo real Se registra en tres dimensiones. La informacin virtual aadida normalmente se registra en un lugar del espacio, por lo que para dar la sensacin de realidad, ha de mantener la posicin a medida que el usuario cambia su punto de vista.

Necesidades tcnicas Hay diferentes tcnicas para los diferentes pasos que requiere la realidad aumentada, pero bsicamente las especificaciones mnimas se pueden resumir en: Un dispositivo de reconocimiento del entorno: La realidad aumentada ha de ser capaz de situar un objeto en el entorno que nos rodea, por lo que necesita saber la situacin de los objetos a nuestro alrededor. Para ello se pueden utilizar diferentes tcnicas, ya sea por reconocimiento a travs de imgenes captadas por una cmara, a travs de sensores o a travs de posicionamiento. Una cmara: Se necesita de una cmara que capte la imagen que estamos enfocando para que luego se le aada la informacin digital.

Pgina 21

Estado del Arte Una unidad de proceso y software especializado: Se necesita una unidad de proceso, que sea capaz de gestionar los diferentes recursos necesarios para hacer funcionar la realidad aumentada. Los requerimientos de esta unidad de proceso dependern del sistema usado, necesitando ms potencia en sistemas de reconocimiento por imgenes. Por la misma razn, en el caso de superponer modelos en 3D, se necesita de una mayor potencia grfica. Por ltimo, tambin se necesita de un software especializado capaz de gestionar los diferentes dispositivos y analizar e aadir informacin virtual a las imgenes. Una fuente de informacin: Es necesario una fuente de informacin que el software sepa relacionar con la realidad que existe a su alrededor y que proporcione los datos para generar esta capa virtual.

Realidad aumentada en mviles Las tecnologas de realidad aumentada llevan estudindose desde hace

aproximadamente poco ms de 15 aos. Pero no ha sido hasta los ltimos aos que no se han empezado a desarrollar aplicaciones dirigidas al usuario con esta tecnologa. Ha sido la generalizacin de diferentes dispositivos con capacidad de proceso suficiente como para soportar esta tecnologa, la que ha acentuado su estudio y su produccin. Antes de la aparicin de estos dispositivos, se consideraba que los requisitos para esta tecnologa eran demasiado caros para el mercado comn. Estos dispositivos son las PDA, Pocket PC, mviles de alta gama y Smartphones, disponibles por una gran parte de usuarios en general. Muchos de estos dispositivos disponen de los requisitos necesarios, como un display donde ver la informacin, una cmara, sistemas de posicionamiento y una capacidad de proceso y grfica suficiente. No todos estos dispositivos son suficientes para la realidad aumentada, ya que dependiendo de la tcnica usada, requieren ms o menos especificaciones. Hay que recordar que la visin por ordenador y el renderizado de imgenes son las dos tcnicas que ms recursos consumen en la realidad aumentada.

Pgina 22

Estado del Arte 2.2.2 Mtodos de visualizacin (Display) De cabeza Este tipo de visualizacin se basa en un casco o sistema posicionado en la cabeza, y que nos puede mostrar la imagen de dos maneras diferentes: De manera indirecta, viendo la informacin del mundo real a travs de un espejo o lente, donde a travs de una imagen aadida se imprime a la vez la informacin digital. Este sistema, al no disponer de una cmara, necesita de sensores o sistemas de localizacin para ser capaz de definir la posicin de los objetos virtuales. De manera directa, viendo la imagen a travs de un LCD donde aparece la imagen grabada por una cmara junto a la informacin virtual. Este dispositivo s permite la realidad aumentada por reconocimiento del entorno visual. El dispositivo ms comn de este tipo es el HMD (Head mounted display), un casco que dispone de una lenta transparente, y en la que se imprime informacin digital. Todo y que este dispositivo se utiliza en diferentes aplicaciones, es ms conocido por su uso en la aviacin militar moderna (Helmet Mounted Display), la cual ayuda al piloto en la navegacin.

De mano Los dispositivos de mano son dispositivos porttiles que disponen de una pantalla, en la cual se puede ver el mundo real y se superpone informacin virtual. En esta categora entran los dispositivos mviles, PDA, etc. Esta es la categora que tiene ms proyeccin de futuro comercial dado a que la mayora de usuarios son poseedores de un terminal mvil.

Espaciales En los dispositivos espaciales SAR (Spatially Augmented Reallity), la realidad del usuario es aumentada mostrando informacin virtual en el propio entorno del usuario. Esto se puede hacer a travs de displays que envuelven al usuario, o a travs de proyectores. Hay diferentes sistemas de SAR, de los cuales la mayora se encuentran en investigacin, pudiendo mostrar informacin en 2D o 3D.

Pgina 23

Estado del Arte Este sistema, al no estar asociado con un solo usuario, permite el uso e interaccin de diferentes usuarios, compartiendo entre ellos este entorno.

2.2.3 Registro de objetos virtuales El registro de objetos virtuales en realidad aumentada se basa en descubrir la informacin de alrededor para saber dnde se encuentra el dispositivo, y por lo tanto dnde posicionar y como orientar los objetos virtuales. Esta tarea es la parte ms costosa de la realidad virtual, y dependiendo de la tcnica se requiere de un tipo de hardware o de otro.

Basado en marcadores El registro de objetos basado en marcadores es un sistema basado en la visin por computador, utilizando imgenes en el entorno como referencias a las que llamaremos marcadores, las cuales son reconocibles por el dispositivo. El dispositivo reconoce estos marcadores en la imagen recibida por una cmara, y con esto consigue la informacin de la posicin del dispositivo con la cual coloca correctamente las imgenes de realidad aumentada. Este clculo de posicin se hace a travs del anlisis de la distancia del marcador, segn su tamao, y del ngulo en que se encuentra respecto a la cmara. Normalmente no suele funcionar en ngulos muy cerrados.

La principal ventaja de este sistema es la capacidad de conseguir conocer la posicin del dispositivo utilizando tan solo una cmara. Tambin el uso computacional que necesita es ms bajo que el reconocimiento de objetos. Por otro lado, el problema de este sistema es la necesidad de intervenir en el entorno poniendo un marcador, lo que aade una limitacin y impide el traslado a otros entornos sin adaptarlos antes. Para aumentar la precisin de este sistema, se aaden ms marcadores al entorno, evitando perder la posicin si no se encuentran marcadores en su rango de visin. Pero aadir ms marcadores aade ms trabajo a la hora de adaptar el sistema a un entorno.

Pgina 24

Estado del Arte

Imagen 2.5 Ejemplo de marcadores de patrones

Dependiendo de la clase de marcadores que se utilice, variar tambin la tcnica de reconocimiento de estos marcadores. Si se utilizan marcadores basados en patrones, los cuales tienen letras o smbolos, la tcnica necesaria es el L2-Norm (una tcnica que permite calcular la relacin entre dos objetos del marcador con cada uno de los marcadores guardados en memoria utilizando la escala de grises de dentro del cuadro). Lamentablemente, es fcil que dos marcadores parecidos se confundan. Otra clase de marcador es el BCH, basado en una codificacin de cuadros blancos y negros de 6x6, generando as un identificador nico, lo que hace la bsqueda del marcador en memoria mucho ms sencilla. Existe tambin el marcador DataMatrix, funcionando de la misma manera que el BCH pero 144x144, lo que permite la codificacin de texto. Estos tipos de marcadores se pueden encontrar en vallas publicitarias o museos en algunos pases como Japn.

Basado en reconocimiento de objetos El reconocimiento de objetos en la realidad aumentada es el ms difcil de implementar y el ms caro a nivel de coste computacional. Se basa en, a travs de la cmara web, reconocer un objeto en particular, y compararlo con una base de datos de objetos segn su forma para descubrir de qu objeto se trata. Claramente, este sistema no requiere disponer ms que una cmara en l dispositivo, y no necesita modificar el entorno para que funcione, lo que la hace totalmente portable de un entorno a otro con toda facilidad. Por otra parte, esta tecnologa an est en desarrollo, el proceso requiere identificar unos patrones difciles de definir para diferenciar de un objeto a otro. En los ltimos aos se han desarrollado tcnicas mejoradas que permiten reconocer los objetos de manera ms eficiente, con un sistema basado por capas a travs de modelos 3D, y

Pgina 25

Estado del Arte incluso el aprendizaje de nuevos objetos. Un ejemplo de esta tecnologa funcionando en dispositivos mviles lo podemos encontrar en la empresa Mobvis.

Imagen 2.6 Ejemplo de reconocimiento de objetos en un dispositivo mvil.

Basado en posicin y orientacin del dispositivo Este sistema, utilizado en la mayora de las aplicaciones actuales de realidad aumentada, no funciona a travs del reconocimiento en las imgenes de la cmara. Este sistema requiere de un sistema de localizacin, como por ejemplo el GPS, y de sistemas que reconozcan la orientacin del dispositivo, como por ejemplo brjulas digitales, acelermetros, etc. Marcando una serie de puntos de referencia en unas coordenadas, el dispositivo aproximar si el objeto est en su ngulo de visin, y a qu distancia. Aunque se puede calcular la posicin en la que debera encontrarse un objeto en la cmara con bastante precisin, este sistema no distingue si hay algn tipo de oclusin, por ejemplo, nos seguira mostrando la misma informacin aunque la visin de ese objeto quedara tapada por un autobs, o aunque el objeto ya no est en esa posicin. Por eso este sistema suele hacerse servir para puntos de referencia fijos, pero no es efectivo a la hora de reconocer informacin real del entorno, como por ejemplo si una tienda est abierta o cerrada.

2.2.4 API'S de realidad aumentada para mviles Existen una gran variedad de APIs para trabajar sobre realidad aumentada, con el requerimiento de instalar una aplicacin para su funcionamiento, o de aadir la API dentro del desarrollo de una aplicacin. Aqu se hace un resumen de las APIs mas importantes sobre realidad aumentada actualmente.

Pgina 26

Estado del Arte Junaio Junaio es una aplicacin disponible para iphone, y est actualmente en desarrollo para Android. Funciona a travs de la posicin y orientacin del dispositivo, as como tambin tiene soporte para marcadores. La aplicacin tiene una parte abierta para desarrolladores que quieran crear sus canales de POI (puntos de inters), en su propio servidor. Para ello, primero hace falta registrarse como desarrollador, para que Junaio nos ofrezca una clave con la que podremos registrar nuestro servidor para que aparezca nuestro canal en la aplicacin de Junaio. Cabe destacar que el cliente solo funciona con su aplicacin propia, que es privada. Por el momento la nica API de servidor disponible es una librera basada en PHP. La informacin que se le enva al cliente de los puntos de inters, se le enva a travs de <mime-type>, y soporta texto plano, imgenes o modelos en 3D, los cuales solo pueden estar en formato md2 (lo que permite una carga soportable por red).

Imagen 2.7 Junaio

La API para el servidor de Junaio se basa en tres acciones diferentes: Subscripcin: Cuando un usuario se quiere conectar al servicio, Junaio enva una peticin al servidor que decide si este puede acceder o no. Bsqueda: Mientras la aplicacin cliente est encendida, de manera regular accede al servidor descargando los puntos de inters que se encuentran a su alrededor. Evento: Cuando el cliente interacta con un punto de inters, se enva un aviso al servidor el cual puede tomar las acciones necesarias.

A nivel de interaccin con el punto de inters por la parte del cliente, el servidor nos permite configurar un link para visitar una pgina web relacionada con este, pudiendo

Pgina 27

Estado del Arte calcular la ruta desde nuestra posicin hasta el POI a travs del servicio de Google Maps. En cuanto a su funcionamiento con marcadores, se basa en un sistema donde cada usuario puede crear sus propios marcadores a travs de su pgina web (ya que tienen un sistema de marcadores propios), y decirle las coordenadas de ese marcador. De esta manera, el sistema puede reconocer la posicin de un dispositivo, la cual mantiene durante 60 segundos.

Layar Layar es una API de aplicaciones de realidad aumentada disponible tanto para Iphone como para Android. La API permite la creacin de puntos de inters dentro de su sistema con una gran cantidad de parmetros de configuracin, pero la API cliente del mvil es privada y por tanto no adaptable a una aplicacin de mvil propia.

Imagen 2.8 Arquitectura de layar

En la arquitectura de layar, la aplicacin de mvil privada accede al servidor de Layar oficial. Esta parte es totalmente confidencial y no se tiene acceso a sus protocolos propios. Para la peticin de puntos de inters, el servidor oficial, despus de recibir una peticin por parte de la aplicacin, accede al servidor de usuario donde se guardan los puntos de inters a travs de la API de cdigo abierto que nos ofrecen. Si los puntos de inters estn basados en contenido de un servicio, se permite asociarlos. Por ltimo, para la creacin de los puntos de inters, se utiliza una interfaz web que comprueba la correcta definicin de estos en el sistema layar.

Pgina 28

Estado del Arte Las peticiones del servidor de layar al servidor cliente se hacen a travs de peticiones HTTP/1.1, a travs del mtodo GET. Cuando el servidor usuario recibe esta peticin, contesta a travs de JSON (Javascript Object Notation). Las definiciones de un punto de inters son bastante complejas en layar, por su cantidad de parmetros configurables. As pues, no solo se relata informacin del punto de inters, tambin se pueden definir colores, estructura, etc. Los puntos de inters permiten aadir iconos simples, objetos 3D, triggers por proximidad, audio asociado, etc. Una funcin muy til de este sistema es que cada layer en el que estemos suscritos nos permite aadir hasta cinco filtros de sus puntos de inters. Tambin permite la autentificacin contra los servidores propios para asegurar que solo un usuario vlido puede acceder a la informacin. Puesto que layar es un sistema bastante complicado de configurar dado sus mltiplos parmetros, se encuentran diferentes herramientas desarrolladas por terceras partes que ayudan a la creacin de los POI. Finalmente, existen actualmente gran cantidad de catlogos para Layar, algunos de compaas tan importantes como Youtube, donde se puede acceder a videos etiquetados geogrficamente o Flickr. Wikitude Wikitude es una API de realidad aumentada que funciona para Iphone, Android y algunos mviles con el SO Symbian. Est escrita en Java, y lanza como una llamada a la aplicacin, por lo que Wikitude es adaptable a cualquier desarrollo de software en un mvil compatible. Se requiere pero, pedir una KEY registrada para poder acceder al sistema completo de Wikitude, sin ella, se muestra una marca de agua en la pantalla y no se podr comercializar la aplicacin.

Imagen 2.9 Wikitude

Pgina 29

Estado del Arte El funcionamiento de esta API es diferente de las anteriores. Se necesita tener Wikitude instalado, permitiendo llamar a la aplicacin en cdigo de manera sencilla. Los puntos de inters son cargados manualmente en la llamada a la aplicacin, lo que nos permite ms flexibilidad, pero si trabajamos con bases de datos grandes en red, deberemos solicitar primero los puntos de inters con un protocolo propio y luego cargarlos manualmente. No se recomienda cargar ms de 50 puntos de inters en una llamada. Por ltimo, nos permite visualizar modelos 3D. Aunque por el momento no es posible mostrarlos con texturas.

J2ME RA No existe ninguna API actualmente de realidad aumentada para J2ME, aunque se han ya se han hecho diferentes pruebas y estudios. La principal ventaja de J2ME para construir una aplicacin de realidad aumentada es su portabilidad, ya que la mayora de los dispositivos disponen de J2ME. Lamentablemente, esto no es siempre cierto, puesto que existe fragmentacin en los terminales sobre la versin de Java.

ArtoolKit + ATOMIC Authoring TOOL + Studierstube ArtoolKit es un framework escrito en C ++ de realidad aumentada en Ordenadores. Funciona sobre Windows, Linux, MacOS y SGI IRIX. Artoolkit reconoce la posicin propia y orientacin en perspectiva de un marcador, y dispone de una plataforma para renderizado de imgenes a travs de OpenGL, lo que permite crear aplicaciones de realidad aumentada de manera rpida. Es de cdigo abierto, con licencia GPL, pudiendo hacer de est uso pblico, pero no comercial. ATOMIC Authoring TOOL es una aplicacin frond end para poder desarrollar aplicaciones usando la plataforma de Artoolkit sin necesidad de conceptos de programacin, de manera sencilla a travs de mens. Bajo licencia GPL, presenta la primera aplicacin creada para acercar la realidad aumentada a usuarios no familiarizados con estos sistemas. Como proyecto ms complejo de ArtoolKit, apareci la API Artoolkitplus (escrita tambin en C++), un sistema de reconocimiento de marcadores basado en ArtoolKit para dispositivos mviles. Esta versin pero, no dispona de funcionalidad de renderizado, ni se encargaba de conseguir las imgenes de la cmara, funcionalidades que tocaba desarrollar al programador. El proyecto dejo de actualizarse en el 2006, dejando paso a su sucesor Studierstube Tracker.

Pgina 30

Estado del Arte Studierstube Tracker es una librera de visin por computador, que permite conocer a travs de marcadores, la posicin del objeto en perspectiva del observador (en este caso, la cmara). Funciona tanto para: Ordenadores: Windows XP, MacOs, Linux. Dispositivos mviles y PDA: Windows CE, Windows Mobile, Symbian, Iphone.

Studierstube est preparado para reconocer marcadores en videos a tiempo real, utilizando pocos recursos (un 5% de los recursos usados por ArtoolkitPlus). Studierstube pero, no consigue las imgenes de la cmara web, ni trabaja con el hardware, ni renderiza imgenes, por lo que todas estas tareas las debe programar el desarrollador.

2.2.5 Aplicaciones de realidad aumentada para mviles Existe actualmente un mercado creciente de aplicaciones de realidad aumentada con la llegada de los dispositivos mviles de nueva generacin, o Smartphone. Podemos ver una serie de ejemplos de aplicaciones actuales: Vidente: Es una aplicacin de realidad aumentada que fue desarrollada por diferentes agencias de investigacin austriacas. Permite visualizar las instalaciones

subterrneas, tales como caeras, cables, as como entidades de tipo cartogrfico, sobrepuestas a la imagen de una cmara real. Tambin aporta una herramienta que muestra la posicin de las instalaciones en 3 dimensiones, segn su profundidad. Esta aplicacin, construida para el UMPC de Sony Vaio, necesita tambin de un joystic al que se adapta el UMPC, y que incluye un GPS para el clculo de la posicin y una unidad de clculo de orientacin del dispositivo. Est basado sobre la plataforma Studierstube, un framework de desarrollo de aplicaciones RA. Vidente carga la informacin geolocalizada de instalaciones subterrneas de una base de datos, que combina con la posicin del terminal para crear la RA. Esta aplicacin est dirigida a posibles trabajos sobre infraestructuras, tales como inspeccin de terrenos, planificacin y preparacin de tareas de excavacin. Twittaround: Es una aplicacin de realidad aumentada diseada para trabajar con twitter. Accesible solo para Iphone, la aplicacin permite geolocalizar los twitts de nuestros amigos, visualizando los twits por realidad aumentada. Nearest tuve: Una aplicacin de realidad aumentada desarrollada por acrossair nicamente para Iphone, entre muchas otras que esta compaa se encarga de

Pgina 31

Estado del Arte desarrollar. Se trata de una aplicacin que superpone en la pantalla, por encima de la vista de la cmara, indicadores sobre la posicin y la distancia en la que se encuentran las diferentes paradas de metro en nuestra ciudad. TAT Augmented ID: TAT Augmented ID es una aplicacin desarrollada por la empresa TAT de realidad aumentada, que permite asociar diferentes perfiles de diferentes redes sociales o aplicaciones de internet a la imagen de la cara. Esta aplicacin, no funciona a travs de ningn sistema de localizacin. As, se hace un registro haciendo una foto de la cara, y el dispositivo mvil consigue de la imagen un identificador. Luego se le asocian diferentes perfiles de redes sociales. Una vez configurado, cualquier persona con esta aplicacin, puede apuntar con su cmara a la cara para que aparezca a travs de realidad aumentada informacin sobre los perfiles que se han configurado. 2.2.6 Proyectos en realidad aumentada Enkimet Enkimet es un proyecto en desarrollo para Nokia N series y Android de realidad aumentada por Geolocalizacin mezclada con Google Maps y Google Earth. Con ello, una vez seleccionado un punto de inters, se puede visualizar en el mapa, a travs de la cmara web por realidad aumentada, o se puede ver a travs de una vista de Google Earth. Claramente, este sistema necesita de una conexin a datos de gran capacidad, ya que las imgenes de Google Earth son muy pesadas.

Imagen 2.10 Enkimet

Morfeo Libre Geosocial Morfeo Libre Geosocial es un proyecto en desarrollo de la comunidad Morfeo, una incubadora de proyectos de investigacin que implica a empresas, universidades,

Pgina 32

Estado del Arte centros tecnolgicos y administracin pblica. Es un proyecto de cdigo abierto, que se basa en una mezcla de redes sociales y contenido geolocalizado. Desarrollado para Android, permite geolocalizar informacin como texto, audio, fotos, tanto en un plano como en altura. Tambin desarrolla un sistema de alarmas por proximidad a una zona. La aplicacin, funciona compartiendo informacin con diferentes plataformas como Gmail, Facebook, etc, y es capaz de desarrollar un perfil del usuario para mostrar todo aquello que puede interesarle.

Pgina 33

Estado del Arte

2.3 Proyeccin de mapas


2.3.1 Introduccin Llamamos sistemas de proyeccin a aquellas tcnicas que permiten representar un trozo del planeta en un plano en 2 dimensiones. Al intentar proyectar un objeto esfrico en un plano en 2 dimensiones, se producen una serie de distorsiones, que dificultan definir el sistema de coordenadas. Hay que contar tambin con que la tierra no es realmente redonda, sino que se asemeja ms a un elipsoide, aunque realmente su forma se denomina como Geode, una figura irregular. As pues, no se conoce an ninguna manera de proyeccin que no deforme el mapa, aunque las diferentes tcnicas tratan de minimizar el efecto. El uso de estas tcnicas es importante a la hora de asignar coordenadas y trabajar con sistemas de posicionamiento. Hay que tener en cuenta tambin que este efecto es casi despreciable cuando se abarcan zonas pequeas. UTM (Universal Transversal Mercator) La proyeccin UTM es una de las tcnicas ms usadas, entre los pases que la usan se encuentra Espaa. Est tcnica suele definir las coordenadas en el mapa en metros o en kilmetros, aunque en sistemas de SIG se suele utilizar metros para evitar la aparicin de decimales. Est basada en la proyeccin Mercator. Mercator La proyeccin Mercator se ide en 1569, y se basa en proyectar la superficie de la tierra en un cilindro. Una manera fcil de verlo, es poner un globo dentro del cilindro, e hincharlo hasta que la superficie del globo se imprima en las paredes del cilindro. Este sistema produce bastantes distorsiones, pero es vlido para el uso de zonas pequeas. Es por ello que sistemas como Google Maps o Virtual Earth lo utilizan. WGS84 Creado en el 1984, es el sistema en que se basa el sistema de posicionamiento global (GPS), marcando latitud y longitud. El sistema realmente ofrece tres coordenadas, en 3 dimensiones (grados, minutos y segundos), que representan una serie de ngulos desde el centro de la tierra, pero por cuestin de comodidad se convierte a un sistema cartesiano (2 dimensiones). 2.3.2 Geocodificacin La geocodificacin es el proceso de asignar coordenadas geogrficas a puntos del mapa (que pueden representar diferentes puntos de inters). Con esta informacin, el SIG es capaz de especular generando informacin que no dispone a travs de la que

Pgina 34

Estado del Arte conoce. Por ejemplo, si se conoce algunos nmeros de casas de una calle, se puede interpolar, suponiendo que entre casa y casa hay la misma distancia, la posicin de los otros nmeros. Otro sistema parecido es la geocodificacin inversa. En este caso, lo que se hace es asignar un punto de inters a unas coordenadas concretas. Un ejemplo, podra ser, con una aplicacin mvil, estando en frente de un museo, guardar en una base de datos su posicin.

2.3.3 SIG Introduccin Los SIG son sistemas de mapas digitalizados que guardan datos geogrficos diseados para que, a travs de un software, se puedan capturar, almacenar, editar, estudiar y analizar de manera sencilla haciendo uso de las nuevas tecnologas. Generalizando, se podra decir que se trata de una base de datos, sobre la cual se pueden hacer consultas de manera sencilla sobre datos geogrficos. Versiones conocidas de un SIG son por ejemplo, aplicaciones como Google Maps, o Google Earth. Los SIG tienen mltiples funciones en diferentes mbitos, como por ejemplo, calcular las rutas ms cortas, calcular niveles freticos del suelo o anlisis catastrficos. Funcionan a travs de lo que se denominan capas. Usando un mismo sistema de coordenadas, cada capa tiene un nivel diferente de informacin agrupada, como por ejemplo, una capa de carreteras, otra de ros, otra de informacin de altitud. Esto permite aadir o quitar informacin asociada de manera sencilla para casa caso. Tambin permite, focalizando en un punto, obtener informacin de cada una de las capas. Los SIG pueden resolver: Localizacin: Propiedades de una coordenada Condicin: Se lanza una condicin para ver qu zonas la cumplen y cules no. Tendencia: Comparacin entre dos posiciones distintas. Rutas: Clculos de rutas ptimas. Modelos: Generar modelos para ver como una determinada accin influye en el mapa.

Pgina 35

Estado del Arte Representacin de datos Los elementos de una capa de un SIG se pueden representar de diferentes maneras, segn su uso, los dos ms conocidos son el mtodo Raster, y el mtodo Vectorial, aunque el mtodo vectorial es el usado ms comnmente.

El mtodo Raster: Se basa en definir toda la zona que abarca un mapa en una malla. As, nos quedan un gran nmero de pequeas celdas regulares, a cada cual se le asigna una propiedad dentro de la capa. Tiene diferentes sistemas de almacenamiento, pudiendo representarse en ficheros binarios (BLOB), o en ficheros de imagen JPEG, asignando un color a cada propiedad, por lo tanto, asignando colores a las celdas. El mtodo Vectorial: Este es el sistema ms utilizado a la hora de representar los datos en capas. Ms que definir propiedades de pequeas celdas, lo que busca es definir con precisin la localizacin de diferentes elementos geogrficos. Para guardar esta informacin, se utilizan tres elementos geomtricos, el punto, la lnea y el polgono. En el punto, se asigna a una coordenada especfica una propiedad. Esto no influye pues, a las coordenadas que le envuelven, como pasara en el mtodo raster. Suelen ser usadas para definir puntos de inters. En una lnea, se asigna una propiedad a todas las coordenadas que van desde un cierto punto hasta otro. Suelen ser usadas para definir ros, carreteras, lneas ferroviarias, etc. Por ltimo, en un polgono, se definen una serie de puntos trazando rectas, definiendo una figura cerrada, y se asigna una propiedad a todos aquellos puntos que quedan dentro de la figura. Suelen ser usados para definir edificios, parcelas, lagos, etc.

Renderizado Los sistemas de renderizado son aquellos que, a travs de la informacin de las capas de un SIG, son capaces de mostrarnos esta informacin generando una imagen. Un ejemplo es Open Street Maps, que genera sus mapas a travs de diferentes tcnicas de renderizado , que podemos seleccionar desde su aplicacin web. El funcionamiento de estos sistemas en apariencia es parecido, se le ofrecen una serie de capas de informacin, se define un tamao de la vista, se define una escala de la vista, y se genera la imagen. Pero cada una de ellas acepta tipos de datos diferentes, genera ficheros diferentes y es accesible en plataformas diferentes.

Pgina 36

Estado del Arte

Osmarender: Osmarender es un sistema basado en reglas para generar ficheros SVG (ficheros de grficos vectoriales que interpretan los navegadores). Realmente no renderiza una imagen, sino que aplica una transformacin del formato de un fichero a SVG. Est escrito en JavaScript y Python, y corre sobre un servidor web. Osmarender es usado por Open Street Maps, por lo que se puede convertir de .osm a SVG.

Mapnik Mapnik es un programa gratuito escrito en C++ y Phyton que permite generar mapas a travs de informacin de capas, de las cuales soporta los formatos ESRI shapefiles, PostGIS, TIFF rasters, .osm, GDAL o OGR, gracias a convertir cualquier formato a PostGIS (su nativo), a travs de la aplicacin osm2pgsql. Es el sistema principal que usa Open Street Maps para renderizar sus mapas a travs de su servidor tile.openstreetmap.org.

2.3.4 Mapas de carreteras existentes Existen gran variedad de mapas SIG de carreteras, algunos abiertos como cdigo Open Street Maps, creado por una comunidad de internet sin nimo de lucro, y otros propios y privados de algunas empresas, como Nokia. Categorizaremos pero, en accesibles por internet o accesibles en memoria, ya que esta clasificacin se adapta ms a las necesidades de nuestro proyecto. Vemos algunos ejemplos de mapas de carreteras.

Por Internet: Google Maps, Open Street Maps, CloudMade, Navteq, Bing Maps, Yahoo Maps Descargables: TomTom, Garmin, Nokia Ovi Maps

Pgina 37

Estado del Arte 2.3.5 APIs de mapas en mviles. En el momento de realizacin de este proyecto, nicamente se ha encontrado una sola API que funcione con sistemas Android, MGMaps. MGMaps Lib SKD MGMaps es una API libre escrita en Java que proporciona una interfaz para mostrar mapas geocodificados de manera sencilla. Esta plataforma est disponible para uso en Android, BlackBerry y J2ME. Permite mostrar mapas, definir rutas, definir puntos de inters, bsquedas por geocodificacin (direcciones, lugares). Su licencia GPL permite usarla para proyectos de cdigo abierto, aunque tambin dispone una licencia comercial. Estas son algunas de sus caractersticas: Mapas: Se pueden usar mapas de dos maneras diferentes, descargables online para terminales con conexin a internet (OpenStreetMap, CloudMade, Microsoft Maps...) o mapas guardados en el terminal, ya sea dentro de la aplicacin o en una memoria externa al programa. Proyecciones: A la Hora de proyectar los mapas en pantalla, permite el uso de las tcnicas WGS84, Spherical Mercator, Mercator, y permite tambin definir proyecciones propias. Objetos en el mapa: La API permite aadir diferentes tipos de objetos relacionados con los puntos de inters, como puntos, lneas o polgonos. Servicios de ruta: Permite calcular rutas para ir de una posicin a otra, utilizando servidores basados en OpenStreetMaps (CloudMade y

Yournavigation), o definir nuestros propios servidores utilizando la tcnica OpenLS.

Pgina 38

Estado del Arte

2.4 Sistemas de categorizacin de productos


2.4.1 Introduccin Un problema importante a la hora de desarrollar una aplicacin que trabaje con una gran cantidad de datos sobre productos y servicios es como estructurar esta informacin, como agruparla por categoras o tipos. La necesidad de una base de datos flexible, capaz de adaptar nuevas categoras y productos, y la facilidad a la hora de procesar esta informacin a travs de un ordenador, que trabaja mejor con cdigos que con texto, hace esta tarea difcil y costosa. Por ello aparecen los catlogos de bienes y servicios. Estos son una organizacin de productos y servicios codificada basada en diferentes mtodos y procesos aceptados internacionalmente, los cuales permiten, conociendo un cdigo especifico, saber con gran facilidad a que clasificaciones pertenece. El propsito de estos catlogos es encontrar una clasificacin unificada para esta informacin, y hacerla fcilmente manejable y disponible una vez digitalizada. Este proceso sigue una serie de pasos:

Imagen 2.11 Creacin de un sistema de categorizacin

Partiendo de una lista desordenada de miles de productos y servicios, se analizan, buscando puntos de conexin entre ellos. A continuacin, se crea una clasificacin partiendo de la informacin que se ha encontrado anteriormente con el anlisis. Se clasifica cada producto y servicio asignando un cdigo especfico, y por ltimo se

Pgina 39

Estado del Arte publican estos datos para su uso posterior por otras compaas. Claramente, este es un proceso retroalimentado, que necesita de continuos ajustes, nuevas clasificaciones, aadir nuevos tipos de productos, borrar productos obsoletos, etc. Por ello, es necesario el mantenimiento continuo de estos catlogos. Este sistema ofrece diferentes ventajas: Facilidad de anlisis: Una estructuracin fcilmente procesada por un ordenador nos facilita la creacin, adaptacin o importacin de aplicaciones y mtodos analticos con la informacin de productos y servicios. Facilidad de control: El uso de una misma codificacin a travs de toda la empresa permite un mejor control de la informacin a travs de todos los procesos que trabajen con estos datos. Facilidad en la bsqueda: Este sistema permite buscar informacin sobre servicios o productos de manera sencilla, ya que es el ordenador quien se ocupa de filtrar la informacin.

2.4.2 Introduccin a sistemas de productos y servicios estndar Con la llegada de internet, se puso de manifiesto la necesidad de una clasificacin estndar con la que todas las empresas pudieran trabajar, compartiendo informacin sin necesidad de traducir o reclasificar. Por ello, se crearon diferentes tipos de estndar prefijados en categorizacin de productos o servicios, como puede ser el UNSPSC o el ECLASS. Las ventajas de utilizar un sistema estndar se basa en tres puntos clave: Econmica: El uso de un estndar ya definido nos exime de la creacin y mantenimiento de la estructura de productos, la cual puede ser realmente costosa. Estndar de datos: El uso de la misma codificacin permite el flujo de informacin de diferentes empresas, distribuidores o proveedores. Por lo tanto, no es necesaria la conversin de datos, lo que facilita la interaccin entre entidades. Este punto es clave en el comercio electrnico, donde una empresa puede vender diferentes clases de productos trabajando con una multitud de proveedores.

Pgina 40

Estado del Arte Idioma: El uso de un estndar por cdigos nos habilita al trnsito de datos sin la necesidad de traducir o entender otros idiomas, si el estndar est traducido previamente. Elimina por ello tambin ambigedades del idioma o malas traducciones.

2.4.3 UNSPSC Descripcin [1] UNSPSC (United Nations Standard Products and Services Code), es uno de los cdigos ms utilizados actualmente, tanto por sus ms de 16.000 clasificaciones, como por su frecuente actualizacin. Es un sistema de codificacin para servicios y productos creado para el uso del mercado global. Se desarrollo en 1998, y gestionada y promovida por la ECCMA, creada en 1999 para esta tarea, una asociacin sin nimo de lucro que se encarga de de desarrollar, investigar y promover la calidad de los datos en el comercio electrnico. En 2003, la GS1 US empez a encargarse de administrar este estndar, una asociacin sin nimo de lucro encargada de desarrollar diferentes tipos de estndares, y respaldada por la ONU desde el 2003. En un principio, se desarrollo con fines nicamente estadsticos. Este cdigo esta accesible totalmente gratuito en 14 idiomas diferentes, entre los que se encuentra el castellano. El sistema nicamente marca clasificaciones de productos, clases y subclases, pero no incluye productos finales.

Sistema de codificacin Su sistema de clasificacin es jerrquico, y se compone de los siguientes componentes: Key: Este campo es un identificador de un tipo de producto, sin clasificacin alguna, y de manera totalmente desordenada. Code: Es un nmero de 8 dgitos, que identifica a una clase de producto, con una clasificacin marcada por parejas de dgitos.

Pgina 41

Estado del Arte

Imagen 2.12 Codificacin en UNSPSC

Segn la UNSPSC, se definen las diferentes clasificaciones: Segmento: Una asociacin lgica de familias con propsito analtico Familia: Un grupo comn reconocido de inter-relacin de categoras de productos bsicos. Clase: Un grupo comn de productos bsicos que comparten una funcin Subclase: Un grupo de productos o servicios sustituibles.

As, por ejemplo, encontramos el cdigo <23131503> que nos indica: <23>: Industria manufacturera, maquinaria de procesamiento y accesorios <13>: Maquinaria lapidaria y equipamiento <15>: Equipamiento y suministros de esmerilado, lijado y pulido <03>: Ruedas de esmerilado

Ventajas Entre las ventajas de UNSPSC, encontramos las siguientes: 1. Facilidad en el anlisis: La estructura jerrquica simple de UNSPSC permite hacer de manera sencilla diferentes anlisis o estudios, pudiendo abrir una categora y ver todos los elementos que hay dentro. Esto adaptado a algn proceso de la empresa, por ejemplo, la compra, nos permite ver las compras de una clase especfica o hacer vistas generales. 2. Soporte Multilenguaje: UNSPSC est editado en 16 idiomas diferentes, lo que hace este sistema mucho ms accesible.

Pgina 42

Estado del Arte 3. Cambios en el esquema: El sistema de codificacin permite hacer cambios en la estructura o adaptar el esquema a la estructura interna existente de la empresa sin que los productos o servicios pierdan su valor prefijado en el estndar. 4. Consistencia: UNSPSC solo clasifica los productos una nica vez, por lo que no se encuentra un producto en diferentes categoras, lo cual hace de l, con ms de 18.000 categoras, un sistema consistente. 5. Constantes actualizaciones: El sistema de UNSPSC admite sugerencias de las empresas para las constantes actualizaciones o la entrada de nuevos productos o servicios. 6. Es gratuito: Este estndar es de uso totalmente libre, no es propiedad de ninguna empresa.

Ampliacin Gracias a su sistema de codificacin, es fcilmente ampliable, ya sea ampliando con mas bits el cdigo para aadir una nueva clasificacin, o a travs de un cdigo nuevo. Este ltimo se puede ejemplificar con la empresa Mer-link. Esta desarrolla un sistema de codificacin para productos basado en la clasificacin de UNSPSC. A parte de este cdigo de identificacin para categora de productos, aade un segundo cdigo, el cdigo de identificacin, para productos especficos particulares. Por ejemplo, si hablamos de una categora dentro de UNSPSC de reproductores MP3, el segundo cdigo de Mer-link, podra identificar dentro de esta categora al MP3 de la marca X con unas especificaciones exactas. Este sistema ampliara a ltima instancia UNSPSC para productos finales [3].

2.4.4 EOTD Introduccin EOTD es el acrnimo creado por la EECMA de Open Technical Dictionary. Es un cdigo estandarizado y estructurado, que identifica los productos de manera nica por sus propiedades. El proceso para encontrar los identificadores para la codificacin cumple con los requerimientos de la ISO 8000-110:2009 sobre calidad de la informacin, lo que hace este sistema muy robusto y de calidad.

Pgina 43

Estado del Arte eOTD es abierto y de dominio pblico. Fue creado por la EECMA despus de que dejaran de administrar la UNSPSC, que paso a manos de la GS1 US. Fue creado con el soporte de la DLIS (Defense Logistics Information Service) y la DLA (US Defense Logistics Agency). El estndar se encuentra oficialmente nicamente en ingls, aunque existen diferentes traducciones a otros idiomas hechas por usuarios. EOTD se basa en convertir catlogos, basados en un cdigo y su descripcin, en bases de datos computables por propiedades. El uso de cdigos abiertos hace que la informacin sea portable, extrable y comparable fcilmente fuera de las aplicaciones con las que fue creada. Es importante destacar, que todo y aunque EOTD se basa en definir productos finales, es compatible con algunos de los sistemas de clasificacin (UNSPSC, e-Class, CPV, HS, NAICS, FCS).

Sistema de codificacin Convertir un catalogo existente en una base de datos con el sistema EOTD se basa en cuatro puntos clave: 1. Clasificacin: EOTD identifica a un objeto como de una clase en particular, por ejemplo, tornillos. 2. Gua de identificacin: Si esta clase no est definida anteriormente, se definen las propiedades del objeto que interesan a la hora de trabajar con l, y que lo identifiquen de manera nica en comparacin a otro de similar. Un ejemplo prctico es, que requisitos necesitara conocer si yo quisiera comprar este producto. Por ejemplo, para un televisor, podra definir el tamao, la resolucin, la tecnologa que utiliza, etc. 3. Extraccin de valores: Se buscan los valores de las propiedades descritas

anteriormente a travs del catalogo principal. 4. Enriquecimiento de contenido: Se buscan las propiedades que definimos en el punto 2, que no encontramos en el catlogo inicial, y las aadimos. Entonces se le asigna un cdigo nico de producto.

Pgina 44

Estado del Arte Ventajas Gracias a este sistema, se consigue una estructura estndar y una identificacin nica sobre un producto en particular. Es ptimo al hacer una comparativa entre varios productos de la misma clase, ya que solo necesitamos conocer el cdigo que comparten entre ellos, y comparar los valores de sus propiedades. El ser un sistema gratuito asegura la disponibilidad de este sistema a todas las entidades.

2.4.5 E-CL@SS Descripcin E-CL@SS es un sistema de identificacin y caracterizacin de productos y servicios jerarquizado, fundado en el 2000 por una asociacin de diferentes empresas alemanas. Su sistema de clasificacin cumple con los requerimientos de la ISO 1358442, que especifica como clasificar las familias de productos, y con la IEC 61360-2, que define como se ha de montar un sistema de diccionario. En la versin actual (2010), eCL@SS dispone de 32.832 clases, con 51.327 palabras de bsqueda. Pero solo la mitad de estas clases disponen de una tabla de caractersticas especfica para la clase, las otras comparten una tabla de caractersticas general. Actualmente, el sistema oficial se puede encontrar en 8 idiomas, entre ellos el castellano. E-CL@SS es un sistema abierto, por lo que permite la libre descarga y uso de su sistema. Pero participar en el desarrollo, con la ventaja de poder influir en las clasificaciones, tiene un coste segn el nivel participativo y el tamao de la empresa. E-CL@SS no solo clasifica los productos en tipos, sino que tambin especifica y define tablas con propiedades para los productos finales. Sistema de codificacin Podramos decir que E-CL@SS se acerca a una mezcla de los sistemas de UNSPSC y EODT.

Pgina 45

Estado del Arte

Imagen 2.13 Niveles de clasificacin en E-CL@SS

Existen cuatro niveles jerarquizados diferentes a la hora de la clasificacin. De la misma manera que UNSPSC, se utiliza un nmero de 8 dgitos para la clasificacin de los productos, en parejas y de izquierda a derecha se definen cada uno de los niveles. En primer lugar encontramos el rea, donde se agruparan productos y servicios por reas generales, por ejemplo Comida, bebida y tabaco. A continuacin, los siguientes dos dgitos representan los grupos principales dentro de un rea, como por ejemplo, dentro de Comida, bebida y tabaco se encuentra el grupo principal Fruta. La tercera pareja de dgitos representan los grupos dentro de los grupos principales, en nuestro caso de fruta, podemos encontrar ctricos. Por ltimo, con los dos ltimos dgitos nos clasifican una clase de artculo en general. Por ejemplo, en dentro de ctricos, se encuentra el artculo limn. Los artculos solo tienen una nica

clasificacin, por lo que no podemos encontrar el mismo artculo en dos grupos diferentes. Hasta aqu el sistema funciona igual que UNSPSC. A continuacin, cada una de las clases de artculos, tienen asociada una tabla de propiedades de un producto. Mas o menos la mitad de estas tienen una tabla con propiedades especificas para la clase, mientras que la otra mitad comparten una tabla general para todas. A la hora de aadir un producto con esta clasificacin, no es obligatorio rellenar todas las propiedades de la tabla, sino que es adaptable al software o gestor en el que se use. La tabla se compone de una serie de propiedades clasificadas por un identificador de propiedad, el cual define el tipo de datos que soporta.

Pgina 46

Estado del Arte Ventajas Una de las principales ventajas de este sistema es que cubre a la vez la clasificacin de los productos como la especificacin de sus propiedades. Otra ventaja importante es la traduccin a 8 idiomas, lo que hace del sistema ms flexible. Por ltimo, se puede destacar que el que sea un sistema gratuito permite la disponibilidad para todas aquellas entidades que pretendan usarlo.

2.4.6 CPV Descripcin CPV es una clasificacin de productos y servicios de manera jerarquizada creada por la unin europea para normalizar los trminos al describir los objetos que aparecen en los contratos. Fue redactado en el 1993 y actualmente est compuesto de 9454 trminos. Se puede encontrar en las 22 lenguas oficiales que se encuentran en la unin europea.

Sistema de codificacin El sistema de CPV funciona con un vocabulario principal y uno secundario. El vocabulario principal se base de una codificacin de nueve dgitos, con los dos primeros para un primer nivel general, y luego cada dgito representa un nuevo nivel, hasta el ltimo que es nicamente de control, con lo que conseguimos una altura de 7 niveles. El primer nivel marca un mximo de 99 divisiones. A continuacin, dentro de cada divisin, encontramos diferentes grupos, dentro de estos, categoras, y dentro de las categoras, subcategorias con posibilidad de ms subcategorias dentro, y as hasta llegar a los 7 niveles de altura. Este vocabulario no funciona para descripcin de productos finales, sino solo para dar un sistema de categoras. Dispone tambin, de un vocabulario suplementario, que ayuda a las empresas a describir de manera completa a un objeto. Se basa en dos letras, que definen, la primera la seccin, y la segunda el grupo, dos dgitos que definen atributos y un dgito de control. El sistema para codificacin de un producto se basara entonces en encontrar un subgrupo que lo defina lo mejor posible, con la mejor precisin posible, y en caso necesario asignarle un cdigo suplementario para acabarlo de definir.

Pgina 47

Estado del Arte 2.4.7 Otros sistemas de clasificacin de productos NAICS NAICS es un tipo de codificacin para productos usada por empresas y por los gobiernos de EEUU, Canad y Mxico, con fines meramente estadsticos. La primera versin se cre en 1997, y en 2002 tuvo su primera revisin. Se basa en un sistema de 6 dgitos, donde los 5 primeros son generales entre los pases, y el ltimo designa la industria nacional. Los dos primeros dgitos corresponden al sector de negocio, el tercero al subsector, el cuarto al grupo de industria y el quinto a un tipo de industria particular.

Nato Codification System (NCS) Es un tipo de clasificacin para artculos. Es un estndar signado por la OTAN y patrocinado por otros pases fuera de la OTAN. Est diseado para servir de ayudas a la logstica en los procesos. Una de las ventajas ms importantes es la ayuda en la logstica de la cooperacin militar entre diferentes pases. A cada objeto, se le clasifica asignndole un nmero de 13 dgitos. 4 dgitos subministrados por la OTAN, 2 dgitos de la oficina nacional de codificacin, y 7 de un nmero identificativo.

2.4.8 Eleccin de un estndar Introduccin La eleccin sobre un sistema de clasificacin para productos es una tarea difcil. Primeramente, se puede elegir por un sistema propio o por un sistema ya estandarizado, con las ventajas e inconvenientes que supone cada uno. Si nos decidimos por elegir un sistema estandarizado, entonces nos encontramos con el problema de elegir uno de los muchos estndares actuales. Hay que estudiar cuales son las propiedades de cada catlogo, y ver cual se adapta mas a nosotros. La cantidad de informacin y el uso que queremos darle a esta, se adaptara mejor a un tipo de estndar o a otro. Pero no solo hay que tener en cuenta la empresa propia. Si tenemos que trabajar con otras empresas compartiendo informacin, hay que tener en cuenta que estos sistemas no permiten una traduccin de cdigo de un estndar a otro, ya que todos tienen clasificaciones diferentes y propsitos diferentes. Por ello, el entorno de la

Pgina 48

Estado del Arte empresa se puede convertir tambin en un factor decisivo a la hora de decidir sobre que estndar elegir. Tambin hay que tener en cuenta la actualizacin y mantenimiento del estndar. En un mercado activo donde la informacin cambia constantemente, no podemos depender de un sistema poco flexible y sin actualizarse.

Propiedades de los sistemas de clasificacin Se pueden extraer diferentes propiedades de los sistemas de clasificacin, lo que permite hacer una vista general rpida para ayudar a la eleccin. Primeramente, la definicin de clases de productos de cada sistema es diferente. As pues, depende normalmente sobre el uso final que se quiere de la informacin. Mientras unos se dedican a definirlos sobre las propiedades naturales del producto, otros definen los productos a travs de su uso final. Otra propiedad importante son las traducciones en las que se encuentra el sistema. Aunque comnmente con tan solo el ingls se puede desarrollar cualquier tipo de proceso, en estos sistemas, la clasificacin de los productos se hace a travs del lenguaje. As que realmente crea una barrera al aadir la posibilidad de dobles o malas interpretaciones de un lenguaje extranjero. Por lo tanto, como ms traducciones se pueden encontrar, ms flexible y usable es el sistema. La estructura jerarquizada es otra propiedad de algunos de estos sistemas. Este sistema es una gran ayuda a la hora de la localizacin de una clase para aadir un producto, para buscar informacin sobre una categora, como tambin para anlisis estadsticos. Pero hace mucho ms difcil la estructuracin El diccionario de propiedades, es una tabla de propiedades estndar para productos finales. Esta tabla puede ser general para todos los productos, o especfica para una clase de productos. Esto nos permite poder aadir a nuestro sistema a travs de esta tabla, la informacin sobre nuestro producto, con lo que se puede luego se pueden usar con sistemas electrnicos que usen este sistema de manera directa, o comparar con otros productos con mucha facilidad a travs de estas tablas. Algunos de estos diccionarios no tienen suficiente con definir estas propiedades solo con strings, as que ofrecen tambin tablas de tipos de formatos soportados.

Pgina 49

Estado del Arte Por ltimo, la bsqueda por palabras clave en el sistema, es una funcin muy importante, a la hora de un usuario sin una cierta experiencia sobre el sistema, pueda encontrar informacin rpidamente y de manera sencilla. Esto permite hacer bsquedas por palabras clave como categoras, propiedades de productos, nombres de clases, etc.

2.4.9 Ejemplos de aplicaciones actuales Google Shopper Google Shopper es una aplicacin para mviles de Google, la cual es capaz de recolectar informacin a travs de la cmara web para hacer una comparacin sobre los diferentes precios del mercado de un producto. Esta informacin la puede encontrar a travs de una foto directa al producto, un escaneo a travs de la cmara del cdigo de barras, o buscando por voz el tipo de producto, marca, etc. La base de datos que utiliza esta aplicacin es Google merchant center, una propuesta de Google, donde las tiendas, pueden enviar informacin sobre sus productos / stock / precios al servidor de Google, donde a travs de una pgina web o de diferentes aplicaciones los usuarios tendrn acceso a diferentes comparativas e informacin sobre estos productos. La estructura que utiliza Google Merchant es una estructura propia. Al margen de cmo funcione internamente, a nivel de interaccin con los usuarios externos, los cuales serian proveedores en este caso, se hace a travs de lenguaje, no de cdigos. Google Merchant tiene una estructura jerarquizada de productos, con 20 categoras globales, y diversos niveles de sub-categoras, hasta llegar a las clases. Este sistema por eso, no exige que las clases ltimas estn en el mismo nivel, por lo que dentro de una sub-categora nos podemos encontrar tanto una clase como otra sub-categora. A la hora de la descripcin de productos dentro de una clase, Google Merchant tiene una serie de campos obligatorios, unos recomendados y unos opcionales, siendo los mismos para todas las clases. Obligatorios: Condicin, Descripcin, Identificador, Link al producto, Precio y Nombre del producto. Cabe destacar que el identificador ser uno propio e nico que nosotros asignemos, no debe proceder de ningn estndar. Recomendados: Marca, Link a una imagen del producto, IBSN (un cdigo para libros), Manufacters part number, Product type (aqu es donde se especifica la

Pgina 50

Estado del Arte categora, grupo, y clase del producto), Universal product code (nmero inferior al cdigo de barras), peso del producto. Opcional: Color, Otro producto con el que es compatible, data de expiracin, altura, anchura, numero de modelo, etc.

Pgina 51

Diseo de la aplicacin

3. Diseo de la aplicacin
3.1 Requisitos funcionales

La aplicacin Mvil permite la mayora de las posibilidades, ya que esta trabaja conjuntamente con la aplicacin web. Por este motivo, algunas de las opciones de la web no se implementan en el Mvil, ya sea por falta de sentido o por no contar con ellas en una primera versin. Por otra parte, hay opciones no implementadas en la Web por imposibilidad de desarrollarlas en este entorno. En la siguiente lista, se engloban cuales son los requisitos funcionales, y cules de estos estn disponibles en la versin mvil, y cuales lo son en la versin Web:

En la aplicacin Mvil
Registro de usuario No

En la aplicacin Web
Si

Administracin de usuario

No

Si

Login de usuario

Si

Si

Aadir productos por bsqueda

No

Si

Aadir producto por marcador

Si

No

Sugerencias de productos

No

Si

Borrar productos

Si

Si

Listar productos

Si

Si

Ver productos por

Si

No

Pgina 52

Diseo de la aplicacin proximidad

Ver informacin productos

Si

Si

Buscar en lista de productos

Si

Si

Ver tiendas por producto

Si

Si

Ver tiendas por proximidad

Si

No

Ver tiendas por precio

Si

Si

Avisos de proximidad

Si

No

Opciones de avisos

Si

No

Llamar a una tienda

Si

No

Ver web de la tienda

Si

Si

Ver tiendas en mapa

Si

No

Ver ruta a tienda

No

No

Ver tiendas en RA

Si

No

Pgina 53

Diseo de la aplicacin

3.2 Requisitos no funcionales


Aunque no se han definido unos requisitos no funcionales estrictos, si que se ha desarrollado la aplicacin adaptando ciertos mtodos a la hora de desarrollar y en ciertas capacidades o lmites los cuales la aplicacin debera satisfacer.

rea
Carga de Internet

Descripcin
Se ha desarrollado la aplicacin intentando que la aplicacin haga el mnimo uso de internet, pudiendo as usarla conectando con una red Wifi eventualmente sin necesidad de una conexin de datos por 3G

Idioma

El idioma del cdigo estar en ingles, aunque se comentar en Espaol. El idioma de la aplicacin ser el Espaol, pero se externalizara todo fuera del cdigo para que la aplicacin de traducciones sea mucho ms rpida y eficiente.

Lenguaje de desarrollo

La programacin se desarrolla nicamente en el lenguaje de programacin de Android, Java, para la mquina virtual Dalvik

Versin de Android

La aplicacin se ha desarrollado para la versin 2.0 de Android. Esto significa que funcionara en versiones superiores, pero no para versiones anteriores (Android 1.6, Android1.5).

Pgina 54

Diseo de la aplicacin

3.3 Estructura del sistema


Para empezar a definir el diseo de la aplicacin, es necesario hacer una vista rpida al montaje de toda la infraestructura. En este punto se puede ver globalmente como est diseada la solucin. La solucin propuesta permite que el servidor que guarda la informacin de los productos y tiendas, y las preferencias de los usuarios, se comunique a travs de SOAP con los dispositivos mviles, y a travs de WEB con los navegadores. A continuacin se muestra un esquema de la infraestructura:

BBDD Global

Intenet

WEB (Joomla)

SOAP

Intenet

Imagen 3.1 Estructura del sistema GeoBuyMe

Pgina 55

Diseo de la aplicacin

3.4. Diagrama de estados


Se han desarrollado diferentes diagramas de estados segn las diversas tareas o funciones principales con las que el usuario interactuar. Estas funcionalidades se han dividido en: Funcionalidades bsicas: registro de la aplicacin y seleccin de producto. Funcionalidades sobre productos: Mapa, AR, Lector de Marcadores. Funcionalidades sobre posicionamiento.

A continuacin se describe cada una de las funcionalidades.

3.4.1 Registro de la aplicacin La primera funcionalidad que el usuario se encontrar es el registro de la aplicacin. Esta funcionalidad deber realizarse una nica vez para la creacin de la cuenta y/o el inicio de sesin. A continuacin se detalla el diagrama de estados de esta funcionalidad:

Imagen 3.2 Diagrama de estados de registro de la aplicacin

Inicio de sesin: Esta pantalla aparece nicamente si el usuario aun no se ha registrado, por lo tanto, el usuario no ha realizado nunca un inicio de sesin.

Pgina 56

Diseo de la aplicacin Comprobacin de datos: Una se han introducido los datos del usuario y se ha comprobado el estado de la red, se valida con el servidor para ver si ese usuario existe y le corresponde esa contrasea. Inicializacin de la aplicacin: Se descarga y se guarda un token que servir de identificador del usuario. Tambin se inicializa la base de datos y se descarga la base de datos actualizada de la clasificacin de productos.

3.4.2 Vista general Antes de continuar con los diferentes diagramas de estado, mostramos un diagrama bsico general del funcionamiento de la aplicacin donde se pueden ver separadas las funcionalidades de seleccin de producto, funcionalidades sobre los productos y la funcionalidad sobre posicionamiento.

Imagen 3.3 Diagrama de estados general - Vista global

Pgina 57

Diseo de la aplicacin Pgina Principal: Es la ventana que se muestra al abrir la aplicacin. En ella encontramos las siguientes acciones: o o o o o o o o Mi lista de productos Mi lista en Realidad Aumentada Mi lista en Mapa Aadir producto por Marcador (QR) Opciones (Al presionar el botn Men)

Opciones: En esta ventana se permite configurar la cuenta: Configurar Alertas por localizacin <Distancia, Frecuencia, Prioridad> Iniciar / Apagar el servicio de alertas. Reset de la cuenta (Borra la informacin de la cuenta y permite volver a registrar una cuenta nueva) Informacin de Producto: Engloba las ventanas en que se muestra informacin sobre el producto, informacin de las tiendas segn precio, distancia y ofertas. Se explica en ms detalle en la siguiente seccin.

QR: Permite aadir productos nuevos a la lista del usuario a travs de la cmara enfocando un marcador, asociado a un producto.

Pgina 58

Diseo de la aplicacin 3.4.3 Seleccin de un producto A continuacin vemos ms detallado el proceso de seleccin de un producto:

Imagen 3.4 Diagrama de estados de seleccin de un producto

Tipo producto: En esta ventana, se permite escoger si se accede a la lista de productos o servicios. Clasificacin de producto: Esta ventana muestra las diferentes

clasificaciones de productos segn los dos niveles. Una vez seleccionada una clasificacin, aparecen los productos de esa clasificacin. Seleccin de producto: En esta vista aparecen todos los productos de la clasificacin que se han seleccionado. Producto nico seleccionado: Es la ventana principal de un producto. Permite ejecutar diversas acciones relacionadas con ese producto. Bsqueda: Permite buscar por nombre entre los diferentes productos de la lista. Todos mis productos: Permite ver una lista con todos los productos vinculados a "mi lista".

Pgina 59

Diseo de la aplicacin Ver tiendas: Esta ventana muestra las diferentes tiendas (por compaa) que disponen del producto seleccionado. Tiendas cercanas: Muestra las tiendas ms cercanas que disponen de ese producto ordenadas por precio. Informacin: Muestra una descripcin y la imagen del producto seleccionado. Informacin tienda: En esta ventana aparece informacin sobre la tienda que se ha seleccionado, como la direccin, la web, etc. A continuacin se muestra una tabla con las opciones y mens que encontramos en cada una de las diferentes ventanas Nota: No se incluye la opcin "volver atrs" en los mens ya que en la mayora de aplicaciones Android se puede volver atrs con el botn "Atrs".

Opciones
Tipo Producto Servicio Producto Clasificacin Producto

Men

Ver todos Buscar

Seleccin de Producto

Ver todos Buscar

Producto nico seleccionado

Ver tiendas Ver tiendas cercanas Ver informacin Borrar producto

Ver tiendas

Ver en mapa Ver en realidad aumentada

Ver tiendas cercanas

Ver en mapa Ver en realidad aumentada

Informacin Producto

Borrar producto Ver tiendas Ver tiendas cercanas

Informacin Tienda

Ver productos Gestionar alerta de tienda

Pgina 60

Diseo de la aplicacin 3.4.4 Funcionalidades especiales Una vez definido el proceso de seleccin de un producto, y ver sus tienda/s asociada/s, la aplicacin ofrece diferentes funcionalidades que podemos ver en un diagrama de estados que muestra las diferentes situaciones en las que se pueden mostrar los mapas y la realidad aumentada, y como se comportan, o que opciones ofrecen en cada momento.

Imagen 3.5 Diagrama de estados de realidad aumentada y mapas

Lista de Tiendas: Este opcin muestra una lista de tiendas (similar a la opcin "seleccin de producto") que mostrarn el precio del producto relacionado.

Pgina 61

Diseo de la aplicacin 3.4.5 Notificaciones Por ltimo, se muestra el diagrama de estados que describe el funcionamiento de las notificaciones por proximidad:

Imagen 3.6 Diagrama de estados de alertas por proximidad

S: Servici en background del mvil que comprueba continuamente la posicin del dispositivo mvil y enva una alerta si se est prximo a un producto de inters. No es necesario que la aplicacin este activa para funcionar.

Notificacin: Notificacin estndar de Android. Permite borrar la notificacin o acceder a la aplicacin para atender la notificacin. Informacin Alerta: Permite ver la informacin de la alerta (informacin de la tienda).

Pgina 62

Diseo de la aplicacin

3.5 Capas de la aplicacin


En esta seccin se pueden ver las diferentes capas en las que se compone la aplicacin, y los paquetes que la componen. La mayora de ellos han sido desarrollados en java usando la librera de Android que, aparte de incluir las diferentes libreras de java bsico, incluye tambin libreras especficas para Android que son el ncleo de cualquier aplicacin para Android.

Capas
Interfaz de usuario

Paquetes Principales
com.Geobuyme

Tipo de Paquete
Desarrollado

Capa Gestin Aplicacin

com.DBObject com.LocObject com.ListAdapters com.Resources android.jar md5.jar

Desarrollado Desarrollado Desarrollado Desarrollado Propio de Android Externo[1]

Capa funciones especiales

Android_maps_lib.jar Wikitude_intent.jar com.qr

Externo[2] Externo[3] Externo[4]

Capa comunicacin

Ksoap2-android com.WSObject

Externo Desarrollado

1. http://santtu.iki.fi/programs/ 2. http://www.nutiteq.com/offline-maps-android-released 3. http://www.wikitude.org/ 4. http://code.google.com/p/ksoap2-android/

Pgina 63

Diseo de la aplicacin 3.5.1 Capa de Gestin de la aplicacin Android.jar Esta capa contiene las funciones bsicas de la aplicacin en torno a la gestin de la aplicacin y de las funciones del dispositivo mvil. As pues, se definen estas funciones en gestin de ventanas, gestin del sistema operativo, gestin de la base de datos, gestin de la localizacin, gestores de listas, y clases de objetos. La clase android.jar tiene todos los mtodos y es la que se encarga de toda la gestin tanto de los procesos grficos como servicios. As pues, toda aplicacin que se escribe ser una herencia de los objetos encontrados en esta clase. Incluso las clases desarrolladas para gestionar otras funciones se basan en su mayora en herencias de objetos de Android. Sera lo ms parecido posible al paquete java.jar de cualquier aplicacin Java. Android dispone de cuatro tipos diferentes de clases bsicas para instanciar a la hora de crear aplicaciones (Activity, Service, BroadCastReceiver y ContentProvider). Para esta aplicacin nos centraremos en los dos primeros. El primero, Activity, es el encargado de mostrar aplicaciones con interfaz en el mvil. Bsicamente, muestra las diferentes capas del diseo y objetos, y permite la interaccin entre ellos. Service se encarga de gestionar un proceso que funciona sin interfaz grfica y totalmente transparente al usuario. Este se puede activar cada cierto tiempo, o con diferentes alarmas programadas. BroadCastReceiver se encarga de gestionar los diferentes eventos programables de las aplicaciones. As, se usar nicamente para arrancar el servici de la aplicacin al encender el dispositivo mvil. A parte de estas, se definen las clases de Android mas importantes dentro de la aplicacin (usadas o heredadas).

Nombre

Descripcin

Clases heredadas

Android.app

Es

la

clase

que

contiene

las

diferentes

Si

implementaciones para la gestin de aplicaciones (Activity, Service, BroadcastReceiver...).

Pgina 64

Diseo de la aplicacin

Android.content

Contiene funciones basadas en el contenido de la aplicacin, como por ejemplo mostrar un diseo grfico, cambiar de clase dentro de la aplicacin o guardar claves (nombre, valor) persistentes.

No

Android.os

Contiene funciones de sistema operativo para gestin de recursos, como por ejemplo la clase Bundle, que permite pasar objetos de una clase (activity) a otra.

No

Android.widget

Contiene los diferentes layouts y views (Objetos y tipos de vistas) que aparecen en las pantallas (Botones, Cuadros de texto, etc.)

No

Android.view

Contiene las clases que permiten gestionar los diferentes layouts y views que aparecen en las pantallas (por ejemplo, definir una funcin de accin al presionar un botn).

No

Android.database

Contiene diferentes clases de ayuda para la gestin de las bases de datos

Si

Android.location

Contiene diferentes clases de ayuda para la gestin de la localizacin del dispositivo

No

Por

ltimo,

es

importante

remarcar

la

importancia

de

la

clase

android.content.SharedPreferences. Esta clase permite guardar de forma permanente y sencilla los pares (clave y valor) sin usar recursos disponibles para el usuario como un fichero xml, y sin tener que usar una base de datos sqlite3.

Pgina 65

Diseo de la aplicacin Ejemplo para guardar un valor:


SharedPreferences preferences = getSharedPreferences("preferences",0); SharedPreferences.Editor editor = preferences.edit(); editor.putString("token", token); editor.commit();

El uso de esta clase nos permite un mtodo muy eficiente para guardar informacin sobre la aplicacin. Definimos pues, las claves que se generan y a que fichero de preferencias pertenecen.

Nombre
Token

Descripcin
Guarda el token asignado al usuario

Tabla
preferences

Distance

Guarda la distancia a la que un punto de inters debe estar para aparecer como alerta

alerts

Priority

Guarda la prioridad a la que un punto de inters debe estar o superar para aparecer como alerta

alerts

alert_time

Guarda la frecuencia con la que la aplicacin gestionara las alertas por proximidad.

alerts

productdelete Informa si existe un objeto a borrar del servidor

products

Productadd

Informa si existe un objeto a crear en el servidor

products

Status

Informa si el usuario ha activado o desactivado las alertas (no activa o desactiva el servicio, ya que depende de este el aadir o borrar productos).

service

com.BDObject Este paquete contiene las funciones necesarias para la creacin, inicializacin y gestin de la base de datos. Sobre-escribe el objeto de android DBOpenHelper,

Pgina 66

Diseo de la aplicacin personalizando la creacin y las funciones de eliminacin de la base de datos. A continuacin, se describen los diferentes mtodos de gestin de los contenidos y las consultas a la base datos usando las funciones que ofrece DBOpenHelper. La base de datos contiene siete tablas: PRODUCT almacena los diferentes productos en los que el usuario est interesado. SHOP guarda todas las tiendas que contienen alguno de los productos. PRODUCT_SHOP guarda la relacin entre la tabla de productos, del tipo <Tienda,Producto,Precio>. FAMILY guarda los identificadores de las familias de productos y los nombres de estas. CATEGORY guarda los identificadores de las categoras de productos y los nombres de estas. NEWPRODUCT almacena los marcadores (QR) de aquellos productos que se aadirn a la lista de productos del servidor i del dispositivo una vez el mvil disponga de conexin a internet. DELETEPRODUCT guarda los identificadores de los productos eliminados de la tabla productos, y que sern eliminados del servidor (aplicacin web) en el momento de que la aplicacin disponga de conexin a internet. Se definen entonces, las funciones importantes desarrolladas para la aplicacin:

Nombre
insertFamilies() insertCategories()

Descripcin
Funciones para insertar nuevas clasificaciones productos. para los

Tabla implicada
Family, Category

insertProduct() deleteProduct() insertShop() insertProductShop()

Funciones para insertar / Borrar productos, tiendas y referencias entre estos

Product, Shop, Product_Shop

drop()

Borra todos los contenidos de la base de datos

All

Pgina 67

Diseo de la aplicacin

dropMyList()

Borra

los

contenidos

de

las

Product, Shop, Product_Shop

preferencias del usuario

getFamiliesProduct() getFamiliesService()

Funciones que devuelven familias de productos/servicios

las

Family / Category

getShop() getProduct()

Funcin que devuelve una tienda segn identificador

Shop / Product

getAllShops() getAllProducts()

Funciones que devuelven todos los productos / tiendas.

Shop / Product

getCategoriesFamily()

Funcin

que

devuelve

las

Category

categoras que existen dentro de una familia.

getProductsCategory()

Funcin

que

devuelve

los

Product

productos de una categora

getShopsByProduct() getProductsByShop()

Funcin que selecciona todas las tiendas de un producto / todos los productos de una tienda

Product, Shop, Product_Shop

getNearShopsByProduct()

Funcin que selecciona todas las tiendas cercanas de un producto

Product, Shop, Product_Shop

getProductByQR

Devuelve un producto por el valor de su marcador asociado

Product

newProduct()

Funcin que guarda un producto por QR como pendiente a

Newproduct

actualizar

getNewProducts()

Funcin que devuelve una lista de los productos nuevos a aadir

Newproduct

Pgina 68

Diseo de la aplicacin

deleteNewProducts()

Funcin que elimina un producto que estaba pendente a actualizar

Newproduct

newPendingForDelete()

Funcin

que

guarda

el

Deleteproduct

identificador de un producto a borrar

getPendingForDelete()

Funcin que devuelve una lista de los productos a eliminar

Deleteproduct

deletedProducts()

Funcin que borra un producto que estaba pendiente de eliminar

Deleteproduct

setIgnore()

Funcin que define si se mostrar una tienda en las alertas o no

Shop

searchProducts()

Devuelve coinciden

los en

productos una

que

Product

bsqueda

segn un patrn

getAlertsShop()

Devuelve las tiendas que se mostrarn proximidad. como alertas de

Product, Shop, Product_Shop

Un ejemplo de una consulta bsica (acceso a una sola tabla) a la base de datos:

public Double getPrice(Long id_prod, Long id_shop) { Double price; Cursor cursor = null; Try { Cursor = this.db.query(DBObject.DB_PRODUCT_SHOP, price, id_shop = + id_shop + AND id_prod = + id_prod, null, null, null, null);

Pgina 69

Diseo de la aplicacin Esta consulta guarda el resultado de la query dentro del cursor cursor, y solo es necesaria la gestin de este recurso para extraer la informacin deseada. Para ello, se usa el objeto android.database.sqlite.SQLiteDatabase, que ofrece diferentes funciones auxiliares para insertar, modificar o eliminar objetos.

com.LocObject Este paquete se encarga de gestionar la localizacin del dispositivo Mvil. Para ello hace uso de los objetos de Android <LocationManager, LocationProvider y LocationListener>. Gracias a estos objetos, se consigue implementar mtodos que consulten tanto la disposicin de la localizacin como la posicin por GPS y por Redes. Se definen entonces las funciones implementadas para el desarrollo de la aplicacin:

Nombre
enableGPS(), enableCell()

Descripcion
Funcin que activa la localizacin del dispositivo por GPS/Celdas,Wireless

isEnabledGPS(), isEnabledCell()

Funcin que informa si la localizacin GPS o por celdas esta activa

disableGPS(), disableCell()

Funcin que deshabilita la localizacin del dispositivo por GPS/Celdas,Wireless

getLocation()

Funcin que devuelve la localizacin del dispositivo.

MyGPSLocationListener(), MyCellLocationListener()

Clases de Android implementadas que definen las acciones al conectar / desconectar con un

proveedor, o al cambiar la localizacin

As pues, se puede conocer la localizacin del dispositivo fcilmente, haciendo las siguientes llamadas, por ejemplo, para conocer la posicin a travs de GPS.

LocObject loc = new LocObject(this);

Pgina 70

Diseo de la aplicacin
if (loc.isEnabledGPS()!=false) loc.enableGPS(); Location location = loc.getLocation();

com.Resources Este paquete dispone de recursos necesarios para el funcionamiento de la aplicacin. ProductObject: Esta clase define la informacin de la que se compone un producto y sus funciones. As, un producto se compone de <identificador, nombre, marcador QR, descripcin, categora, prioridad>, y de sus funciones creadoras. ShopObject: Esta clase define la informacin de la que se compone una tienda y sus funciones. As, una tienda se compone de <identificador, nombre compaa, latitud, longitud, altitud, telfono, email, direccin, ignorar>. El campo ignorar, define si esa tienda ha de ser ignorada para las alertas o no. ProductShopObject: Esta clase define el objeto que relaciona las tiendas con los productos. Se compone de <identificador producto, identificador tienda, precio>.

com.ListAdapter Este paquete contiene diferentes Adaptadores de Listas de Android, que definen la forma en la que se muestran y se comportan los objetos a la hora de encapsularlos en una lista de Android.List. Para ello se hereda la clase de BaseAdapter del paquete Android.widget y se define con: Como contar el numero de objetos Que objeto devuelve al hacer una seleccin Que identificador devuelve al hacer una seleccin Como se muestra grficamente cada una de las posiciones de la lista

En el proyecto ha sido necesario crear los diferentes ListAdapters: StringAdapter: Creado para mostrar categoras / familias. nicamente define el formato a mostrar de las cadenas de caracteres i el identificador a devolver al hacer click en un objeto. ShopListAdapter: Creado para mostrar una lista de tiendas, define como mostrar la informacin de esta, que es el nombre de la tienda y la direccin de esta.

Pgina 71

Diseo de la aplicacin ProductListAdapter: Creado para mostrar una lista de productos, define como mostrar la informacin de estos, que es nicamente el nombre. Tambin se define el identificador a devolver al hacer click sobre un objeto de la lista. md5.jar Este objeto dispone de diferentes mtodos que permiten conseguir el clculo MD5 de una cadena de texto. Al hacer la validacin contra una base de datos de Joomla, se necesita enviar el password encriptado de esta forma para que no pueda ser capturado. El sistema de encriptacin de passwords en Joomla se basa en, a travs de un SALT, hacer un MD5 de este conjunto el password. As, los passwords en la base de datos de joomla se guardan de la siguiente forma:

md5(concat(PASSWD,SALT)):SALT

Por ello, md5 es necesario en el momento de encriptar el password para su validacin contra el servidor.

3.5.2 Funciones especiales La capa de funciones especiales se basa en dos objetos externos que permiten las tres funciones especiales de las que no dispone Android de manera genrica, los mapas en funcin offline, la realidad aumentada y la lectura de marcadores.

Android_maps_lib.jar Esta API ha sido creada por la compaa Nutiteq, bajo licencia GPL. Permite mostrar mapas de diferentes orgenes (googlemaps, openstreenmaps, Cloudmade, etc..). Tambin permite la posibilidad de usar mapas guardados en la tarjeta de memoria del dispositivo Mvil. A parte de mostrar el mapa, ofrece las opciones de Zoom, de mostrar diferentes puntos a los que se asignar una informacin y una accin al hacer click, diferentes configuraciones de aspecto, y la eleccin del origen de los datos (ya sea por internet o en modo offline).

Pgina 72

Diseo de la aplicacin Para llamar a esta API es necesario crear una Activity y a continuacin llamar a los mtodos de la API para la carga de mapas, creacin de mens, muestra de mapas y creacin de objetos sobre el mapa. Se ha configurado la API de manera que los mapas son cargados solamente en la tarjeta de memoria, dentro de una carpeta llamada maps. El origen de estos mapas es la plataforma OpenStreetMaps. La aplicacin permite aumentar i disminuir el mapa del nivel 6 (nivel ms alejado) hasta el nivel 16 (nivel ms cercano). Esto significa que se permite mover entre 10 niveles de Zoom. Por ltimo, se han configurado las diferentes opciones que se permiten al seleccionar una tienda. Centrar el mapa en el objeto seleccionado. Esta opcin permite seleccionar un punto de inters y centrar el mapa en esas coordenadas, lo que permite aumentar el zoom para encontrar una tienda sin necesidad de ir desplazando el mapa. Ver informacin de la tienda. Permite mover la aplicacin a la ventana en que se ofrece la informacin de la tienda. Ver productos. Permite ver una lista de los productos que dispone la tienda.

WikitudeIntent.jar Esta API ha sido creada por la compaa Wikitude para poder llamar a su aplicacin de realidad aumentada pudiendo hacer uso de su aplicacin definiendo puntos de inters propios. Para ello, no es necesario hacer uso de la API creando una activity, tan solo hay que preparar los puntos en los que se quiere mostrar informacin y llamar a la aplicacin externa con una funcin, de todo lo dems se encarga la API. Esto implica que la aplicacin debe estar instalada en el dispositivo. Al usar la API de Wikitude, esta comprueba si la aplicacin ha estado instalada. En caso de no ser as, muestra un mensaje que advierte de este hecho, y permite ir abrir el Market de Android para poder instalarla. Vemos un ejemplo de llamada a la aplicacin:

Pgina 73

Diseo de la aplicacin
WikitudeARIntent WikiIntent = new WikitudeARIntent(MapsView.this.getApplication(), null, null); WikiIntent.setPrintMarkerSubText(true); for(int i=0;i<shops.size();i++){ WikitudePOI poi = new WikitudePOI(shops.get(i).latitude, shops.get(i).longitude, shops.get(i).altitude, shops.get(i).company, shops.get(i).address + "\n" + shops.get(i).phone); WikiIntent.addPOI(poi); } try { WikiIntent.startIntent(MapsView.this); } catch (ActivityNotFoundException e) { AbstractWikitudeARIntent.handleWikitudeNotFound(MapsView.this); }

En este ejemplo se ve como se prepara un WikiIntent, que ser el encargado de llamar a la aplicacin Wikitude. A continuacin, se preparan las tiendas que se mostrarn a travs de realidad aumentada, y por ltimo, se llama a la aplicacin. Si alguna de las necesidades para llamar a la aplicacin no se cumplen, como por ejemplo no pasar la informacin de los puntos de inters a mostrar correctamente, se capturar la excepcin, y el objeto AbstractWikitudeARIntent, el cual es parte tambin de la API, se encargar de gestionarla. Wikitude pide el uso de una clave que ellos proporcionan para poder usar su API. En caso de no disponer de ella, la API funciona pero muestra una marca de agua en la imagen captada por la cmara.

com.QR Este paquete integra las dos clases necesarias para gestionar la aplicacin de BarCodeScanner que permite leer marcadores y que la aplicacin reciba el texto de este. As pues, estas dos clases permiten gestionar las llamadas a esta aplicacin de forma sencilla, adems de avisar con un mensaje de peticin de instalacin en el caso de que esta aplicacin no est instalada. Un ejemplo de la llamada a esta aplicacin:

public void onClick(View v) { IntentIntegrator.initiateScan(Home.this);

Pgina 74

Diseo de la aplicacin Este trozo de cdigo permite llamar a la aplicacin para que sta se encargue de leer el marcador. Una vez ledo, se gestiona la informacin de la siguiente forma:

public void onActivityResult(int requestCode, int resultCode, Intent intent) { IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);

Esta funcin es llamada al finalizar la aplicacin BarCodeScanner. El objeto scanResult contiene scanResult.getContents(), que indica el contenido de la lectura, y scanResult.getFormatName(), que da informacin del formato del marcador que se ha ledo. Una vez comprobado que el formato del marcador es el correcto, se aadir a una lista de espera de productos a aadir (se aadirn en el momento en el que el dispositivo disponga de conexin a internet).

3.5.3 Capa comunicacin ksoap2-android Este paquete contiene las diferentes clases y objetos que nos permiten la comunicacin con el servidor a travs del mtodo SOAP (Simple Object Access Protocol), que permite lanzar una funcin en un servidor usando una URL para enviar la peticin y las variables, y recibir a continuacin algn tipo de informacin en formato XML. Es una fork (adaptacin) de la librera ksoap2 escrita en Java para ordenadores. A partir del cdigo desarrollado en este paquete, se reescribe una nuevo y se adapta para que el mismo funcione tambin para Android.

// Funcin a una llamada getSalt().

SoapObject request = new SoapObject(targetNamespace, "getSalt"); request.addProperty("username", pedro); SoapObject soapcall = callWS((URL + "/getSalt"), request);

Pgina 75

Diseo de la aplicacin
AndroidHttpTransport httpt = new AndroidHttpTransport(URL); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope( SoapEnvelope.VER11); envelope.setOutputSoapObject(request); try { httpt.call(SOAP_ACTION, envelope); SoapObject soapObject = (SoapObject) envelope.bodyIn; return soapObject; }

com.WSObject Este paquete se encarga de gestionar las conexiones entre el servidor y la aplicacin, a travs de Soap usando la librera ksoap2-android. Es necesario desarrollar las diferentes funciones a las que se llamar en el lado del servidor. Las funciones de comunicacin necesarias para la aplicacin son:

Nombre
getSalt()

Descripcin
Esta funcin es la encargada de, pasando como parmetro un usuario, devolvernos el Salt correspondiente a este usuario.

loginAccount()

Esta funcin es la encargada de validar al usuario. Pasa como parmetro un usuario y un password encriptado. Si el usuario es vlido, el servidor devolver un Token que la aplicacin guardar. Si no, el servidor indicara que los datos de acceso son incorrectos.

getPointsOfInterest() Actualiza los objetos de Mi lista programados a travs de la interficie Web

addProduct()

Incluye un nuevo objeto a Mi lista aadido a travs de un marcador

deleteProduct()

Elimina un objeto de Mi lista

getFamilies

/ Actualiza la tabla de clasificacin de productos

Pgina 76

Diseo de la aplicacin GetCategories()

isNetworkOn()

Funcin que nos indica si se dispone de conectividad a Internet

Axis2 En la parte del servidor, se han desarrollado diferentes funciones de red utilizando la tecnologa SOAP. Este es el punto de conexin entre la aplicacin web y la aplicacin mvil. Para servir la plataforma SOAP en el servidor, se ha optado por usar AXIS2, una aplicacin que funciona a travs de Tomcat. As pues, usando el puerto 8080, el servidor se encarga de devolver la informacin solicitada por la aplicacin mvil a travs de una respuesta XML. Las funciones del servidor atacan contra un servidor MySQL, que contiene la relacin de preferencias de productos de los usuarios, as como la relacin de productostiendas-precios. As pues, se muestran las diferentes funciones que sirve la aplicacin SOAP en el servidor:

Nombre
getProducts(), getShops(), getProductsShop()

Descripcin
Devuelve el contenido de la tabla productos, tiendas y la relacin tienda productos para un determinado usuario.

getCategories(), getFamily()

Devuelve el contenido de las tablas de referencias de categoras y familias.

insertProduct(), deleteProduct()

Implementan la funcin de aadir un nuevo producto a las preferencias de un determinado usuario a travs del QR, y de la eliminacin de una de estas preferencias respectivamente.

registerAccount()

Registra una aplicacin mvil con una cuenta. Para ello comprueba que el usuario y la contrasea coincidan en la base de datos. Si es as, devuelve

Pgina 77

Diseo de la aplicacin un token con el que el dispositivo mvil trabajar.

getSalt()

Devuelve el salt del password del usuario (segn sistema de encriptacin de Joomla).

3.5.4 Capa Interfaz usuario La capa de interfaz de usuario contiene todas las ventanas visibles de las que se compone la aplicacin. Para ello, se sobre-escribe la clase activity del paquete android.jar. Cada una de las ventanas (activity) carga un fichero XML que contiene las diferentes capas y objetos de los que se compone el diseo de la ventana que se le mostrara al usuario. Vemos un ejemplo de inicio de una activity:

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.login); ....

A travs de estas lneas de cdigo se sobre-escribe la funcin onCreate() de la activity y se carga el fichero login.xml. En la pantalla se mostrar el diseo creado en el fichero layout/login.xml, cargndolo a travs de R. R es un fichero (autogenerado por android) que guarda referencias de identificadores con los diferentes objetos que se puedan incluir en la aplicacin (tanto ficheros de imgenes, xml, como botones, cuadros de texto o cualquier otro tipo de view dentro de ficheros xml). Es el mtodo que tiene android para referenciar desde una clase objetos que no se encuentran en ella. Por ejemplo, para que una activity pueda tener acceso a un recurso que est mostrando por pantalla (que existe en el .xml), se ha de llamar a la siguiente funcin:
name = (TextView) findViewById(R.id.producto_nombre);

En este caso, se asigna a la variable name el objeto producto_nombre, sin importar en que fichero .xml ha estado creado.

Pgina 78

Diseo de la aplicacin Dentro de la activity tambin se programan los mens, por lo que en el diseo se define una clase para cada activity, una clase para cada ventana que se le mostrar al usuario. Para cambiar de una ventana a otra, solo hay que llamar a otra clase, a travs de este comando:

Intent intent = new Intent(Login.this, Startup.class); startActivity(intent);

As pues, se definen las diferentes activities de las que se compondr la aplicacin, los mens que contienen y los accesos entre los menus. Recordar que para el uso de los mapas tambin es necesaria una activity:

Imagen 3.7 Movimientos entre activities

Pgina 79

Diseo de la aplicacin

Num.
1

Nombre
Home

Situacin
-

Opcin
Mi lista Mi lista RA Mi lista Mapa Aadir QR

Accin
Go To 3 Abrir Wikitude Go To 5 Abrir BarCodeScaner

Opciones

Go To 6

Login

Cuenta sin registrar

Registrar

Go To 1

Serv / Prod

Ver lista

Ver productos Ver servicios

Go To 4 Go To 4

Product List

Familias/Categoras Opciones

Familia/Categ. Ver todos Buscar

Desplegar lista Desplegar lista Abrir busqueda Go To 8 Go To 8

Producto seleccionado

Ver tiendas Tiendas cercanas Informacin Borrar

Go To 7 Borrar en BBDD

Map View

Seleccin de tienda

Centrar mapa Ver info tienda Ver productos

Centrar Mapa Go To 9 Go To 4 Go To 8 Abrir Wikitude

Opciones

Ver en lista Ver en RA

Options

Configurar Alertas Iniciar / Parar alertas Reset de cuenta

Desplegar valores

Cambiar preferencia status Borrar BBDD y preferencias & Go To 2

Pgina 80

Diseo de la aplicacin 7 Product Info Ver tiendas Ver tiendas cercanas Go To 8 Go To 8

ShopList

Seleccionar tienda Ver en RA Ver en Mapa

Go To 9

Abrir RA Go To 5

ShopInfo

Activar / Desactivar alertas

Cambiar valor ignore

Tabla de movimientos entre Activities

Pgina 81

Diseo de la aplicacin

3.6 Diagramas de secuencia


En esta seccin se analiza el comportamiento y la interaccin de las diferentes clases que intervienen en las diferentes acciones ms importantes de la aplicacin (se omite pues, una descripcin de las ms bsicas).

3.6.1 Inicio de sesin

Imagen 3.8 Diagrama de secuencia de inicio de sesin

Al iniciar la aplicacin, se comprueba primero si sta ha sido asociada a una cuenta anteriormente o no <isUserRegistered()>. En caso de no estar asociada, se le permite al usuario registrar su cuenta. Una vez insertados los datos, se crea un objeto

Pgina 82

Diseo de la aplicacin WSObject y se comprueba si se tiene conexin a internet <isNetWorkOn()>. A continuacin, se llama a la clase WSObject <getSalt()>, que pregunta el Salt del password de ese usuario. Con el salt, se genera el password encriptado <generateEncPasswd()> y se consulta al servidor si ese password le corresponde a ese usuario <loginAccount()>. Una vez se ha registrado el usuario, se guarda el token devuelto por el servidor en los parmetros de la aplicacin <saveToken()>, se procede a crear <new()> la base de datos, y se actualiza con los ltimos datos de las categoras <getFamilies(),getCategories(),insertFamilies()>.

3.6.2 Actualizacin de mi lista de productos

Imagen 3.9 Diagrama de secuencia de actualizacin de lista de productos

Cuando el usuario / Servicio decide actualizar su lista de productos, se crea primeramente un objeto WSObject y se comprueba si se tiene conexin a internet

Pgina 83

Diseo de la aplicacin <isNetworkOn()>. A continuacin se crea un objeto LocObject y se activa la localizacin por celdas y por GPS <enable_CELL(),enable_GPS()> dependiendo de las preferencias del usuario. A continuacin, se pide la localizacin del dispositivo <getLocation() y se borran todos los datos de la base de datos <drop()>. Una vez conseguida la localizacin, se pide a la clase WSObject los puntos de inters de la lista <getPointsOfInterest()>, el cual se comunica con el servidor a travs del Ksoap2 para conseguirlos <httpt.call()>. Una vez conseguidos los N puntos de inters, se envian a la base de datos, que, por una restriccin de sqlite, deber insertar de uno en uno. Por ltimo, se deshabilitar la localizacin por celdas y/o la localizacin por GPS.

Pgina 84

Diseo de la aplicacin 2.6.3 Seleccin de un producto a travs de mi lista

Imagen 3.10. Diagrama de secuencia de seleccin de un producto

Cuando el usuario selecciona la opcin para ver los productos de su lista, debe seleccionar si quiere buscar servicios o productos. A continuacin, se crea un DBObject <new()> y se consulta las familias de la seleccin <getFamilies()>. Esta seleccin se muestra en una lista usando las caractersticas definidas en el listAdapter <paint_Families()>. A continuacin, el usuario selecciona una de las familias, con lo que se llama a DBObject preguntndole por las categoras de esa familia

Pgina 85

Diseo de la aplicacin <getCategories()>, y se muestran de nuevo en una lista <paint_Categories()>. A continuacion, el usuario selecciona una categora, y se vuelve a llamar a DBObject para conseguir los productos de esa categora <getProducts/Services()>. Se vuelven a pintar en una lista, con lo que el usuario podr ya elegir su producto.

3.6.4 Alertas por proximidad a un punto de inters

Imagen 3.11 Diagrama de secuencia de alertas por proximidad

En este caso el usuario no realiza ninguna accin contra la aplicacin, quien activa las diferentes acciones es un servicio que se ejecuta cada cierto tiempo. Cuando este servicio se activa, se crea un nuevo LocObject <new()>. A continuacin, se activa la localizacin del dispositivo, ya sea por celdas o por GPS, segn las preferencias del usuario <enable_CELL/GPS()>. A continuacin, se pide la localizacin del dispositivo <getLocation()> y se espera hasta que se consiga. Una vez se dispone de ella, se consultan las preferencias del usuario sobre las alarmas <getAlarmsProfile()>, se crea un DBObject <new()>, y se consultan los puntos de inters cercanos al dispositivo que cumplan con las preferencias que el usuario ha definido <near_places(profile)>. Por

Pgina 86

Diseo de la aplicacin ltimo, se le notifica al usuario a travs de una alerta, que se encuentra cerca N puntos de inters <send_alert()>.

3.6.5 Seleccionar una tienda cercana que dispone de un producto

Imagen 3.11 Diagrama de secuencia de muestra de tiendas por producto

Cuando el usuario ya ha seleccionado un producto, puede elegir ver las tiendas cercanas que disponen de ese producto. Cuando selecciona esa opcin, se crea un nuevo LocObject <new()>, y se activa la localizacin por GPS y/o celdas segn las preferencias del usuario <enable_Cell/GPS>. A continuacin se solicita la localizacin <getLocation()> y se crea un nuevo DBObject<new()>. Una vez se recibe la localizacin, se pide al DBObject las tiendas cercanas a esa posicin que disponen del

Pgina 87

Diseo de la aplicacin producto indicado <getNearShopsByProduct()> y se muestran en una lista usando las preferencias del ListAdapter <paint_shops()>. Cuando el usuario selecciona una de las tiendas, se cambia a la nueva Activity ShopInfo <changeActivity(ShopInfo)>. Se pide a la base de datos la informacin sobre esa tienda <getShopInfo()> y se actualizan los campos de la activity que muestran esta informacin <actualizeInfo()>.

Pgina 88

Diseo de la aplicacin 3.6.6 Borrar un producto de mi lista

Imagen 3.12 Diagrama de secuencia de borrado de un producto (1)

Imagen 3.13 Diagrama de secuencia de borrado de un producto (2)

El borrado de un producto se basa en dos partes. Primero (grafico 6.1) el usuario selecciona un producto para borrar. Entonces se crea un nuevo DBObject <new()>, y se le llama para borrar un producto <deletePoisOfProduct()>. Este borra los puntos de

Pgina 89

Diseo de la aplicacin inters que contienen este producto, y aade un producto en la tabla Deleteproduct pendiente para borrar <newPendingToDelete()>. En algn momento, el servicio de la aplicacin (grafico 6.2) despertar. Este comprobara si existe algn producto para borrar <isProductForDelete()>. En ese caso, crear un nuevo WSObject y comprobar si se dispone de conexin a internet <isNetworkOn()>. Si hay conexin, crear un nuevo DBObject <new()> y pedir una lista de los productos a borrar <getPendingToDelete()>. Una vez conseguidos, llamar al objeto WSObject N veces para borrar los N productos. Por ltimo, borrar el contenido de la tabla DeleteProduct de la base de datos <deletedProducts()>.

Pgina 90

Diseo de la aplicacin 3.6.7 Insertar un producto nuevo por QR

Imagen 3.14 Diagrama de secuencia de insercin de un producto (1)

Imagen 3.15 Diagrama de secuencia de insercin de un producto (2)

Pgina 91

Diseo de la aplicacin Insertar productos funciona de forma parecida a borrar un producto, y tambin se basa en dos procesos diferentes. Primero, el usuario a travs de una API, llama la accin de insertar un producto a travs de su marcador (QR) <insertProduct()>. Entonces la aplicacin crea un nuevo DBObject, que aade este marcador a la tabla NewProduct <newProduct()>. A su vez, se aade un flag a producto nuevo <newProduct()>. Cuando el servicio se activa, comprueba si hay algn producto para aadir <isProductForAdd()>. Si encuentra que existen datos en la tabla NewProduct, crea un nuevo WSObject <new()> y consulta si hay conectividad de datos <isNetworkOn()>. Si es as, crea un nuevo DBObject <new()> y consigue los QR de los nuevos productos a aadir <getNewProducts()>. Estos marcadores se los enva al servidor para que los aada a la lista del usuario <addProduct()>. A continuacin, hace un flush de la tabla de nuevos productos <deleteNewProducts()>, y por ltimo, vuelve a llamar a actualizar la lista de productos <actualizar_lista()>.

Pgina 92

Diseo de la aplicacin

3.7 Diseo final de las ventanas de la aplicacin


Una vez desarrollada la aplicacin, se ha trabajado en darle un diseo atractivo. En las siguientes imgenes se puede observar el resultado final de todas las ventanas por las que se puede mover el usuario:

Imagen 3.16 Captura inicio de sesin

Imagen 3.17 Captura ventana principal

Imagen 3.18 Opciones

Pgina 93

Diseo de la aplicacin

Imagen 3.19 Lista de productos

Imagen 3.20 Informacin de producto

Imagen 3.21 Lista de tiendas

Imagen 3.22 Informacin de tienda

Pgina 94

Pruebas funcionales

4. Pruebas funcionales
Una vez desarrollada la aplicacin, se han realizado diferentes pruebas de testeo contra esta, para ver el correcto funcionamiento e intentar encontrar bugs y darles solucin. As pues, las pruebas se han realizado para atacar a cada uno de los mdulos segn sus funciones que realizan, en todos los puntos que las realizan. Las definimos a continuacin:

4.1 Resultado de las pruebas


4.1.1 Pruebas contra la localizacin

Prueba Listar tiendas cercanas Funcin de Mapa Funcin de realidad aumentada

No Cell/No GPS Error Ok Error

CELL GPS Ok Ok Ok Ok* Ok* Ok*

CELL & GPS Ok Ok Ok

* El proceso solo con GPS puede ser bastante ms lento, todo y funcionar, si el dispositivo tarda tiempo en detectar la seal y calcular la posicin. Es ms efectivo una vez el dispositivo ya conoce una ltima posicin.

4.1.2 Pruebas contra conexin a Internet

Prueba

Sin Internet

3G

Wireless

Wireless & 3G

Registro correcto Registro incorrecto

de

la

aplicacin

usuario Ok

Ok

Ok

Ok

de

la

aplicacin

usuario Ok

Ok

Ok

Ok

Actualizacin lista de productos

Ok

Ok

Ok

Ok

Pgina 95

Pruebas funcionales Actualizacin de lista productos sin Ok productos en el servidor Aadir producto Eliminar producto Eliminar producto borrado del servidor Ok Error Ok Ok Ok Ok Error Ok Ok Ok Ok

Error Error Ok Ok

4.1.3 Pruebas contra base de datos

Prueba Al eliminar un producto se borran sus tiendas. Los datos de un producto tienen caracteres especiales Eliminar todos los productos Insertar ms de 10 productos Borrar datos de la cuenta Volver a crear cuenta despus de borrado

Resultado Ok Ok Ok Ok Ok Ok

4.1.4 Pruebas contra funcionalidades externas

Prueba Vista sin productos Vista con una sola tienda Vista con diez tiendas

Wikitude Error Ok Ok

Mapas Ok Ok Ok

4.1.5 Pruebas contra sistema de alertas

Prueba Alerta por proximidad con una tienda Alerta por proximidad sin tiendas Alerta por proximidad con una sola tienda con alertas activadas Alerta por proximidad sin tiendas con alertas activadas Aviso de alerta de dos tiendas Avisos de tiendas a 200 metros

Resultado Ok Ok Ok Ok Ok Ok

Pgina 96

Pruebas funcionales Avisos de tiendas a 500 metros Avisos de tiendas a 1000 metros Avisos cada minuto Avisos cada cinco minutos Avisos con prioridad alta Avisos con prioridad baja Ok Ok Ok Ok Ok Ok

4.1.6 Pruebas de funcionalidad general

Prueba Aadir producto con marcador errneo Aadir producto con marcador correcto Insertar / Borrar productos con alertas apagadas

Resultado Ok Ok Ok

4.2 Descripcin de los errores detectados


4.2.1 Errores en localizacin En la localizacin, se ha detectado que cuando ni la localizacin por celdas ni la localizacin por GPS estn activas, la funcionalidad de realidad aumentada y la de listar las tiendas cercanas que contienen un producto no funciona correctamente. En el caso de las tiendas, se devuelve a la ventana principal, mientras que en la funcin de realidad aumentada, se queda bloqueada la aplicacin. Parece que el error se encontraba en que no se llamaba a acabar la actividad aun cuando la localizacin no era disponible y no se pasaba a otra actividad, y en que no se gestionaba la disponibilidad de la localizacin en la realidad aumentada. 4.2.2 Errores en conexin a internet En las conexiones a Internet, se ha detectado que si actualizamos justo despus de borrar un producto, como el servicio puede que no se haya llamado, no se habr borrado el producto de la base de datos del servidor an, as que volver a aparecer en la lista todo y haberlo borrado. Se soluciono forzando la comprobacin de si hay productos a borrar antes de actualizar la lista.

Pgina 97

Pruebas funcionales 4.2.3 Errores en funcionalidades externas En estas pruebas, se ha detectado que no se gestionaba el no tener ningn producto en nuestra lista de productos cuando se llama a la realidad aumentada. El no pasar como parmetro ninguna tienda, implicaba que apareciera un error (Invalid Poi Data), que lo generaba la clase que se encarga de gestionar las excepciones para Wikitude. Se solucion haciendo dicha comprobacin y lanzando un mensaje de error propio en vez de llamar a la aplicacin de Wikitude.

Pgina 98

Licencias

5. Licencias

ksoap-2-android: Se basa en una licencia eMIT, que permite la distribucin, reproduccin, copia, e incluso la venta de copias del software. No es posible usar esta licencia junto con GPL.

Zxing Barcode Scanner Se basa en una licencia apache v 2.0, que es libre y abierta y con patentes. Esta licencia permite usar, modificar y adaptar la API de forma totalmente libre para la aplicacin. No es posible usar esta licencia justo con GPL.

MGMaps: Se base en una licencia GPL, que es libre, abierta y con copyleft. Esta licencia permite usar la API en nuestra aplicacin de manera comercial, siempre y cuando se haga referencia de su uso y se distribuya de la misma manera si se han hecho modificaciones en la API. Como la licencia GPL no es compatible con la licencia apache v 2.0 (zxing Barcode Scanner) ni la eMit (ksoap-2-android), ser necesario contactar con Nutiteq para conseguir la licencia comercial que ofrecen.

Wikitude: En el caso de la aplicacin Wikitude, dado que no incluimos el cdigo en nuestra aplicacin sino que nicamente se llama a la aplicacin que ha de estar instalada en el dispositivo, la licencia de esta no afecta. Se ha de, por eso, pedir una clave y registrarla.

Pgina 99

Planificacin y costes reales

6. Planificacin y costes reales


En este captulo se hace una evaluacin de los costes del trabajo reales en comparacin de los costes planificados. En la siguiente tabla se puede observar el coste real de las horas por cada objetivo del proyecto, en comparacin con el coste real final.

Mdulo Estudio de las tecnologas Anlisis de requisitos Especificacin Diseo Implementacin Pruebas Documentacin Total

Horas Previstas Horas Reales 70 82 40 34 30 29 50 48 250 274 20 18 100 86 560 571

A continuacin se muestran los costes en bruto por hora de los dos perfiles que han trabajado en la aplicacin: Cargo Jefe de proyectos Programador Importe (euros / hora) 60 25

Jefe de proyecto: Es el encargado de coordinar el proyecto y de gestionar el tiempo y los recursos, por lo tanto se le atribuyen las horas dedicadas a reuniones y un 15% de las horas dedicadas a la documentacin.

Programador: Es el encargado de hacer el anlisis, programar la aplicacin, realizar las pruebas y escribir la documentacin final.

Pgina 100

Planificacin y costes reales Con los costes por hora por cada perfil, se calcula el coste de los recursos humanos del proyecto: Cargo Jefe de proyectos Programador Total Dedicacin (horas) Coste (euros) 96 5760 571 14275 667 20035

Por ltimo, se muestra el clculo de coste de software y hardware. Como vemos, en el proyecto se usa nicamente software gratuito, as que el coste del software es nulo. Categoria Sistema operativo Bases de datos Comunicacin Realidad Aumentada Mapas Lector de marcadores Entorno de desarrollo Producto Android Mysql ksoap2-android Axis2 Wikitude MGMaps Barcode Scanner Eclipse Precio Gratuito Gratuito Gratuito Gratuito Gratuito Gratuito Gratuito Gratuito

En el caso del hardware, nicamente ha sido necesario un servidor en el que alojar la base de datos, el servicio de comunicacin de soap y el servicio web joomla. El precio del servidor ha sido de 1.680. Elemento Procesador Espacio de disco Memoria Tarjeta de red Sistema operativo Caracterstica Intel Xeon X3430 Quad Core (8M Cache, 2.40 GHz) 1x160 GB SATA II 4096 MB DDR3 D-Link DGE-530T Gigabit Ethernet Linux Ubuntu 10.04

Una vez vistos los diferentes costes generados a lo largo del proyecto, se deducen los gastos totales necesarios para este. Concepto Recursos humanos Software Hardware Total Precio (euros) 20035 0 1680 21715

Pgina 101

Conclusiones y trabajo futuro

7. Conclusiones y trabajo futuro


7.1 Conclusiones
Durante el tiempo de desarrollo del proyecto, se ha podido comprobar cmo los dispositivos Smartphone han ido aumentando tanto en nmero como en

especificaciones considerablemente, y se ha convertido en un modelo de negocio que ofrece muchas oportunidades. Se ha observado el desarrollo de aplicaciones que implementan alguno de los objetivos de nuestra aplicacin, as como el lanzamiento de gran nmero de aplicaciones con sistemas de realidad aumentada. El gran problema que ha generado este tipo de modelo actualmente es el aumento de la variedad i fragmentacin de los dispositivos. Mientras que antiguamente, la mayora de los dispositivos podan ejecutar J2ME, basado en Java, actualmente hay una gran variedad de sistemas operativos para los que hay que escribir de nuevo la aplicacin. As pues, la misma aplicacin no sirve para Android, Iphone, BlackBerry o Nokia. Incluso dentro de Android, por ejemplo, hay fragmentacin en versiones de sistema operativo, por lo que una aplicacin para Android 2.1 puede no funcionar en un dispositivo que an funcione con Android 1.5. En el desarrollo de la aplicacin, un diseo ms completo y ms estable de la aplicacin habra ayudado a la hora de la programacin, ya que en casos puntuales fue necesario redisear alguna parte, lo cual ocasiono rehacer partes y su respectiva prdida de tiempo. Es importante recalcar que durante el tiempo de ejecucin del proyecto, las previsiones de crecimiento de los dispositivos Android se han cumplido, ocupando una de las tres posiciones de sistemas operativos de mviles ms vendidos. Por ltimo indicar que algunas de las decisiones a la hora de elegir los sistemas para las funcionalidades extra, como el caso de la realidad aumentada, no fueron de lo ms acertadas. Como el caso de Wikitude, en el que nos hemos encontrado con problemas con actualizaciones que producen retrasos importantes en las llamadas a la aplicacin.

Pgina 102

Conclusiones y trabajo futuro

7.2 Trabajo futuro


El desarrollo de esta primera versin de la aplicacin ha dejado ver puntos dbiles que deberan ser mejorados. Tambin la aparicin de nuevas tecnologas que dejan a otras obsoletas y a las que hay que adaptarse. Esto implica que para continuar este proyecto, quiz para una versin definitiva y comercial, se debera continuar con las siguientes tareas: Substituir la API Wikitude por un desarrollo propio, o encontrar un sistema ms estable y mas configurable para la realidad aumentada. El sistema que ofrece Wikitude ha dado, en el cambio de versiones, diversos problemas, adems que al ser su aplicacin cerrada y no permitir ms que hacer una llamada a ella, ofrece pocas opciones que seran interesantes para la aplicacin. Substituir el sistema de marcadores, que todo y que sigue siendo un sistema novedoso, ser fcilmente substituido por sistemas de reconocimiento de objetos en imgenes, como por ejemplo Google Googles, que es capaz de a travs de una foto a un objeto reconocer de que objeto se trata, o objetos parecidos. Desarrollo de la aplicacin para otros sistemas operativos, como Iphone o BlackBerry. Esto ampliar el mercado ya que actualmente se encuentra bastante distribuido. Mejora de las opciones configurables de las alertas y los algoritmos que los muestran. Se espera mostrar nicamente alertas de aquello que el usuario quiere y nicamente cuando l lo quiere. Incluir un catlogo de artculos consultable en la aplicacin a travs de red. Aadir un sistema de mapas online que calcule rutas hasta una posicin, como por ejemplo, google maps.

Pgina 103

Referencias

8. Referencias

8.1 Sistemas de categorizacin de productos


Hepp M. A Quantitative Analisis of Product Categorization Standards [en lnea]. Austria: University of Innsbruck, Marzo de 2006 [ref. de Junio de 2010] Disponible en web: <http://www.heppnetz.de/files/hepp-leukel-schmitz-QuantitativeAnalysis-KAISWeb.pdf> [Consulta: Junio 2010]

Hepp M. Products and Services Ontologies: A Methodology for Deriving OWL Ontologies from Industrial Categorization Standards.[en lnea]. Int'l Journal on Semantic Web & Information Systems. Austria: University of Innsbruck, Marzo del 2006. Disponible en web: <http://www.heppnetz.de/files/IJSWIS-eclassOWL-APA-Style-2005-final-11-17Web.pdf> [Consulta: Junio 2010]

Pgina Oficial de UNSPSC. FAQ. [en lnea] <http://www.unspsc.org/FAQs.asp#WhatistheUNSPC> [Consulta: Junio 2010]

Pgina Oficial de Merlink. Catlogo [en lnea] de Merlink <http://www.mer-link.cr/images/documentos/Catalogo-Bienes-Servicios-Mer-link.pdf> [Consulta: Junio 2010]

Pgina oficial de UNSPSC. Zycus paperwork. Adopting UNSPSC [en lnea] <http://www.unspsc.org/AdminFolder/Documents/UNSPSC%20For%20Better%20Spe nd%20Analysis%20September%202006.pdf> [Consulta: Junio 2010]

Pgina oficial Eccma. Eccma paperwork. Why you should use the eOTD [en lnea] <http://www.eccma.org/Presentations/Why%20You%20Should%20Use%20the%20eO TD.ppt> [Consulta: Junio 2010]

Pgina 104

Referencias Extended Metadata Registry Project Webpage. ECCMA Open Technical Dictionary eOTD [en lnea] < https://xmdr.org/standards/cmaps/eOTD.doc> [Consulta: Junio 2010]

Pgina oficial de E-cl@ss. Informacin [en lnea] <http://www.eclass-online.com> [Consulta: Julio 2010]

Artculo de comisin Europea. Vocabulario comn de contratos pblicos (CPV). [en lnea] Disponible en Web: < http://simap.europa.eu/codes-and-nomenclatures/codescpv/cpv_2008_guide_es.pdf>

Lloyd C. Russow, Product Clasification Systems [en lnea]. United States: University of philadelphia , 1996. Actualizado en Marzo del 2010. <http://faculty.philau.edu/RussowL/product.html> [Consulta: Julio 2010]

Pgina oficial de NATO. Guide to the NATO Codification System [en lnea] <http://www.nato.int/structur/AC/135/ncs_guide/english/e_index.htm> [Consulta: Julio 2010]

Pgina principal de Google Merchant Center. Help [en lnea] <http://www.google.com/support/merchants/ > [Consulta: Julio 2010]

8.2 Sistemas de proyeccin y utilidades de Mapas


Apuntes Cartografa y Geodesia. Sistemas de Informacin Geogrfica. [en lnea] Espaa: Universidad de Murcia, Curso 2005-2006. Disponible en: [http://www.um.es/geograf/sigmur/sigpdf/temario_1.pdf]

Moore, L. Transverse mercator projections and U.S. Geological [en lnea] US: Rolla, Misuri. fecha desconocida. [Ref. en Julio 2010]. Disponible en: <http://www.geo.utexas.edu/courses/420k/PDF_files/LABS/GIS/map_project.pdf>

Pgina Oficial de OpenStreetMap. Wiki [en lnea]. Disponible en: < http://wiki.openstreetmap.org/wiki> [Consulta: Junio 2010]

Pgina 105

Referencias

8.3 Realidad Aumentada


Azuma, R. A survey of Augmented Reality [en lnea] US: Malib, Agosto del 1997. [Ref. en Julio 2010] Disponible en: < http://www.cs.unc.edu/~azuma/ARpresence.pdf >

Sairio, M. Augmented Reality. [en lnea] Finlandia: Helsinki University of Technology, fecha desconocida. [Ref. en Julio 2010] Disponible en: <http://www.arlab.nl/docs/AR_algemeen1.pdf>

Garrido R. Tcnicas de Interaccin para Sistemas de Realidad Aumentada [en lnea] Garca-Alonso A. Espaa: Facultad de Informtica de Donostia, Gipuzkoa (UPV-EHU), Marzo del 2007. [Ref. en Julio 2010]. Disponible en: <http://www.sc.ehu.es/ccwgamoa/pub/apero/APRealidadVirtual/08_JOREVIR_Garrido.pdf>

Raskar, R. Spatially Augmented Reality [en lnea]. US: University of North Carolina at Chapel Hil, Noviembre del 1998. [Ref. en Julio 2010]. Disponible en: <http://www.cs.unc.edu/Research/ootf/publications/Raskar_IWAR98.pdf>

Alvarez, H. y Borro. Clculo de la pose de la cmara ante oclusiones de un marcador [en lnea]. Espaa: Universidad de Navarra (CEIT & Tecnum), Septiembre de 2008. [Ref. en Julio 2010] Disponible en: <http://www.labein.es/rasmap-w.nsf/Publicaciones/CEIG08_Calculo_de_la_pose.pdf>

8.4 Sistemas de Geolocalizacin


Huidobro, J. El posicionamiento mvil [en lnea] Espaa: Network World. Publicado el 1 de Noviembre del 2001. [Ref. Julio 2010]. Disponible en: <http://www.networkworld.es/El-posicionamiento-movil/seccion-/articulo-126789>

Annimo. Geoposicionamiento GSM independiente de la red mvil [en lnea], Diciembre del 2007. Disponible en: <http://www.kriptopolis.org/geoposicionamiento-gsm-1> [Consulta: Julio 2010]

Pgina 106

Referencias Frasco, B. Enhanced Observed Time Difference (E-OTD) [en lnea] Aerial Communications Paperwork. fecha desconocida. Disponible en: <http://www.fcc.gov/pshs/services/911-services/enhanced911/archives/aerial.pdf> [Consulta: Julio 2010]

Goran M. Geolocation and Assisted GPS [en lnea] US: Georgia State University, Atlanta, febrero 2001. [Ref. Julio 2010]. Disponible en: <http://cens.ucla.edu/~mhr/cs219/location/djunkic01.pdf>

8.5 Programacin en Android


Ableson, F et all. Android, Guia para desarrolladores. Jos Luis Gmez Celador [trad.] Madrid: Ediciones ANAYA, 2010, Traduccin de: Unlocking Android. A Developer's Guide. Manning Publications.

Pgina oficial del SDK de Android. Developer Guide [en lnea] Disponible en: <http://developer.android.com/guide/index.html> [Consulta: Abril 2010 - Enero 2011]

8.6 Otros
Gartner. Smartphone grew 27 per cent in second quarter of 2009. [en lnea] UK: Engham, agosto 2009. [Ref. Mayo 2010]. Disponible en: <http://www.gartner.com/it/page.jsp?id=1126812>

Gartner. Grficos comparativa ventas de Smartphone 2008-2009. [en lnea] UK: Engham, fecha desconocida [Ref. Mayo 2010]. Disponible en: <http://www.zdnet.com/blog/gadgetreviews/nokia-symbian-still-lead-smartphonemarket-gartner-says/12467>

Fisher. D Hackers usan automatizacin y geolocalizacin para los ataques a redes sociales [en lnea]. Servicio de noticias de Seguridad de Kaspersky Lab. [Ref. Mayo 2010] Disponible en: <http://threatpost.com/es_la/blogs/hackers-usan-automatizacion-y-geolocalizacionpara-los-ataques-redes-sociales-020110>

Pgina 107

También podría gustarte