Você está na página 1de 56

U NIVERSIDADE F EDERAL DE G OIS I NSTITUTO DE I NFORMTICA H EITOR M ENEZES DE O LIVEIRA P EREIRA

Desenvolvimento de Aplicaes Android para Mapas de Mltiplas Fontes

Goinia 2010

Desenvolvimento de Aplicaes Android para Mapas de Mltiplas Fontes

Prof. Ricardo Couto Antunes da Rocha Instituto de Informtica - UFG Orientador

Heitor Menezes de Oliveira Pereira Instituto de Informtica - UFG Orientando

20 de maio de 2010

Resumo

Pereira, Heitor Menezes de Oliveira. Desenvolvimento de Aplicaes Android para Mapas de Mltiplas Fontes. Goinia , 2010. 55p. Relatrio de Graduao. Instituto de Informtica, Universidade Federal de Gois. As aplicaes baseadas em mapas e os servios de localizao esto cada vez mais presentes no cotidiano das pessoas, principalmente com a integrao desses servios com dispositivos mveis. Nas vrias aplicaes existentes encontramos um vasto conjunto de recursos que auxiliam e atendem os diversos interesses dos usurios, tais como, rastreamento e identicao de rotas. Atualmente, a plataforma para dispositivos mveis Android oferece recursos para desenvolvimento de aplicaes baseadas em mapas por meio de APIs externas, tais como, Google Maps API e Mobile Maps API. Entretanto, os servios de obteno de mapas por meio dessas APIs so centralizados e fortemente acoplados a uma nica base de dados, que impossibilita a incorporao de outras fontes de mapas na aplicao, e que obriga o desenvolvedor a utilizar apenas tcnicas de localizao por meio de coordenadas geogrca. Em um cenrio mais exvel de computao sensvel ao contexto, poderia haver diversos provedores de localizao que atuam em escopos limitados. O framework apresentado neste projeto possibilitar o desenvolvimento de aplicaes baseadas em mltiplos mapas obtidos de diversas fontes. A partir dos componentes do framework, ser possvel a comunicao entre as aplicaes e esses provedores por meio de um middleware sensvel ao contexto para obteno de mapas com escopo limitados que utilizam semnticas de localizao diversas.

Palavraschave

Servio Baseados em Localizao, Android, Google Maps, Framework, Mapas Contextuais, Semntica de Localizao

Abstract

Pereira, Heitor Menezes de Oliveira. Android Applications Development for Maps from Multiple Sources. Goinia , 2010. 55p. Relatrio de Graduao. Instituto de Informtica, Universidade Federal de Gois. Applications based on maps and location services are increasingly present in daily life, especially with the integration of these services to mobile devices. The various existing applications meet a wide range of features to help and serve the diverse interests of users, such as tracking and identication of routes. Currently, the platform for mobile devices Android offers resources for developing applications based on maps by means of external APIs such as Google Maps API and Mobile Maps API. However, the services of maps through these APIs are centralized and tightly coupled to a single database, which prevents the incorporation of other sources of maps in the application, and requiring the developer to only use localization techniques through geographical coordinates. In a more exible computing context-sensitive, there could several location providers that operate limited scopes. The framework presented in this project will enable the development of applications based on multiple maps obtained from external providers, not just those from the Google Maps service. Giving the User the ability to connect to a provider available to obtain other maps that use location technique reference.

Keywords

Location Based Services, Android, Google Maps, Framework, Maps Contextual, Semantics Location

Sumrio

Lista de Figuras Lista de Tabelas Lista de Cdigos de Programas 1 2 Introduo Aplicaes Baseadas em Mapas
2.1 Requisitos
2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 Conectividade de Rede Visualizao de Mapas Informaes de Localizao Integrao Automtica com Mltiplos Mapas Carregamento Sob Demanda dos Mapas Mobile Maps Google Maps API Android Maps API

6 7 8 9 14 15 15 15 16 16 16 16 16 17 18 20 20 21 21 21 22 23 23 24 24 25 27 29 30 31

2.2

Frameworks para Desenvolvimento de Aplicaes Baseadas em Mapas


2.2.1 2.2.2 2.2.3

Plataforma Android
3.1 Arquitetura Android
3.1.1 3.1.2 Java e Mquina Virtual Dalvik Arquitetura Aplicativos Frameworks Bibliotecas Ambiente de Execuo Kernel Linux 3.1.3 Android SDK

Aplicaes Baseadas em Mapas no Android


4.1 API de Localizao

Mapas Contextuais
5.1 5.2 Mapas como Informao Contextual Cenrio

Prottipo de Aplicao Baseadas em Mltiplos Mapas


6.1 6.2 Arquitetura do Prottipo Implementao
6.2.1 Criando uma Nova Camada de Mapa

33 33 34 35

Framework de Desenvolvimento de Aplicaes baseadas em Mapas Contextuais 37


7.1 7.2 7.3 7.4 Arquitetura do Framework Componentes do Framework Implementao no Android Etapas de Desenvolvimento e Interface com Base de Mapas

38 40 41 43 45 45 48 49 51 54

Avaliao e Testes
8.1 Base Esttica

Trabalhos futuros

10 Concluso Referncias Bibliogrcas A Fluxogramas de Comunicao:

Lista de Figuras

1.1 1.2 3.1 4.1

Beetaun British Museum Arquitetura Android. Aplicaes Android baseadas em mapas executando em um emulador de dispositivo.

10 11 21 25 25 25 30 33 34 38 46

(a) (b)
5.1 6.1 6.2 7.1 8.1

Google Maps. Mobile Maps.

Servio de mapas adaptativos (GiMoDig ) [29] Camadas visuais da aplicao. Layout do prottipo. Arquitetura do Framework Diagrama de Classe do Estudo de Caso

Lista de Tabelas

3.1 4.1

Bibliotecas Android. Google Maps API

23 26

Lista de Cdigos de Programas

4.1 6.1

GoogleMaps Overlay.draw()

27 36

CAPTULO 1

Introduo

medida que foram surgindo novas metodologias para desenvolvimento de solues baseadas em localizao, estes servios se tornaram cada vez mais populares por meio da Web. A popularizao desses servios foi possvel a partir da disseminao de tecnologias como GPS (Global Positioning System) [25] que permite localizar um dispositivo a partir de coordenadas (latitude, longitude, altitude) obtidas pela triangulao de informaes providas por satlites, entre outras funcionalidades. Aplicaes baseadas em localizao so as aplicaes sensveis ao contexto que obtiveram maior interesse tanto na comunidade acadmica como no mercado, gerando diversos produtos comerciais. Essas aplicaes baseadas em localizao esto muito alm de simples servio de mapas e navegao, pois so capazes de prover, por exemplo, funcionalidades de rastreamento de veculos, pacotes e pessoas, identicao de rotas, marketing baseado em localizao, como tambm so componentes-chaves para aplicaes de presena mvel e de redes sociais. Existem diversos provedores que disponibilizam mapas, aplicaes de localizao baseadas em mapas, assim como APIs (Application Programming Interface) que podem ser utilizadas para o desenvolvimento de aplicaes baseadas em localizao. NASA, Microsoft, Yahoo e Google so exemplos de tais provedores [30]. Tipicamente, esses servidores so fortemente centralizados e no permitem o desenvolvimento de servios que utilize outras bases de dados. De fato, h um interesse evidente no desenvolvimento de aplicaes baseadas em mapas e sensveis a localizao e, na pesquisa em computao ubqua, que faa um uso dos mecanismos de computao sensvel ao contexto para torn-las exvel, dinmicas e adaptativas [6]. Por exemplo, a possibilidade de obter mapas a partir de um servio de descoberta torna possvel o desenvolvimento de aplicaes baseadas em mapas mais especcos, capazes de oferecer ao usurio maior quantidade de informaes sobre um determinado lugar, utilizando tcnica de localizao simblica.

10

Considerado o mais popular provedor de servios de mapas, o Google Maps um exemplo de provedor de mapas que possui uma API livre para desenvolvimento. H inmeros aplicativos baseados em mapas que utilizam essa API, como, por exemplo, o B EETAUN [10]. Este aplicativo foi desenvolvido para dispositivos mveis baseados na plataforma Android, e consiste em um servio de rede social que permite que seus usurios faam pesquisas por novos amigos, compartilhem histrias, comentrios, e fotos, referentes a alguma cidade, conforme a Figura 1.1.

Figura 1.1: Beetaun

Tradicionalmente, os servios baseados em localizao utilizam pontos geogrcos baseados em latitude e longitude para fazer referncia a uma certa localidade. Da mesma forma, os provedores de mapas esto fundados neste tipo de localizao. As prprias bases de dados GIS (Geographic Information System) [2] so baseadas neste tipo de localizao, apesar de possuir um sistema interno de coordenadas, possvel relacionlas aos pontos baseados em coordenadas geogrcas do terreno. Entretanto, locais de escopo geogrco bem limitado, como prdios, poderiam ser descritos por mapas que no so baseados em localizao geogrca, mas em abstraes de localidade mais adequadas ao contexto do mapa. Por exemplo, o British Museum oferece um mapa aos visitantes baseado em salas de visitao, onde cada uma mantm obras diferentes organizadas por diferentes critrios. Uma aplicao que faa uso desses mapas deve ser capaz de utilizar outro tipo de inferncia de localizao, onde as informaes para determinar a localizao de um determinado dispositivo so dadas a partir de pontos de referncias prprios do mapa. Nessas aplicaes, a prpria interface com o usurio deve levar em considerao os pontos de referncia. Este tipo de localizao chamada localizao simblica [24].

11

A Figura 1.2 corresponde ao mapa fornecido pelo British Museum 1 , identicado como um mapa contextual que exemplica os tipos de informaes que a aplicao descrita deveria ser capaz de trabalhar.

Figura 1.2: British Museum

Dependendo de sua localizao e interesse, um usurio pode preferir utilizar um mapa que seja do local onde se encontra. Por exemplo, se um usurio est na UFG (Universidade Federal de Gois), ele poderia estar mais interessado em saber a sua localizao em relao aos pontos de referncias prprios da universidade (institutos, salas, etc). Alguns desses pontos de referncia so dinmicos e no podem ser armazenados estaticamente em um banco de dados GIS quando, por exemplo, alguns deles so associados a um evento ocorrendo no local. Alm disso, a localizao indoor alm de no poder fazer uso de coordenadas, ela tipicamente melhor descrita por localizaes simblica [28]. As tcnicas de localizao simblica podem ser de diferentes tipos: locais com um signicado poltico (pases, estados ou cidades), localizaes geogrcas (montanhas, rios ou orestas) ou localidades temporrias (zonas de construo ou feiras), assim como localidades mais expeccas (salas, edifcios ou monumentos). A utilizao da localizao
1 http://www.britishmuseum.org/visiting/oor_plans_and_galleries/ground_oor.aspx

12

simblica em servios baseados em localizao pode gerar alguns benefcios teis [27]. Por exemplo, localizaes simblicas que so construdas de acordo com um nome bem denido (Campus UFG) pode ser facilmente usado como uma chave de busca para bancos de dados tradicionais, tabelas ou listas, e a capacidade desse tipo de localizao de abranger uma rea, e no apenas um nico ponto como feito com os valores de grau de latitude e longitude. Servios de proviso de mapas, como o prprio Google Maps, so centralizados e fortemente acoplados a uma nica base de dados, impossibilitando a incorporao de outras fontes de mapas em uma aplicao que faa uso de localizao simblica. O objetivo deste trabalho propor um framework para desenvolvimento de aplicaes sensveis a contexto baseado na plataforma Android que permita carregar e exibir mapas de mltiplas bases de mapas e selecionados dinamicamente dependendo do contexto de localizao. Esses mapas so chamados Mapas Contextuais. Cada instncia do framework implementa a interao com um tipo de base de mapas especco, interpretao dos mapas obtidos atravs dela e a renderizarizao do contedo na interface do usurio. O framework deve ser integrado a um middleware para computao sensvel ao contexto, de maneira que a descobertas dos mapas e provedores existentes em uma localizao feita por noticaes assncronas do middleware, alm do prprio tratamento de localizao. No desenvolvimento do framework consideraremos que a localizao e os mapas sero providos pelo servio de mapas do middleware Mobilis [19]. O Mobilis um middleware que permite compartilhamento de dados por meio de uma abordagem publishsubscribe, provendo os dados de localizao e mapas como informaes contextuais. Na primeira fase desse projeto, foi feito o levantamento bibliogrco sobre desenvolvimento de aplicaes baseadas em mapas. Juntamente com o estudo sobre a plataforma Android, com nfase nas APIs de localizao e mapas, foram levantadas informaes necessrias para desenvolvimento de um prottipo, o qual utiliza um objeto de visualizaes de mapas provido pelo Google Maps. Para exibir mltiplos mapas, o prottipo utiliza uma camada de sobreposio, que pode estar visvel ou no, e que possui controles de aproximao e deslocamento. O prottipo atribui ao mapa alguns pontos de referncia especcos capazes de prover informaes e a localizao do dispositivo. A partir do estudo sobre os frameworks para desenvolvimento de aplicaes baseadas em localizao, assim como o desenvolvimento do prottipo de aplicaes baseadas em mltiplas camadas, foram identicados alguns elementos para a composio da arquitetura do framework proposto, assim como sua estrutura e relacionamento entres estes componentes. A aplicabilidade desse framework foi testada por meio de um estudo

13

de caso baseado em uma base de mapas estticos. Este relatrio est organizado da seguinte forma. No Captulo 2 so apresentadas informaes sobre aplicaes baseadas em mapas, identicando alguns requisitos, e discutindo alguns frameworks para desenvolvimento desse tipo de aplicao. No Captulo 3 feita uma introduo sobre a plataforma Android, onde sero apresentadas algumas informaes sobre este sistema operacional. O Captulo 4 relata sobre o desenvolvimento de aplicaes baseadas em mapas para esta plataforma. O Captulo 5 expe a respeito de mapas contextuais, isto , mapas com escopo limitado, principal tipo de informao trabalhada pelo framework. No Captulo 6 apresentado o desenvolvimento do prottipo denido por um cenrio hipottico e a estrutura da aplicao. O Captulo 7 explana sobre o desenvolvimento de aplicaes que utilizam mapas contextuais e apresenta um primeiro modelo para a arquitetura do framework em desenvolvimento, exemplicado por meio de um estudo de caso. Os Captulos 8 e 9 contm os trabalhos futuros e as concluses, respectivamente.

CAPTULO 2

Aplicaes Baseadas em Mapas

A visualizao cartogrca consistes em um processo cognitivo que envolve objetos geogrcos, seus relacionamentos e a maneira como eles so exibidos em um meio de visualizao 2D. Com a introduo da computao em projetos cartogrcos ao longo do tempo, novos paradigmas foram sendo inseridos no desenvolvimento desse tipo de servio. Considerando o perodo pr-Internet, a usabilidade desses servios baseados em mapas podem ser divididos em trs categorias, apenas visualizao, mapas analticos e mapas exploratrios [22]. O primeiro modelo consiste em simples servios de visualizao de materiais cartogrcos pelo meio digital capaz de prov funcionalidades de zoom, navegao, legendas integradas (tal como mapas impressos). As preocupaes desse modelo consistem basicamente na questo sobre o tamanho e capacidade de resoluo do display. No modelo de mapas analticos so dispostos dois componentes, uma para apresentao do material cartogrco, e uma interface de conexo com uma base de dados geoespaciais. Esse modelo prope dois tipos de visualizao, uma representando o espao geogrco real e outra representando informaes hiper-dimensionadas. Dessa maneira, operaes analticas, como o cortes, destacando, escondendo, sobrepondo, pesquisando, consultando, e uma srie de funes de computao podem aumentar a percepo visual dos itens de interesse do usurio. O terceiro modelo, mapas exploratrios, serve como meio de apresentao, uma interface e um instrumento capaz de identicar conceitos ocultos e de valor agregado ao banco de dado geogrco atravs da conrmao ou por gerao de hipteses do usurio. Dessa maneira a interao do usurio no ca apenas em visualizao e anlise das informaes, sendo ele capaz de manipular o contedo de mapeamento por meio de operaes de edio como traduo, rotao, inserindo, removendo, ou mesmo redesenhar os mapas. O surgimento da Internet revolucionou a maneira de distribuio das informaes de mapas. Esses mapas baseados na Web, inicialmente consistiam em simples divulgao de materiais cartogrcos por meio de insero de mapas como imagens estticas.

2.1 Requisitos

15

Com a evoluo tecnolgica, foram sendo criadas algumas alternativas para obter mais interatividade com essas informaes. Por exemplo, a criao de tecnologias para criao dinmica de contedo, e tambm tecnologias abertas (XML, GML e SVG) [8], que permitem o desenvolvimento de aplicaes baseadas em banco de dados geogrcos, dado que as informaes relevantes ao servio cam armazenadas em um servidor Web. Sendo a Internet o maior meio de distribuio de informaes cartogrcas, no demorou para que esse tipo de servio fosse introduzido em dispositivos mveis, dada a realizao do acesso sem o Internet por meio desses dispositivos. Juntamente com as diversas possibilidades de interao com o usurio, essas aplicaes passaram a ter maior importncia, servindo como suporte para tomada de decises em um ambiente que propem mobilidade, onde servios baseados em mapas so mais necessrios. Por exemplo, um usurio fez uma viagem para uma cidade a qual ele nunca tenha estado antes, existem servios que permitem encontrar estabelecimento, tais como, restaurantes, cinemas, bares, e outros, que ajudar o usurio dependendo do seu interesse.

2.1

Requisitos

Servios mvel baseado em mapas fazem exigncias extremas em sistemas de informao cartogrca e geogrcas, sendo desejvel visualizao rpida e exvel das informaes geogrcas carregadas em aparelhos pequenos de baixa resoluo, baixo poder de processamento e conexes de redes intermitentes [21]. Abaixo seguem alguns requisitos para desenvolvimento de aplicaes baseadas em mapas para dispositivos mveis.

2.1.1

Conectividade de Rede

Nem sempre um dispositivo pode estar conectado rede, por diversos motivos tais como falta de conectividade em determinada regio, o usurio pode desligar a interface de rede sem o, ou at mesmo o aparelho, com o intuito de economizar bateria. Porm, as aplicaes baseadas em mapas necessitam dessa conectividade para sincronizar sua base de mapas junto aos provedores dessa informao para oferecer um servio apropriado para o usurio.

2.1.2

Visualizao de Mapas

Os dispositivos mveis so considerados aparelhos com baixo poder de processamento e que possuem visores pequenos, porm so requisitos bsicos para desenvolvimento de aplicativos baseados em mapas permitir navegao e visualizao dessas informaes.

2.2 Frameworks para Desenvolvimento de Aplicaes Baseadas em Mapas

16

2.1.3

Informaes de Localizao

As aplicaes baseadas em mapas esto vinculadas com os servios ou sensores de localizao. Essas aplicaes devem ser capazes de trabalhar com informaes de posicionamento. Essas informaes dependem da tcnica de localizao utilizada (coordenadas ou ponto de referncia), podendo ser obtidas manualmente, por meio de sensor GPS, por meio de sinais de rdio frequncia ou por algum provedor de localizao externo ao dispositivo.

2.1.4

Integrao Automtica com Mltiplos Mapas

Tal como ocorre com os diversos tipos de mapas do Google Mapas, necessrio que os mltiplos mapas carregados para aplicao sejam integrados automaticamente interface de usurio, assim como as informaes referentes a localizao em cada um desses mapas.

2.1.5

Carregamento Sob Demanda dos Mapas

Considerando que um mapa composto por diversas imagens, necessrio denir corretamente o protocolo de carregamento e exibio dessas imagens, para que seja exibida apenas a regio desejada, mantendo a consistncia do mapa como um todo.

2.2

Frameworks para Desenvolvimento de Aplicaes Baseadas em Mapas

Existem diversos frameworks para desenvolvimento de aplicaes baseadas em mapas, principalmente para Web, onde essas aplicaes so fortemente disseminadas. Citando dois desses frameworks que possibilitam o desenvolvimento para dispositivos mveis, que utilizam da J2ME (Java 2 Platform, Micro Edition), ou que so baseadas na plataforma Android temos, o Mobile Maps [7] e a Google Maps API [12].

2.2.1

Mobile Maps

O projeto Mobile Maps foi desenvolvido pela Ericsson Labs1 , com o intuito de possibilitar que desenvolvedores possam de maneira simples adicionar funcionalidades de mapas em aplicaes para dispositivos mveis.
1 https://labs.ericsson.com/

2.2 Frameworks para Desenvolvimento de Aplicaes Baseadas em Mapas

17

Baseado em Java, o Mobile Maps est disponvel para Java ME e Android, por meio dessas plataformas possvel trabalhar com funcionalidade de download, exibio e interao com as informaes de mapas obtidos a partir do acesso a base de mapas do TeleAtlas 2 ou do OpenStreetMaps 3 . A primeira possui cobertura detalhada do territrio Norte Americano e da Europa, a segunda base de mapas possui uma cobertura global, porm com variveis nveis de detalhamento entre uma regio e outra. A API do Mobile Maps que pode ser adicionada aos projetos atravs que uma biblioteca externa obtida e integrada por meio de um arquivo JAR. Utilizando uma maneira nica para renderizar mapas baseadas em informaes vetores, esta API utiliza uma baixa largura de banda comparando com outros servios de mapas que tm que fazer download de imagens. Possibilitando desenvolvimento de aplicaes rpidas e com baixo custo operacional para os usurios. Com o Mobile Maps possvel desenvolver aplicaes tais como, servios de localizao de amigos, sistemas de navegao, localizao de estabelecimentos, servios meteorolgicos, localizao baseada em rede social entre outras aplicaes teis para tomada de decises. Visando um desenvolvimento para Android utilizando essa API, possvel criar uma aplicao baseada em mapas a partir de um componente chamado MapComponent, responsvel pela visualizao de um mapa geogrco (GeoMap). Este framework possui uma lista de componentes capazes de interagir com este mapa. Utilizando componentes de controle, por exemplo, possvel habilitar operaes de navegao, operaes de zoom, troca entre os tipos de mapas disponveis, entre outras operaes suportadas pela API. Entre outros componentes encontrados nessa API, existe um capaz de criar camadas (Layer), possibilitando a adio de elementos grco sobre os mapas. Enm, alguns recursos do Mobile Maps so renderizao dinmica de mapas como dados vetoriais, capacidade de customizao de aplicaes que possam ser integradas a mapas, controles exveis de interao com o usurio, suporte para duas plataformas baseada em desenvolvimento Java, e livre acesso as bases de mapas suportadas.

2.2.2

Google Maps API

Um dos projetos do Google com forte aceitao acadmica e comercial a biblioteca externa para desenvolvimento de aplicaes baseadas em mapas. O Google Maps API foi disseminada pela Web onde so encontrados diversas aplicaes, com inmeras
2 http://www.teleatlas.com/index.htm 3 http://www.openstreetmap.org/

2.2 Frameworks para Desenvolvimento de Aplicaes Baseadas em Mapas

18

funcionalidades que so enriquecidas pela apresentao dos mapas disponibilizados por este provedor, tal como, a possibilidade de traar rotas a partir de informaes de origem e destino, adicionar informaes textuais em um pontos especcos do mapa, entre outros. Dado que a plataforma Android est fortemente integrada com os servios do Google, tambm foi desenvolvida uma verso da Google Mapas API para o projeto Android. Baseado em uma biblioteca externa, por meio das classes presentes nesta biblioteca possvel download, renderizao e cache das informaes de mapas obtidas, como tambm vrias opes de exibio e controle. Apesar de ser considerada uma biblioteca externa, o projeto da Google Maps API para Android ainda no dispe de um meio de obteno dessa biblioteca de maneira separada ao projeto Android, isto , esta biblioteca est integrada/pr-instalada no Android SDK, apenas na verso 1.5. A classe chave dessa biblioteca de mapas o MapView, que consiste em um objeto grco responsvel pela visualizao de mapas providos pelo provedor do Google Maps, capaz de alterar entre trs diferentes tipos de mapas (mapas de imagens de satlite, mapas topogrcos e mapas de ruas). Com a utilizao da Google Maps API o desenvolvedor capaz de criar aplicaes robustas baseadas em localizao por coordenadas geogrca (latitude e longitude) que podem ser integradas a aplicao que utilizam a API de Localizao encontrada no Android. Como classe de controle, destaque para a MapController capaz de alterar o nvel de zoom do mapa, mudar a localizao exibida entre outras funes. Tambm encontrado na biblioteca do Google Maps a classe Overlay, utilizando esta classe possvel criar elementos de sobreposio. Por exemplo, a partir de uma imagem esttica, esta pode ser desenhada por cima do mapa principal obtida a partir do servio do Google Maps. A idia de sobreposio pode ser utilizada para desenvolvimento de aplicaes baseadas em camadas, essa funcionalidade da Google Maps API foi utilizada para o desenvolvimento do prottipo de aplicaes baseadas mapas sobre camadas.

2.2.3

Android Maps API

Este framework possibilita o desenvolvimento de aplicativos voltados para dispositivos mveis que utilizam Android como sistema operacional. Considerando este framework como a base para desenvolvimento aplicaes baseada em mltiplos mapas, a partir de seus componentes visuais (Views), de interao e controle (Activities) que sero identicados e mapeados os componentes da estrutura do framework proposto neste projeto.

2.2 Frameworks para Desenvolvimento de Aplicaes Baseadas em Mapas

19

Existem vrios conjuntos de classes presentes neste framework vinculados a diversos propsitos. Voltando para funcionalidades ligadas a sistemas baseados em mapas e localizao, um destes conjuntos consiste em uma API de Localizao capaz de trabalhar com informaes obtidas a partir de sensores de localizao. Por exemplo, esta API possui mecanismos que podem ser utilizados para obter informao de localizao a partir de sensores GPS, sendo possvel associar essas informaes a um mapa, ou utiliz-las da melhor maneira que convm aplicao.

CAPTULO 3

Plataforma Android

3.1

Arquitetura Android

Android a primeira plataforma completa, aberta e livre para dispositivos mveis [18] que usa como base o kernel do Linux 2.6. Desenvolvida inicialmente pela Google, hoje o projeto Android mantido pela OHA (Open Handset Alliance) [23], um grupo de mais de 30 empresas de telefonia celular e tecnologia, entre as quais a HTC, T-Mobile, Qualcomm e Motorola. A unio dessas empresas tem como intuito de acelerar e inovar o desenvolvimento dos recursos dessa plataforma, trazendo para os consumidores uma experincia mais rica em termos de recursos, e mais barata em termos nanceiros. Mais do que a simples entrada do Google no mercado de dispositivos mveis, o projeto Android tm a ambio de ser uma plataforma livre, que estaria presente em diversos modelos de celulares. Esta plataforma consiste em uma pilha de componentes de software, que inclui bibliotecas, frameworks de middleware, aplicaes e o sistema operacional. Considerando o kernel usado, ele sofreu diversas alteraes para que casse mais bem adaptado as funcionalidades de um dispositivo mvel, sendo ele o responsvel, por exemplo, pela segurana e pelo gerenciamento de memria. Funcionando assim, como uma camada de abstrao entre os componentes de hardware e software, no sendo considerado uma distribuio Linux convencional. Composto por um conjunto de software para dispositivos mveis, um middleware, aplicativos e um sistema operacional, uma das grandes apostas dessa plataforma a disponibilidade do Android SDK (Software Developed Kit). Esse software disponibiliza os recursos necessrios para criao e desenvolvimento de aplicaes segundo as classes dispostas na API. Essas aplicaes so escritas utilizando a linguagem de programao Java e executadas por uma mquina virtual projetada para rodar sobre um ncleo Linux e aperfeioada para o funcionamento em dispositivos mveis, chamada Dalvik.

3.1 Arquitetura Android

21

3.1.1

Java e Mquina Virtual Dalvik

A plataforma Android no se utiliza de uma JVM convencional, ela trabalha com uma mquina virtual baseada em uma arquitetura de registradores conhecida como Dalvik Virtual Machine (Dalvik VM ) [32]. Esta mquina virtual foi desenvolvida com o intuito de obter maior desempenho em hardwares com pouco poder de processamento. O motivo que leva a Dalvik VM no ser considerada uma Mquina Virtual Java o formato dos arquivos que esta mquina virtual executa, arquivos .dex e no arquivos .class, como feito pelas JVMs. Esta extenso .dex, vem da abreviao de Dalvik Executable, consiste em um formato de bytecode desenvolvido para ocupar menos espao e carregar rapidamente, tornando-se muito til para aplicativos voltados dispositivos mveis.

3.1.2

Arquitetura

A arquitetura do Android dividida em cinco componentes [11]: Aplicativos, Framework, Bibliotecas, Ambiente de Execuo e Kernel Linux. A Figura 3.1 mostra esses cinco componentes de software que constituem o Android e como estes se relacionam.

Figura 3.1: Arquitetura Android.

Aplicativos Camada mais alta da arquitetura da plataforma Android, onde se encontram os aplicativos desenvolvidos em Java e convertidos para o formato de bytecode capaz de ser executado pala Dalvik VM. Existem esforos para que possa ser utilizado Phython e Ruby para o desenvolvimento dessas aplicaes. Alguns aplicativos so fornecidos pela

3.1 Arquitetura Android

22

plataforma, tais como: um cliente de e-mail, navegador Web, calendrio, mapas, entre outros. Essas aplicaes podem rodar simultaneamente, atravs das instncias criadas pela mquina virtual Dalvk para cada uma das aplicaes, dando ao usurio o poder de alternar facilmente entre aplicaes. Dado que as aplicaes so executadas atravs de um arquivo .dex, reconhecido pela mquina virtual utilizada. Frameworks Este framework foi desenvolvido para possibilitar a utilizao das mesmas APIs das aplicaes chave do Android, simplicando o cdigo atravs do reuso dos componentes e abstraindo parte dos procedimentos que fazem funcionar. Componentes chaves para desenvolvimento de aplicaes Android: 1. Activity - Base para desenvolvimento da interface visual de uma aplicao, a qual necessita da interao com um usurio. Por exemplo, uma aplicao de mensagens de texto poderia ter uma Activity que apresenta um item de menu com os nomes dos contatos para enviar mensagens, uma segunda Activity que representa uma caixa de texto para escrever a mensagem para o contato escolhido. Embora estas trabalhem juntas para compor uma interface coesa, cada Activity independente uma da outra. 2. Service - No apresenta uma interface visual para o usurio. Esta classe responsvel pelas tarefas que so executadas em segundo plano. Por exemplo, um Service pode tocar msica, enquanto o usurio v fotos, ou pode executar tarefas cujo resultado ser utilizado por uma Activity. 3. BroadcastReceiver - o componente que tem funo de receber e reagir um anncio. Por exemplo, anncios que uma foto foi tirada, que a bateria est fraca, ou que o usurio alterou sua preferncia de idioma. Tambm possvel que aplicativos iniciem emisses, tal como transferir dados para outro dispositivo. 4. ContentProvider - Um ContentProvider capaz de disponibilizar um conjunto especco de dados para outras aplicaes. Estes dados podem ser armazenados no sistema de arquivo, em um banco de dados SQLite, ou em qualquer outra forma possvel. Para que outras aplicaes possam recuperar e manipular estes dados, necessrio implementar um conjunto de mtodos capazes de interagir com o tipo de armazenamento escolhido. 5. Intent - Os componentes Service, Activity e BroadcastReceiver de uma aplicao, so ativados por meio de mensagens, chamada de Intents. Essas mensagens so utilizadas para facilitar a ligao entre componentes da aplicao ou de aplicaes diferentes, em tempo de execuo. O objeto Intents, uma

3.1 Arquitetura Android

23

estrutura de dados passiva que possui uma descrio abstrata de uma operao a ser realizada, ou no caso de transmisses, uma descrio de algo que aconteceu e est sendo anunciado. 6. View - Elemento utilizado para denir objetos grcos exibidos na tela, capaz de prover interao com o usurio. Tal como, botes, caixas de dilogo, mapas e outros. Bibliotecas Nela se encontra um conjunto de bibliotecas C/C++ que so utilizadas pelo sistema. Adaptadas para Linux, estas bibliotecas suportam diversos formatos de vdeo, udio, assim como funes de grcos, imagens estticas, funes de acesso a banco de dados, entre outros. Todos esses recursos podem ser integrados s aplicaes, dado que estes esto disponveis no framework. Abaixo, segue uma tabela que mostra algumas das principais bibliotecas encontradas na plataforma Android.
Tabela 3.1: Bibliotecas Android.

Denies Consiste no sistema de biblioteca padro C, para dispositivos baseados em Linux. Media Libraries Permite reproduo e gravao de diversos formatos de vdeo, udio e imagem esttica. Surface Manager Gerencia o acesso ao subsistema de exibio. LibWebCore Moderno navegador Android, incorporado com navegador web. SGL Gerador de grcos 2D subjacentes. 3D Libraries Software de 3D altamente otimizado, usado em hardware de acelerao 3D. Freetype Renderizao de imagens bitmap e vetoriais. SQLite Banco de dados relacional e leve que pode ser usado por qualquer aplicao.

Biblioteca System C library

Ambiente de Execuo A Mquina Virtual Dalvk foi desenvolvida para ser rodada com suporte a mltiplas instncias. Deste modo, cada aplicao do Android roda seu processo em uma instncia da mquina virtual. Esse recurso feito por uma instncia especial chamada zigote, responsvel por criar outras instncias da Dalvk VM.

3.1 Arquitetura Android

24

Kernel Linux O kernel do Linux utilizado como base do sistema operacional Android foi modicado para que o sistema fosse customizado de acordo com as necessidades e caractersticas dos dispositivos mveis, assim como novos drivers de dispositivo, modicaes ao sistema de gerenciamento de energia e um sistema responsvel por nalizar processos de maneira criteriosa quando h pouca memria disponvel. Alm de prover as tarefas fundamentais de um sistema, como gerenciamento de memria, pilha de protocolos de rede, modelo de drivers, segurana e gerenciamento de processos.

3.1.3

Android SDK

O desenvolvimento de uma aplicao para dispositivos mveis que utilizam a plataforma Android requer a utilizao do Android SDK (Software Development Kit) [13], que prov algumas ferramentas teis para o desenvolvimento dos aplicativos. Esto includos no Android SDK o aplicativo de debug, bibliotecas, documentao, cdigos exemplos, tutoriais e um emulador do sistema operacional Android. Ele suportado por diversos sistemas operacionais tais como, Linux, Mas OS X, Windows XP ou Vista, e pode se facilmente integrado ao Eclipse (Integrated Development Environment - IDE), por meio do plugin Android Development Tools (ADT) Plugin, que facilita o desenvolvimento das aplicaes por ser o IDE ocial da plataforma. Como foi dito, est includo no Android SDK um emulador, essa ferramenta simula todos os recursos de hardware e software tpicos de um dispositivo mvel que utiliza o sistema operacional Android. Nele tambm inclui uma variedade de capacidades de debug, tais como um console no qual voc pode registrar a sada do kernel, simular interrupes de aplicao, e simular os efeitos de latncia no canal de dados. Ser por meio dessa ferramenta que o desenvolvimento e os testes do framework proposto nesse projeto poder ser efetuado. Sobre a estrutura de um projeto Android, as aplicaes seguem uma base diferente das aplicaes comuns de Java. Por exemplo, algumas aplicao Android utilizam arquivos XML responsveis por denir os layouts que sero exibidos na tela, as classes devem ser derivadas da classe Activity (Atividade) e o mtodo principal das classes o mtodo onCreate. O aplicativo tambm trabalha com diretrios especcos dentro da pasta do projeto, cada um com suas nalidades. Os diretrios drawable, layout e values por exemplo, esto dentro do diretrio res e possuem respectivamente as funes de armazenar todas as imagens, todos os layouts e todos os valores estticos que podem ser utilizados por um arquivo XML.

CAPTULO 4

Aplicaes Baseadas em Mapas no Android

Para trabalhar e desenvolver aplicativos baseados em mapas no Android [18], necessrio a utilizao das APIs externas. Duas dessas APIs possuem permisso para desenvolvimento de aplicativos baseados em mapas para a plataforma Android, a Google Maps API, mantida pelo Google e a Mobile Maps [7], mantida pela Ericsson Labs. Essas APIs consistem em um conjunto de classes que fornecem a interface necessria para desenvolvimento de aplicaes capazes de carregar e exibir mapas, realizar consultas por endereo, realizar funes de zoom, acrescentar pontos de referncia, servios meteorolgicos, entre outras possibilidades. Dando ao desenvolvedor maior controle e exibilidade no desenvolvimento da aplicao.

(a) Google Maps.

(b) Mobile Maps.

Figura 4.1: Aplicaes Android baseadas em mapas executando em um emulador de dispositivo.

Atualmente, o framework do Android oferece um objeto grco capaz exibir os mapas providos pelo Google Maps, com o qual o usurio pode interagir, executando operaes de mudar a posio, localizar o prprio dispositivo, zoom e mudana do tipo de mapa a ser visualizado. Como o framework fortemente acoplado aos servios providos pelo Google Maps, apenas quatro tipos de visualizao de mapas so fornecidos: mapas de imagens de satlite, mapas topogrcos, mapas de ruas e visualizao de ruas (o que limitado a algumas cidades). Em todos estes mapas, a localizao denida em termos de coordenadas.

26

A maioria das aplicaes baseadas em mapas desenvolvidas para a plataforma Android utiliza-se da API do Google Maps. Como j foi dito, esse uma biblioteca externa que possibilita de maneira fcil o desenvolvimento de aplicaes com poderosos recursos. Esta ser a API utilizada para o desenvolvimento do prottipo do framework. Dado que essa API no possui recursos de utilizao de mltiplos mapas, o desenvolvimento desde prottipo ser de relevncia para identicar a estrutura de aplicaes baseadas em mapas, vericando a complexidade de compor mapas aos mapas fornecidos pelo Google Maps. Para o implementao, ser imprescindvel conhecer o pacote com.google.android.maps, onde se encontram as classes de controle, manipulao e visualizao de mapas [14]. Antes de integrar o Google Maps com as aplicaes Android, necessrio obter uma chave de utilizao. Para isto necessrio acessar o site1 , e inserir o MD5 ngerprint (cdigo obtido da assinatura da aplicao) e gerar a API Key. preciso ter uma conta no GMail para fazer essa operao. Tambm necessrio congurar o arquivo AndroidManifest.xml adicionando algumas permisses, que torna possvel importar o pacote com.google.android.maps. Feito isso, podem ser desenvolvidas aplicaes baseadas em mapas que utilizam as classes necessrias da Google Maps API. A Tabela 4.1 contm descries das classes encontradas na Google Maps API.
Tabela 4.1: Google Maps API

Classes MapActivity MapController GeoPoint ItemizedOverlay MyLocationOverlay Overlay OverlayItem TrackballGestureDetector MapView MapView.LayoutParams

Descrio Activity necessrias para visualizar um mapa. Controle de navegao e zoom. Valores de uma coordenadas geogrcas. Consiste numa lista de OverlayItems. Desenha a atual localizao do usurio no mapa. Possibilidade de sobrepor elementos ao mapa. Elemento de sobreposio. Analisa eventos de movimento e detecta gestos. Objeto grco obtido a partir do servio Google Maps. Informaes de layout associados ao MapView.

Outros recursos que podem ser trabalhados atravs das classes disponveis no pacote da API do Google Maps, so marcadores de pontos no mapa, bales informativos, que servem para exibir informaes sobre um determinado local e as linhas que ligam dois pontos estabelecidos previamente, podendo obter informaes da distncia entre esses dois pontos.
1 http://code.google.com/android/maps-api-signup.html

4.1 API de Localizao

27

Citando o componentes mais importantes para desenvolvimento de aplicaes para Android que utilizam a API do Google Maps temos, o componente MapView que a prpria representao do mapa que exibido. O MapActivity um tipo de Activity utilizada estritamente para visualizar MapViews, sendo que a aplicao no ir rodar para outros tipos de Activities. Outro componente o MapController, este utilizado por exemplo, para realizar movimentos sobre a visualizao do mapa e tambm para mudar o nvel de zoom. Por ltimo temos a classe Overlay permite que componentes MapViews sejam sobrepostos tais como, textos, imagens ou primitivas grcas, por uma ou mais camada a m de adicionar mais informaes enriquecendo gracamente s aplicaes com mapas. O Cdigo abaixo 4.1 apresenta uma simples aplicao que permite interao de zoom e navegao a um mapa obtido pelo servio do Google Maps. Cdigo 4.1 GoogleMaps
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

public class GoogleAndroidMaps extends MapActivity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // obtem visualizao do mapa MapView mapView = (MapView) findViewById(R.id.mapView); // adiciona controle de zoom LinearLayout zoomLayout = (LinearLayout) findViewById(R.id.zoom); View zoomView = mapView.getZoomControls(); zoomLayout.addView(zoomView, new LinearLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); //ativa controle de zoom mapView.displayZoomControls(true); } protected boolean isRouteDisplayed() { return false; } }

4.1

API de Localizao

Nesta API so fornecidas classe que provm utilidades no contexto de localizao. Seus mtodos podem ser encontrados no pacote android.location e tambm possui quatro principais componentes.

4.1 API de Localizao

28

A classe LocationManager tem a funo monitorar eventos e atividades de localizao. Por exemplo, atravs dessa classe possvel obter informao da posio geogrca do dispositivo e at mesmo disparar algum evento caso o dispositivo esteja nas proximidades de uma localidade especca. Outra classe a LocationProvider que visa fornecer servios de localizao de acordo com determinados critrios estabelecidos, como, por exemplo, informaes de velocidade, altitude, bssola e outros. As outras duas classes trabalham com informaes de pontos geogrcos xos, a classe Location identica esses pontos por meio dos valores de latitude e longitude. E a classe Geocoder permite que valores de latitude e longitude possam ser convertidos para um endereo, podendo obter o nome e o cdigo postal.

CAPTULO 5

Mapas Contextuais

Mapas so utilizados para representar a localizao relativa ou absoluta de algum objeto de interesse, suas caractersticas e suas relaes espaciais. Para os servios baseados em mapas, as informaes visuais de um mapa consiste na principal parte de interface, altamente relevante para interpretao humana [9]. Na denio proposta por Dey [4], informao contextual qualquer informao que descreve o estado de uma entidade. Considerando as questes que envolvem aplicaes sensveis ao contexto baseadas em mapas, o contexto mais importante para ser utilizado por um usurio, so informaes referentes a localizao. Tipicamente, as aplicaes baseadas em localizao fazem o uso de mapas providos por bases de mapas pr-determinadas, onde a localizao baseada em coordenadas geoespaciais (latitude, longitude, altitude). Embora a pesquisa em aplicaes sensveis localizao tenha produzido uma srie de mecanismos alternativos de localizao [15] e necessrios para uma srie de aplicaes, como smart rooms [26], a maioria dessas solues cou limitada a prottipos de pesquisa. Uma das razes a diculdade de integrao de tais aplicaes com as aplicaes tradicionais de localizao baseadas em localizao geoespacial, levando em conta aspectos como uso de diferentes semnticas de localizao, mltiplos provedores de localizao e mapas (usando diferentes protocolos de comunicao) e com mapas em diferentes formatos (vetoriais, bitmapeados, formato proprietrio) [16]. De fato, as aplicaes sensveis a localizao tm se mostrado de uso restrito a certos ambientes e provedores de mapas, e difceis de serem adaptados ou reutilizados em outro contexto fsico. Na prtica, uma aplicao que precise lidar com diversos tipos de localizao e seus correspondentes mapas, deve interagir independentemente com cada uma das fontes de mapas, interpretando as semnticas dos mapas e localizao. Alm do contexto de localizao, uma aplicao baseada em mapas pode fazer referencia a outros elementos contextuais relevantes para o usurio que denir o tipo de mapa adequado as suas necessidades. Orientao, tempo, histrico de navegao, ambiente fsico so algumas outras informaes contextuais identicadas por Nivala e Sarjakoski [29] para desenvolvimento de um servio de mapas adaptativos (GiMoDig).

5.1 Mapas como Informao Contextual

30

Este servio disponibiliza mapas em tempo real para dispositivos mveis. Aps personalizao do servio pelo usurio, os mapas so automaticamente adaptados para diferentes situaes de interesse/uso. Por exemplo, os mapas podem ser adaptados a partir da denio do contexto referente estao do ano de interesse. A Figura 5.1 ilustra a aplicao citada.

Figura 5.1: Servio de mapas adaptativos (GiMoDig) [29]

5.1

Mapas como Informao Contextual

Mapas contextuais so informaes de contexto que denem como um espao fsico interpretado em uma representao e interface grca, dado um contexto de uso [1]. Se comparadas a outras informaes de contexto, mapas contextuais possuem caractersticas especcas: O parmetro grau de detalhamento ou preciso do mapa altera a informao retornada para a aplicao. No caso do Google Maps, por exemplo, essa informao descrita como zoom do mapa. H um forte acoplamento entre a interao com o usurio e a interao com a base de mapas, quando o usurio pode solicitar diretamente operaes de navegao sobre um mapa. Os mapas so informaes tipicamente estticas ou que mudam com pouca frequncia. No caso do cenrio descrito, o mapa do evento ainda possui tempo de vida limitado (a ocorrncia do evento Espao das Prosses). Mapas so informaes dependentes de localizao e que variam de acordo com a semntica de localizao adotada. Um mapa para uma mesma localidade muda se a semntica de localizao preferida muda. Diferentes bases de mapas podem possuir diferentes formatos de mapas, incluindo formatos proprietrios. Associado a cada um desses formatos, est um mecanismo de renderizao do mapa em uma interface grca.

5.2 Cenrio

31

Cada semntica de localizao e de mapa pode prover suas prprias primitivas sobre localizao, como existncia, interseo, etc. Dois os mais mapas precisam ser baseados em um sistema de referncia comum para permitir uma transio suave entre eles. Todas essas caractersticas so ortogonais aos requisitos de adaptao dinmica de aplicaes baseadas em mapas em dispositivos mveis [6]. Essas caractersticas expem uma forte dependncia entre a base de mapas e a estrutura (que afeta a renderizao) dos respectivos mapas.

5.2

Cenrio

Considere o seguinte cenrio: um usurio est na UFG para participar do evento Espao das Prosses, no qual vrias salas da universidade so alocadas durante uma semana para demonstraes dos cursos de graduao. Para chegar ao local do evento, o usurio fez uso da aplicao de localizao, disponvel no seu dispositivo mvel, que utiliza a base de mapas do Google Maps e com o qual estabeleceu uma rota mais curta da sua casa at a universidade. O usurio deseja agora se localizar dentro do evento e descobrir as salas onde ocorrero atividades do seu interesse. Para isso, o usurio utiliza a mesma aplicao de localizao do seu dispositivo, localizando-o no evento de acordo com um mapa prprio da UFG e que agrega informaes do evento na forma de pontos de referncia no mapa. Por exemplo, o evento Palestra sobre mercado de trabalho em Cincia da Computao indicado no mapa da UFG como um ponto de referncia com anotaes como, por exemplo (palestra, 10/10/2009, 14:00 horas). O usurio utiliza a aplicao para estabelecer um caminho para o local da atividade. Neste cenrio, a aplicao dever lidar com dois tipos de localizao e dois tipos de mapas: mapas providos pela base do Google Maps na qual usurios e dispositivos so localizados a partir de localizao georeferenciada provida, por exemplo, por um sensor de GPS. mapas providos pela prpria universidade e dependentes do evento em questo. A localizao do usurio determinada a partir dos locais semnticos no qual o mapa dividido, por exemplo, Auditrio do Instituto de Informtica. Do ponto de vista da aplicao e do usurio, existem dois provedores de mapas: a universidade e o respectivo servio Google. A aplicao dever ser capaz de trabalhar com mapas fornecidos por provedores de uma determinada regio geogrca (no cenrio, isso se aplica universidade), que so sobrepostos aos mapas consolidados do Google Maps.

5.2 Cenrio

32

Para manter uma equivalncia de posicionamento entre os mapas e permitir uma transio suave entre eles, necessrio adoo de mecanismo de mapeamento de localizao entre os mapas. Desta maneira, a aplicao permitiria que o usurio mude de um mapa para outro, sem perder a consistncia na localizao informada. As funes bsicas de interao com uma base de mapas dependem do protocolo denido pelo provedor de mapas. Por exemplo, ao fazer o zoom em um mapa, uma aplicao poderia requisitar ao provedor uma imagem ampliada, ou at mesmo uma nova imagem com mais detalhes e pontos de referncia (POI - points of interest) [5]. Frameworks para desenvolvimento de aplicaes baseadas em mapas so fortemente acoplados a base de mapas e no podem ser estendidos para acesso a diversas bases de mapas. O cenrio apresentado ilustra a necessidade de desenvolver aplicaes que utilizem mapas contextuais, ou seja, mapas que representam um escopo fsico limitado e possuem uma semntica prpria de localizao. Dessa maneira, este cenrio sugere a necessidade de um framework para aplicaes baseadas em mapas, que permita aos provedores de mapas oferecerem componentes que possibilitem a integrao dos seus mapas em aplicaes e a troca suave de uma base de mapas para outra, seja por interao do usurio, seja por ao da aplicao. O framework deve ainda ser integrado com um middleware sensvel ao contexto que permita o tratamento de mapas como contexto, disparar descoberta e carregamento de mapas contextuais, de acordo com a localizao, assim como o controle da informao de localizao. Com o framework, deseja-se evitar a integrao explcita e esttica de uma aplicao com diversas bases de dados e interrelacionamento entre os mapas providos por cada base.

CAPTULO 6

Prottipo de Aplicao Baseadas em Mltiplos Mapas

6.1

Arquitetura do Prottipo

Para o desenvolvimento do prottipo devem ser considerados trs tipos de informao a serem compostos e exibidos para o usurio. Um mapa principal, provido pelo Google Maps. Uma imagem esttica representando um mapa e atributos que permitam colocalizlo no mapa principal Pontos de referncia vinculados ao mapa externo. A Figura 6.1 ilustra as principais camadas visuais da aplicao. O prottipo consiste de um mapa principal provido pelo Google Maps, onde pode ser feita mudanas entre os trs tipos de visualizao disponvel (Mapa, Terreno e Satlite), e um mapa da UFG sobreposto a este mapa principal, que pode estar visvel ou no. Vinculado a esse mapa, existir uma nova camada de sobreposio identicando os pontos de referncia especcos deste mapa.

Figura 6.1: Camadas visuais da aplicao.

6.2 Implementao

34

Por exemplo, considerando que o mapa sobreposto seja um mapa do Campus II da UFG, ao aproximar dessa regio, este mapa poder ser ativado por meio de um sinal de teclado, que indicar ao programa para exibir a imagem do mapa, e seus pontos de referncias. Para exemplicar, usaremos esses pontos de referncias dinmicos, isto , as informaes contidas neles esto relacionadas com um evento, tal como, Espao das Prosses. Esses pontos possuem atributos com valores de localizao, descrio e perodo, que serviro de informaes para o usurio e para o programa, onde aps o perodo indicado o ponto de referncia deve sumir. A Figura 6.2 apresenta a interface grca do prottipo.

Figura 6.2: Layout do prottipo.

6.2

Implementao

Inicialmente para desenvolvimento do prottipo, foi necessrio obter uma chave que permite o uso da API externa do Google Maps, e adio de dois elementos ao arquivo AndroidManifest.xml. O primeiro uma referncia para o biblioteca do Google Maps para Android1 , o segundo informa que a aplicao precisa ter direitos de acesso Internet para obteno dos mapas2 . O prottipo consiste em quatro elementos chaves: MapActivy, Overlay, ItemizedOverlay e MapController. Subclasse da MapActivity, a classe principal onde se encontra o atributo MapView, que consiste no mapa obtido do servio do Google Maps, e outros atributos tal como de controle (MapController), permitindo a interao com os mapas (navegao e zoom).
1 <uses-library

2 <uses-permission

android:name="com.google.android.maps"/> android:name="android.permission.INTERNET"/>

6.2 Implementao

35

Representando as camadas de sobreposio, temos o Overlay atuando como elemento referente ao mapa obtido a partir de uma imagem esttica. Este objeto composto pela imagem esttica do mapa adicionado a lista de Overlays do MapView, caso o usurio tenha ativado a opo de visualizar o mapa externo, todo vez que o MapView carregado os elementos presentes nesta lista tambm so carregados e desenhados sobre o mapa. Por m, para representar os pontos de referncias prprios do mapa externo, foi criada uma lista de itens (ItemizedOverlay), utilizados para inferir uma localizao. Subclasse de Overlay, os elementos dessa lista tambm so adicionados lista de Overlay do MapView e desenhados sobre o mapa externo.

6.2.1

Criando uma Nova Camada de Mapa

Para desenvolver uma aplicao baseada em mapas para Android que carregue uma nova camada sobre o mapa principal provido pelo Google Maps necessrio criar um objeto que seja uma subclasse da classe Overlay. Encontrada no pacote da API do Google Maps para Android, a classe Overlay representa um camada que ser exibida por cima do mapa. Para adio desta nova camada, necessrio que seja criada uma instncia da classe Overlay, e que esta instncia seja adicionada a lista de camadas de um MapView. O objeto MapView possui um atributo List<Overlay>, o qual representa uma lista com todos os elementos de sobreposio desse mapas. Esta lista pode ser obtida por meio de uma chamada ao mtodo MapView.getOverlays(). Fazendo referncia a este atributo, possvel adicionar ou remover elementos grcos ao mapa. Criado o elemento Overlay, e tendo adicionado este lista de camadas do MapView, todas as vezes que o mapa carregado, os elementos dessa lista tambm sero carregados. A exibio da camada dada pela chamada ao mtodo draw, o qual, a partir de atributos de imagens e de coordenadas correspondentes a pixels, possvel desenhar a imagem desejada em um ponto denido. O Cdigo 6.1 apresenta a estrutura do mtodo draw().

6.2 Implementao

36

Cdigo 6.1 Overlay.draw()


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) { super.draw(canvas, mapView, shadow); // define coordenada geogrfica de um ponto GeoPoint geoPoint = new GeoPoint((int) (-16.6 * 1E6), (int) (-49.273 * 1E6)); // passa coordenada para pontos em pixel Point screenPts = new Point(); mapView.getProjection().toPixels( (geoPoint), screenPts); // cria elemento grfico a partir de um imagem esttica Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.campus); // desenha a imagem na posio definiada canvas.drawBitmap(bmp, screenPts.x, screenPts.y, null); return true; }

CAPTULO 7

Framework de Desenvolvimento de Aplicaes baseadas em Mapas Contextuais

O objetivo do framework descentralizar os servios de mapas para dispositivos mveis baseados no sistema Android, possibilitando o desenvolvimento de servios de localizao que faam o uso de mapas de diferentes provedores e com diferentes semnticas de localizao, de acordo com o prprio contexto do usurio. Fortemente acoplados aos servios do Google Maps, as aplicaes Android baseadas em mapas podero ser expandidas para servios de mapas mais especcos providas por servidores diversos. A instanciao do framework prover componentes para acesso a um provedor de mapas especco, incluindo a implementao do protocolo entre aplicao e base de mapas, interpretao e renderizao de mapas. Dinamicamente, o framework selecionar os componentes que se aplicam aos mapas disponveis no contexto atual, levando em conta localizao ou de acordo com a preferncia do usurio na utilizao dos tipos de mapas. Em certo contexto, mais de um provedor de mapas pode ser utilizado pela aplicao e, tanto aplicao como usurio, podem chavear de um mapa para outro ou querer estabelecer a correspondncia entre eles. Para que isso seja possvel, o framework adota a premissa de que todos os provedores de mapas devem possuir ao menos um sistema de coordenadas em comum. O projeto do framework adotou o sistema de coordenadas geoespaciais, baseada em (latitude, longitude, altitude) como referncia comum entre os mapas. Dessa maneira possvel correlacionar mapas que correspondem a uma mesma regio geogrca, por exemplo, mapas dos andares de um edifcio, ou mapas de diferentes fontes, mas que representam uma mesma regio. Um dos pontos principais do framework possibilitar a comunicao com os servidores de mapas externos. A idia por trs dessa interao permitir que as aplicaes possam se inscrever em eventos de mapas atravs de um middleware sensvel ao contexto. Dessa maneira o dispositivo que atualiza frequentemente sua localizao ao entrar em uma regio que possui um servio de mapas disponvel ser capaz de comunicar-se com estes

7.1 Arquitetura do Framework

38

servidores atravs do mesmo middleware sensvel ao contexto. A questo sobre a integrao de um sistema de descoberta ao framework proporcionada por um conceito proposto por Mark Weiser em 1991 [31], conceito denominado como Computao Ubqua. Esta nova viso para computao sugere que recursos computacionais estejam presentes em todo o lugar e a qualquer momento. Aps a identicao de um servio de mapas disponveis, a aplicao ser capaz de comunicar-se com a base de mapas. Essa comunicao ser denida a partir de protocolos desenvolvidos para cada instncia do framework, permitindo que as informaes de mapas possam ser transmitidas por meio de solicitao do usurio para serem trabalhadas de maneira adequada pelo framework. Por exemplo, obter uma imagem de mapa e exibi-la para o usurio.

7.1

Arquitetura do Framework

Baseado no padro de arquitetura de software MVC (Model-ViewController) [17], o desenvolvimento desses trs componentes tm o intuito de separar as tarefas fundamentas de interao com o usurio, acesso aos dados, lgica de exibio entre outras tarefas necessrias para a criao de servios baseados em mapas. A Figura 7.1 ilustra a arquitetura do framework.

Figura 7.1: Arquitetura do Framework

O componente Model responsvel por identicar e estruturar as informaes que so manipuladas pelo Framework. Estes atributos sero especcos para cada instn-

7.1 Arquitetura do Framework

39

cia do Framework, identicando e caracterizando todos os valores que sero utilizados e armazenados na Base de Mapas. Os componentes de renderizao e de interao com o usurio sero denidos no componente View. Tratando-se de operaes com mapas algumas operaes bsicas so exigidas, tais como: navegao, zoom in/out. Para cada instncia do Framework essas operaes podem ser tratadas de formas diferentes. Por exemplo, a operao de zoom in pode ser implementada como uma alterao na escala da imagem, ou como uma nova requisio Base de Mapas para obteno de uma imagem mais detalhada. No componente Controller so encontrados os elementos responsveis pela comunicao com o middleware sensvel ao contexto e com a Base de Mapas. A comunicao para obteno das informaes de mapas denida por meio de um protocolo de comunicaes sncronas para cada instncia do Framework, identicado atravs do Gerenciador de Comunicao Sncrona. O Controlador Sensvel ao Contexto responsvel por interagir com o middleware sensvel ao contexto, requisitando noticaes assncronas quando o contexto interfere no funcionamento da aplicao baseada em mapas. H no mnimo duas informaes contextuais que podem interferir no funcionamento da aplicao: a localizao e o mapa associado localizao. Do ponto de vista do funcionamento do framework, no h diferena entre obter a localizao a partir de uma interao com a UI ou de uma noticao recebida por um middleware. Em um cenrio esttico, eventos de interface do usurio disparam a troca do mapa e/ou execuo de operaes com a base de mapas. O controlador registra junto ao middleware o interesse em receber noticaes de tipos de mapas para uma determinada localizao. O framework utiliza as noticaes para atualizar no componente View a interface que permite ao usurio selecionar um mapa ou outro para exibio. Portanto, uma requisio a novo mapa pode ser disparada de duas formas: por interao do usurio (eventos de UI): componente View atualiza na interface os tipos de mapas disponveis para a localizao coberta pela aplicao, e ele ento pode selecionar qual tipo de mapa atende melhor aos seus requisitos. Neste caso, o middleware recebe o registro pelo interesse em todos os tipos de mapa que se aplicam a uma localidade. programaticamente : a aplicao baseada no framework recebe as noticaes da existncia ou alterao dos mapas existentes e decide exibir ou no um dos mapas disponveis. A aplicao pode, por exemplo, se interessar apenas em um tipo de mapa e portanto, deve registrar no middleware um interesse que corresponda sua necessidade. Neste caso, o framework deve permitir aplicao alterar a regra de registro de interesse no middleware. O cdigo abaixo mostra um exemplo tpico de registro de interesse no middleware sensvel ao contexto, indicando que o framework deve ser noticado caso existam

7.2 Componentes do Framework

40

novos mapas (evento contextual MapEvent) em cuja rea de localizao se inclua a localizao corrente (varivel currentLocation). Esta primitiva segue uma sintaxe de descrio de interesse em contexto j adotada em [3]. subscribe(MapEvent, "currentLocation in map.LocationArea"); Nesta interao podem ser realizadas comunicaes sncronas ou assncronas entre o controlador e o middleware sensvel ao contexto. O controlador sensvel ao contexto o nico frozenspot, isto , o nico elemento imutvel presente em todas as instncias do framework [20].

7.2

Componentes do Framework

FWView: Assim como os elementos do grupo View baseados na plataforma Android so responsveis pela apresentao grca da interface com o usurio, o componente FWView pode constituir o prprio elemento View que ser atribudo ao display do dispositivo, ou possuir os mtodos para manipular esses valores visuais. Este componente deve ser implementado de acordo com as informaes de mapas trabalhadas pela aplicao para que essas possam ser manipuladas e exibidas, considerando que a prpria informao de mapa consiste na interface com o usurio. Cada FWView associada a um controlador apresentado apenas como um atributo do tipo FWController. Este atributo responsvel por traduzir as operaes requeridas capazes de trabalhar com semnticas diversas de localizao, isto , capaz de manipular diferentes valores obtidos por diversas bases de mapas. Este componente pode ser obtido atravs do mtodo getFwController(). Denida a semntica utilizada por um servio de mapas, necessrio que esta possua referncia ao sistema de coordenadas geogrcas, dessa forma possvel efetuar uma troca suave entre os mapas contextuais de interesse atravs do mtodo changeContexMap(). O mtodo getMapCenter(), por sua vez, responsvel por determinar o centro do mapa considerando o sistema de coordenadas geogrca. Outros mtodos importantes so: clearFWView() capaz de limpar as informaes contextuais do mapa em questo, retornando para o estado simples da aplicao, e o updateFWView() utilizado para preparar/atualizar as informaes exibidas, principalmente quando alterada a semntica de localizao. Considerando servios baseados em mapas, necessrio denir o grau de detalhamento do mapa. No caso do Google Maps, por exemplo, essa informao descrita como zoom do mapa. Para tratamento dessas informaes o framework implementa os mtodos getZoomLevel() e getMaxZoomLevel().

7.3 Implementao no Android

41

FWController: Responsvel pelas operaes internas de controle dos mapas e externas de comunicao com outros componentes do sistema. O FWController associado ao componente View, sua construo padro deve ser feita enviando como parmetro o elemento FWView o qual referente ou sendo obtido pela requisio ao mtodo getFwController(). As primitivas de localizao, como existncia e interseo, so denidas para cada semntica utilizada pelos mapas contextuais a partir do servio oferecido. Dessa maneira, cada instncia do framework dene qual o tratamento para cada interao com o mapa. Alguns desses mtodos encontrados no componente controlador do framework so: setCenter(GeoPoint geoPoint), panEast(), panNorth(), panSouth(), panWest(), setZoom(int zoomLevel), zoomIn(), zoomOut(). Estes mtodos fazem alteraes diretamente ao componente visual, os cinco primeiros esto relacionados navegao no mapa e os trs ltimos ao nvel de detalhamento do mapa. Estas operaes podem constituir em novas requisies efetuadas ao servio de mapas atravs de tcnicas de comunicao, tais como, conexo via socket ou via URL (Uniform Resource Locator), denidas a partir de protocolos bem denidos para cada instncia do framework. Responsvel por interagir com a base e mapas, para cada instncia do framework devem ser implementados alguns mtodos de busca de acordo com a semntica de localizao utilizada pelas bases de mapas. Como todos os servios, independentes da semntica utilizada possuem referncia ao sistema de coordenadas geogrcas, o mtodo padro de busca o searchContextMapbyGeoPoint(GeoPoint geopoint). Este mtodo retorna um objeto interpretado pelo componente Controller de acordo com as denies de dados presentes no componente Model.

7.3

Implementao no Android

A implementao do Framework baseada na estrutura para aplicaes Android que utiliza a linguagem Java para desenvolvimento. Para representao dos valores que sero manipulados pelos componentes do Framework, a linguagem Java permite trabalhar de diversas formas, sendo essa representao denida pelo desenvolvedor de acordo com as especicaes do seu projeto. Para implementao e teste desse Framework ser utilizado exclusivamente o emulador Android disponvel junto com o SDK da plataforma, juntamente com o ambiente integrado para desenvolvimento Eclipse devidamente congurado com o plugin para desenvolvimento Android. A atual verso do framework faz uso de classes presentes na API do Google Maps, deste modo necessrio que no desenvolvimento das aplicaes seja inserido ao

7.3 Implementao no Android

42

AndroidManifest.xml a dependncia ao pacote Google Maps para Android 1 , como tambm deve ser inserido a permisso de acesso Internet2 , com essa permisso ser possvel que as aplicaes se comunique com as bases externas de mapas. Adicionando o pacote de uma das instncias do framework, a aplicao capaz trabalhar com os componentes presentes na implementao da instncia do framework em questo. Deste modo, a aplicao ao iniciar um componente View, ir inicializar o servio de descoberta por meio do controlador sensvel ao contexto, ao identicar novos servios de mapas presentes em uma determinada regio ser possvel alterar a informao exibidas nos dispositivos, como tambm efetuar operaes com este servio de localizao baseado em mapas. O servio de mapas provido pelo Gooogle Map tambm basedo no princpio da separao de seus componentes segundo o padro MVC. O componente responsvel pela interao com o usurio o componente MapView, esta classe consiste no prprio elemento visual que atributo ao display do dispositivo. A construo dessa classe j corresponde na comunicao com a base de mapas do Google Maps, por padro, sua viso inicial so os mapas que compem o continente americano em sua totalidade e em um nvel de zoom mais afastado. Efetuada requisies de navegao ou zoom, por exemplo, o elemento MapView remapeado efetuando novas requisies a sua base de mapa para obter os novos mapas de interesse. Essa operaes so controladas pelo componente MapControler. Este componente consiste e um elemento associado ao MapView responsvel pelo controle das informaes apresentadas. Toda interao e requisio feita ao MapView so enviadas para o seu MapController fazendo com que o componente MapView possa ser atualizado. O componente View do framework responsvel pelos elementos visuais oferecidos ao usurio pode trabalhar de duas maneiras. A primeira, tal como o MapView, permite que o prprio componente possa representar o elemento visual sendo enviado para o controlar do layout da aplicao. Na segunda maneira, os mtodos encontrados no componente sero capazes de adicionar e denir as informaes que sero identicadas no layout do Android. Esta mesma lgica pode ser associada ao componente Controller. Esta segunda maneira possibilita o desenvolvimento de um instncia do framework capaz de trabalhar com diferentes informao visuais, dessa maneira possvel adaptar os componentes MapView e MapController aos respectivos componentes View e Controller do framework por meio da insero desse atributos e o mapeamento dos mtodos do framewok para os mtodos desses atributos. Diferentemente do primeiro mtodo o qual trabalharia com diferentes atributos
1 <uses-library

2 <uses-permission

android:name="com.google.android.maps"/> android:name="android.permission.INTERNET"/>

7.4 Etapas de Desenvolvimento e Interface com Base de Mapas

43

do componente View para cada instncia utilizada no desenvolvimento da aplicao, e no caso da utilizao dos componente MapView e MapController, estes seriam atributos pertencente da prpria aplicao e no da instncia do framework.

7.4

Etapas de Desenvolvimento e Interface com Base de Mapas

Inicialmente devem ser denidos/identicados todos os tipos de dados e valores que sero utilizados pelo servio de mapas. Este mapeamento consiste na construo do componente Model, responsvel pela identicao dos dados e valores de interesses manipulados pelas aplicaes envolvidas no servio de localizao baseada em mapas. O principal componente de um servio baseado em mapas a prpria base de mapas. As denies proposta para a estrutura deste componente sero responsveis pelo comportamento dos outros componentes. A estruturao de uma base de mapas consiste em determinar como os valores de interesse sero armazenados e manipulados, visando o fornecimento do servio de localizao, como tambm, as informaes de mapas. Dado que a base de mapas o componente responsvel pelo servio baseado em mapas, e necessrio denir os protocolos de comunicao assim como as vias de comunicao que sero utilizao pelas aplicaes para obteno dos seus servios. Essas denies ditaro o comportamento e implementao dos outros componentes que efetuam troca de informaes com a base de mapas. Para que a base de mapas seja capaz de oferecer um sistema de descoberta o qual oferecer um servio de localizao baseado em mapas contextuais, deve ser utilizado um middleware sensvel ao contexto capaz de registrar a disponibilidade dos servios desta base de mapas especicando sua determinada rea de atuao. Alm de publicar o servio junta ao middleware sensvel ao contexto para disponibilizao do servio de localizao e os prprios mapas contextuais, a base de mapas deve prover servios de busca de acordo com a semntica de localizao utilizada pelos seu mapas. Como todas as instncias devem associar a semnticas utilizadas ao sistema de coordenadas geogrcas, a base de mapas, obrigatoriamente, deve oferecer um servio de busca por posicionamento geogrco. Responsvel por denir os mecanismos de renderizao e interao com o usurio, o desenvolvimento do componente View este voltado para a apresentao visual dada para a aplicao considerando que as prprias informaes dos mapas contextuais consistem na representao visual de interesse. Os valores visuais devem ser mapeados para o componente View do Android para que estas possam ser aplicadas ao display do dispositivo. Os mtodos presentes no componente View denem o tratamento das

7.4 Etapas de Desenvolvimento e Interface com Base de Mapas

44

requisies e aes que podem ser fornecidas ao usurio, que podem ou no serem enviadas para o componente Controller associado a View em questo. O componente Controller implementado de acordo com as denies dos protocolos de comunicao, dos elementos contextuais os quais sero manipulados e dos servios oferecidos pelas bases de mapas. Nele encontra-se o controlador sensvel ao contexto responsvel pelas requisies a servios de mapas. Atravs dele o controlador receber noticaes quando um servio de mapas puder ser acessado. Identicado um servio de mapas disponvel, ser possvel efetuar a comunicao com este servidor para obteno das informaes de mapas contextuais. Tanto as requisies por servios de mapas por meio do middleware sensvel ao contexto, quanto a comunicao com a base de mapas pode ser inicializada por interveno do usurio ou programaticamente, assim como as operaes de busca efetuadas a uma base de mapas. Os mtodos presentes no componente Controller esto associados principalmente aos servios disponibilizados pelas bases de mapas a partir de seus protocolos de comunicao. Os servios de busca, por exemplo, necessitam de protocolos especcos para cada tipo de busca para efetuar a troca de informaes entre a aplicao e a base de mapas. Outro recurso presente no componente Controller que pode ser mapeado para comunicao com a base de mapas a alterao no nvel de detalhamento dos mapas apresentados (zoom in/out), tal como feito no Google Maps.

CAPTULO 8

Avaliao e Testes

A aplicabilidade do framework testada por meio de estudos de casos os quais se denem como instncias do framework. No primeiro estudo de caso foi especicado como sendo um servio baseado em mapas como imagens xas baseadas em localizao geogrca.

8.1

Base Esttica

A construo de um servio de mapas iniciada pela denio dos dados, valores e atributos utilizados e como estes so relacionados. Para este estudo de caso foram identicados dois principais atributos, a imagem esttica da regio e as coordenadas geogrcas que delimitam a regio referente ao mapa, relacionados por meio de um objeto que possua pelo menos esses dois atributos. Foi denido que as informaes de mapas contextuais seriam associadas a um objeto serializvel capaz de ser transmitido por meio de um canal de comunicao sncrona via socket. Este objeto possui um valor inteiro referente ao nvel de zoom adequado, duas informaes de posicionamento geogrco representando os pontos superior esquerdo e o inferior direito capazes de inferir a regio representada pelo mapa contextual, por m, trs valores textuais, a primeira representado o nome do mapa, o segundo consiste no caminho de diretrios onde a imagem esta salva na base de mapas e a terceira a informao da URL (Uniform Resource Locator) onde tambm pode ser encontrada a imagem do mapa contextual. Outro componente presente no componente Model desse estudo de caso um objeto que tambm representa as informaes de um mapa contextual, porm este objeto trabalhado apenas pelos componentes do framework associados a plataforma Android. Nele so encontrados as informaes de nome e posies geogrca, tal como o objeto descrito anteriormente, e um atributo de valor Bitmap interpretado aps o carregamento da imagem. A gura 8.1 apresenta o diagrama UML do Estudo de Caso. O servidor de mapas contextuais ou a base de mapas consiste em uma aplicao Java capaz que disponibiliza informaes de mapas contextuais atravs de comunicao

8.1 Base Esttica

46

Figura 8.1: Diagrama de Classe do Estudo de Caso

via socket (porta de comunicao = 7895). Para este estudo de caso foram desenvolvidos dois servios de busca, por nome e por posicionamento geogrco. Ao iniciar este servidor so carregados todos os mapas contextuais presentes na base de mapas. Estes valores so adicionados a uma lista na qual sero efetuadas as requisies de busca por mapas contextuais. Aps inicializao dos atributos relevantes ao servio de mapas, aberto um canal de comunicao via socket atravs da porta 7895. Neste momento o servidor ca esperando que alguma aplicaes faa conexo, sendo aceita alguma comunicao, o servidor espera que a aplicaes envie um valor inteiro (0 ou 1), que identica qual requisio est sendo solicitada, busca por nome ou por posicionamento geogrco. Para o primeiro caso, o servidor novamente ir esperar que a aplicao envie um valor textual para que atravs deste seja feita uma busca pelo nome na lista de informaes de mapas contextuais, no segundo caso ser enviada pela aplicao um valor de posicionamento geogrco para que seja feita uma busca por localizao geogrca atravs das informaes que denem a regio mapeada pelo mapa contextual. Para os dois casos, esta base de mapas enviar uma lista de informaes de mapas contextuais contendo todas as informaes dos mapas requisitados e encontrados pelo servio de busca fornecido. Por m, o servidor fecha o canal de comunicao utilizado e volta a esperar novas conexes e requisio.

8.1 Base Esttica

47

Da parte da aplicao, isto , o elemento que faz uso dos componentes presentes no estudo de caso do framework, esta consiste em uma aplicao baseada na plataforma Android associada a dois servios baseados em mapas, um fornecido pelo Google Maps e outro fornecido pela base de mapas externa descrita acima. O tratamento dado os mapas obtidos pela base esttica ser de sobreposio ao mapa do Google Maps. Deste modo, um dos elementos visuais trabalhados pelo componente View do estudo de caso o prprio MapView disponibilizado pelo Google Maps. Este elemento consiste no principal elemento visual que ser carregado no dispositivo para exibir as informaes de mapas, e consistir no visualizao padro da aplicao capaz de interagir com o usurio por meio de navegao e alterao do grau de detalhamento (zoom in/out) do mapa exibido. A aplicao ir se comunicar com o servidor apenas quando for solicitado uma busca por mapas contextuais atravs dos mtodos searchByName ou searchByGeoPoint encontrados na instncia do componente Controller. Sendo requisitada a busca por mapas contextuais, a aplicao ir conectar-se ao servidor via socket. Sendo aceita a conexo, a aplicao envia um valor inteiro o qual identica a requisio que deve ser tratada pelo servidor, busca por nome por posicionamento geogrco. No primeiro caso, ser enviado para o servidor um valor textual para pesquisa e no segundo caso valores de latitude e longitude. A resposta do servidor para ambas as requisies ser uma lista de objetos com as informaes dos mapa requisitados, este objetos devem ser traduzidos para o objeto de informao de mapas contextuais interpretada pela aplicao Android. Essa traduo feita de maneira sequencial e os novos elementos so adicionados a uma nova lista. A cada traduo, a aplicao faz uma conexo via URL atravs do endereo obtido do objeto que esta sendo traduzido. Esta conexo efetuada para carregar um array de bytes referente imagem esttica do mapa contextual em questo, este array de bytes convertido para um objeto Bitmap, isto , a representao visual do mapa contextual, e adicionado como elemento do objeto traduzido. Por m, atualizada a View exibindo a imagem obtida sobrepondo-a ao mapa do GoogleMap fazendo os ajustes necessrio de zoom e posicionamento do centro do display. Como os mapas externos so sobrepostos as componente MapView, algumas operaes de interao com o usurio foram mapeadas utilizando os mtodos referentes do prprio MapView MapController. O Apndice A apresenta do uxograma de comunicao do servidor e da aplicao.

CAPTULO 9

Trabalhos futuros

1. Estudo do servio de mapas fornecido pelo middleware Mobilis, que sero utilizados pelo framework com intuito de trabalhar com a obteno de mapas externos. 2. Implementar uma base de mapas que faa uso intensivo de localizao simblica, por meio da decomposio dos mapas da base esttica em diversos sub-mapas. Este exemplo permitir avaliar a incorporao de operaes em localizao simblica, como vizinhana e interseo, na arquitetura provida. 3. Desenvolvimento do Framework para criao de aplicativos baseadas em mapas com servio de mltiplos mapas, a partir das caractersticas planejadas. 4. Outro aspecto que dever ser explorado mais tarde, a incorporao de OSGi na arquitetura para permitir o carregamento sob-demanda de instanciaes do framework, de acordo com as fontes de mapas que se aplicam localizao do usurio. 5. Escrita da Monograa de PFC

CAPTULO 10

Concluso

Existem alguns paradigmas prprios para desenvolvimento de aplicaes Android, apesar de serem desenvolvidas em linguagem Java que proporciona certa comodidade para o desenvolvedor advinda dos benefcios dessa linguagem, necessrio entender como dada a estruturao de um projeto Android, assim como seus elementos chaves, por exemplo, os arquivos de congurao escritos em XML. Considerando aplicaes baseadas em mapas para a plataforma Android, fundamental o estudo e entendimento das APIs externas que possibilitam o desenvolvimento de aplicaes capazes de exibir e manipular informaes de mapas obtidas a partir de provedores desses servios. A partir desse estudo possvel identicar alguns componentes essenciais para desenvolvimento de servio baseados em localizao. O grande problema desses provedores de mapas sua centralizao em uma nica base de dados sempre utilizando tcnicas de localizao por meio de coordenadas geogrcas. Em certos contextos, uma aplicao pode requerer informaes de mapas de diversas fontes, dado que cada provedor de mapa pode utilizar uma semntica de localizao especca, uma das diculdades para o desenvolvimento desse Framework o chaveamento entre os mapas ou at mesmo estabelecer correspondncia entre eles devido ao fato desses servios utilizarem semnticas prprias. Tendo em vista a necessidade de estabelecer correspondncia entre informaes de mapas que utilizem semnticas de localizao diferente, foi adotada a premissa de que todas as instncias do Framework devem ter pelo menos um sistema de coordenadas em comum. Dessa maneira as associaes e transies entre mapas sero feitas de maneira mais suave. O prottipo apresentado nesse documento foi desenvolvido considerando uma camada com informao de mapa e outra de pontos de referncia sobrepostas ao mapa principal obtido pelo servio do Google Maps. Dessa maneira, os pontos de referncia assim como o mapa obtido a partir de uma imagem esttica so denidos a partir de coordenadas geogrcas, dicultando a associao das informaes entre essas duas camadas.

50

O primeiro esboo da arquitetura para o Framework apresenta uma serie de componentes a primeira vista identicado como hotspots, sendo estes componentes denidos em cada instncia do Framework, cada projeto pode trabalhar de melhor maneira que lhe convm. Porm a falta de especicaes acaba gerando certas diculdades de denir quais as entidades so equivalentes e necessrias para todas as instncias, e que sejam necessrias para implementao do Framework. As caractersticas especcas dos mapas contextuais acabam gerando uma grande quantidade de primitivas as quais o Framework deve ser capaz de trabalhar. Dessa maneira, gerada uma forte dependncia entre a base de mapas e a estrutura que compem as informaes de mapas, denindo assim protocolos como as informaes visuais sero renderizadas.

Referncias Bibliogrcas

[1] B AUS , J.; C HEVERST, K.; K RAY, C. A survey of map-based mobile guides, 2005. [2] B ERNHARDSEN , T. Geographic Information Systems: An Introduction. John Wiley & Sons, 3rd edition, 2002. [3] DA R OCHA , R. C. A. Context Management for Distributed and Dynamic ContextAware Computing. PhD thesis, PUC-RJ, 2009. [4] D EY, A. K.; A BOWD, G. D.; S ALBER , D. A conceptual framework and a toolkit for supporting the rapid prototyping of context-aware applications. HumanComputer Interaction, 16(2, 3 & 4):97166, 2001. [5] E DWARDES , A.; B URGHARDT, D.; W EIBEL , R. Portrayal and generalisation of point maps for mobile information services. Department of Geography, University of Zurich. [6] E NDLER , M.; M ALCHER , M.; AQUINO, J. F.; F ONSECA , H.; VALERIANO, A. Handbook of Research on Mobile Software Engineering: Design, Implementation and Emergent Applications, chapter Developing Map-based and Location-aware Collaborative Applications for Mobile Users. IGI Global, 2010. [7] E RICSSON L ABS . Mobile maps. Disponvel na Internet em:

<https://labs.ericsson.com/apis/mobile-maps/>, acesso em Novembro, 2009. [8] FALAT, D. R. Disponibilizao de mapas na web. 2008. [9] G OLLEDGE , R. G. Human waynding and cognitive maps. in waynding behavior: Cognitive mapping and other spatial processes. p. 545, 1999. [10] G OOGLE I NC . Android developer challenge. Disponvel na Internet em:

<http://code.google.com/android/adc/>, acesso em Outubro, 2009. [11] G OOGLE I NC : A NDROID D EVELOPERS . Android architecture. Disponvel na Internet em: <http://developer.android.com/guide/basics/what-is-android.html>, acesso em Setembro, 2009.

Referncias Bibliogrcas

52

[12] G OOGLE ers:

I NC :

A NDROID and

D EVELOPERS . Disponvel

Android na

developem:

Location

maps.

Internet

<http://developer.android.com/guide/topics/location/index.html>, acesso em Outubro, 2009. [13] G OOGLE I NC : A NDROID D EVELOPERS . Setembro, 2009. [14] G OOGLE Disponvel I NC : na A NDROID Internet M APS . em: Package com.google.android.maps. acesso em Android developers: Sdk. Disponvel

na Internet em: <http://developer.android.com/sdk/1.5_r3/index.html>, acesso em

<http://code.google.com/android/add-ons/google-

apis/reference/com/google/android/maps/package-summary.html>, Outubro, 2009.

[15] H IGHTOWER , J.; B ORRIELLO, G. Location systems for ubiquitous computing. Computer, 34(8):5766, 2001. [16] H JELM , J. Creating Location Services for the Wireless Web. Wiley, 2002. [17] K RASNER , G. E.; P OPE , S. T. A description of the model-view-controller user interface paradigm in the smalltalk-80 system. Programming, 1:2649, 1988. [18] L ECHETA , R. R. Google Android: Aprenda a criar aplicaes para dispositivos mveis com o Android SDK. Novatec, 1st edition, 2009. [19] M ALCHER , M.; AQUINO, J.; R OCHA , R.; E NDLER , M.; F ONSECA , H. Mobilis: Uma arquitetura para aplicaes mveis colaborativas e sensveis a contexto. 2008. [20] M ARKIEWICZ , M. E.; L UCENA , C. J. Object oriented framework development. [21] M ENG , L. Missing theories and methods in digital cartography. Proceedings of the 21st International Cartographic Conference (ICC), Durban, South Africa, 2003. [22] M ENG , L.; R EICHENBACHER , T. Map-based mobile services. Human-Computer Interaction, 2005. [23] O PEN H ANDSET A LLIANCE , G OOGLE I NC.. Open handset alliance. Disponvel na Internet em: <http://www.openhandsetalliance.com/>, acesso em Agosto, 2009. [24] P RADHAN , S. Semantic location. Personal and Ubiquitous Computing, 4(4):213 216, Dec. 2000. [25] R OCHA , J. A. M. R. GPS - Uma Abordagem Prtica. Bagao, 4th edition, 2003. Journal of Object-Oriented-

Referncias Bibliogrcas

53

[26] R OMAN , M.; H ESS , C.; C ERQUEIRA , R.; R ANGANATHAN , A.; C AMPBELL , R.; N AHRSTEDT, K. A middleware infrastructure for active spaces. Pervasive Computing, IEEE, 1(4):7483, Oct.-Dec. 2002. [27] R OTH , J. The role of semantic locations for mobile information access. University of Hagen Department for Computer Science. [28] R OTH , J. Data collection, in jochen schiller, agnes voisard (eds), locationbased services. Morgan Kaufmann Publishers, Maio 2004. [29] S ARJAKOSKI , L. T.; N IVALA , A.-M. Adaptation to context: A way to improve the usability of mobile maps. Department of Geoinformatics and Cartography, Finnish Geodetic Institute, 2003. [30] VACCARI , L.; S HVAIKO, P.; M ARCHESE , M. A geo-service semantic integration in spatial data infrastructures. International Journal of Spatial Data Infrastructures Research, 4:2451, 2009. [31] W EISER , M. The computer for the 21st century. Scientic American, p. 94100, 1991. [32] W IKIMEDIA
DIA .

F OUNDATION : Dalvik virtual

W IKIPDIA machine.

T HE Disponvel

F REE na

E NCYCLOPE Internet em:

<http://pt.wikipedia.org/wiki/Dalvik_virtual_machine>, acesso em Setembro, 2009.

Apndice A

55

APNDICE A

Fluxogramas de Comunicao: