Construindo aplicações baseadas em localização no Andoid

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (0)  (0)

O artigo trata da construção de aplicações baseadas em localização em Android (location-based services) e os principais componentes da API de Localização e de Mapas disponíveis na plataforma.

Esse artigo faz parte da revista WebMobile edição 20. Clique aqui para ler todos os artigos desta edição

imagem_pdf.jpg

 

Android

Construindo aplicações baseadas em localização no Android

 

De que se trata o artigo:

 Construção de aplicações baseadas em localização em Android (location-based services) e os principais componentes da API de Localização e de Mapas disponíveis na plataforma.

Para que serve:

Fornecer ao desenvolvedor uma alternativa tanto de construção de aplicações baseadas em localização quanto a utilização de mapas e criação de camadas adicionais – Overlays – que permitem dar mais expressividade gráfica para as aplicações móveis em Android.

Em que situação o tema é útil:

  Quando o usuário final precisa realizar determinada ação que pode ser facilitada se utilizadas aplicações que estejam enquadradas no contexto de serviços baseados em localização, como guias para rotas, descoberta de serviços disponíveis em determinada localidade (como farmácias, restaurantes, pizzarias e outros), etc.

 

Os serviços baseados em localização (location-based services) têm se tornado umas das funcionalidades mais interessantes no contexto de serviços disponíveis para dispositivos móveis. Um exemplo bem prático são os receptores GPS (Global Positioning System) que exibem ao usuário a rota a ser percorrida de uma localidade para outra ou mostram um conjunto de serviços (farmácias, restaurantes, pizzarias, etc) disponíveis em uma determinada posição geográfica ou em uma localidade próxima, sendo que, na maioria das vezes, essas localizações são visualizadas por meio de mapas. E alguns smartphones já estão sendo fabricados e integrados com GPS (um exemplo é o N95 da gigante filandesa Nokia). E uma das inúmeras inovações na plataforma Android é a total integração destes dois componentes: localização e mapas, sendo este segundo representado pelo Google Maps em sua versão para Android.

Este artigo tem como objetivo explicar as funcionalidades do Google Maps disponíveis na versão móvel, as APIs de Mapas e de Localização. Para isso, o leitor aprenderá por meio de um exemplo prático como criar uma aplicação que permite visualizar uma lista de seus contatos e suas respectivas localizações no mapa por meio do componente Overlay.

 

Google Maps no Android

O Google Maps é talvez um dos serviços de mapas mais utilizados no globo terrestre. Isso é facilmente explicado quando realizamos, por exemplo, uma simples busca de uma localidade ou caso desejemos saber qual a rota a ser seguida entre duas localidades. As facilidades que o serviço disponibiliza para nós usuários são enormes.

Este serviço já tão comum na Web agora está disponível na plataforma Android, com algumas restrições impostas pelos limites dos dispositivos móveis, porém não comprometendo as principais funcionalidades oferecidas pelo Google Maps embutido. E ele pode ser acessado, estando na tela principal do emulador (caso não esteja, clique no botão Home, representado pelo ícone de uma casa), clicando no botão “All”, depois em “Maps” (foi utilizado o próprio emulador do Android - Android Emulator – para realizar a emulação. Este pode ser carregado quando se roda uma aplicação em Android ou clicando no executável emulator.exe que se encontra dentro da pasta bin/ a partir do diretório raiz do SDK da plataforma). A Figura 1 mostra como o Google Maps é visualizado na tela do emulador.

 

Figura 1. Google Maps com as suas principais funcionalidades.

 

Com Google Maps carregado, podemos conferir suas funcionalidades clicando no Botão “Menu” ao centro do emulador. As opções disponíveis são: Search, Directions, Layers, About e Zoom. A primeira (Figura 2) permite que uma determinada (ou ocorrências aproximadas) localidade seja pesquisada clicando em Go. A segunda (Figura 3) permite exibir a rota a ser percorrida de acordo com uma localidade de origem e destino. Caso um resultado seja obtido, serão mostrados também a distância (em Km) e o tempo do percurso. Clicando em “Edit”, voltamos para a tela de definição de direções e em “Show Map”, a rota (linha azul) é mostrada no mapa (Figura 4). A terceira (Figura 5) permite ativar ou a camada de satélite (Sattelite) ou a de tráfego (Traffic). A quarta mostra apenas os créditos do Google Maps. E a quinta (Figura 6) permite configurar o nível de zoom do mapa, no qual clicando em + obtém-se uma visão mais aproximada e clicando em -, uma visão mais afastada (o mesmo efeito ocorre se realizarmos um clique prolongado no mapa).

 

Figura 2. Pesquisando uma localidade.

 

Figura 3. Obtendo direções de um local para outro.

 

 

 Figura 4. Mostrando a rota no mapa.

 

Figura 5. Alterando o modo de camada.

 

Figura 6. Alterando níveis de zoom.

 

API de mapas

Quando se constrói uma aplicação que utiliza mapas em Android, as principais funcionalidades do Google Maps, como foram mostradas anteriormente, não estão disponíveis por padrão (acessadas por meio do botão Menu). Para isso, Android dispõe de uma API que permite integrar estas e outras funcionalidades em sua aplicação que utiliza mapas. Ela é representada pelo pacote com.google.android.maps e seus principais componentes (existem também outros componentes nesse pacote mas não serão abordados neste artigo, ficando como exercício para o leitor estudá-las e utilizá-las) são mostrados na Figura 7.

O componente MapView é a própria representação de um mapa. Permite que eventos de pressionamento de teclas sejam percebidos para poder realizar movimentos e mudar o nível de zoom. O outro componente, MapActivity, é um tipo de Activity utilizado estritamente para visualizar MapViews, sendo que a aplicação não irá rodar para outros tipos de Activities (Nota DevMan 1). O componente MapController é utilizado para permitir movimentar (pan) e trabalhar com níveis de zoom de um MapView. E a classe Overlay permite que componentes MapViews sejam sobrepostos (com imagens, textos ou primitivas gráficas como retângulos, círculos, etc) por uma ou mais camada a fim de dar mais riqueza gráfica e expressividade às suas aplicações com mapas.

Aqui começamos a construir nossa aplicação (Listagem 1) que permitirá que sua lista de contatos seja visualizada e quando clicarmos em cima do nome de um contato, serão mostrados no mapa o seu nome e uma imagem representando a sua localização de acordo com sua latitude e longitude (neste artigo foi utilizado a IDE Eclipse Europa e a versão m5-rc15 do SDK do Android). Primeiramente, criamos um projeto em Android e configuramos suas propriedades (caso não saiba como se realizar esta etapa, você pode ver no artigo intitulado Android: um novo paradigma para desenvolvimento móvel, na edição 18 desta revista). Depois declaramos um objeto da classe MapView (chamaremos a variável de instância de mapView) e alteramos a classe criada (chamaremos de ContatosMapActivity) para estender MapActivity em vez de Activity. No método onCreate(), instanciamos um objeto MapView e passamos ao seu construtor um Context, que no caso é a nossa própria classe (this). Alteramos o método setContentView(R.layout.main) para mostrar não mais uma simples mensagem padrão, mas sim o MapView, fazendo setContentView(mapView). Rodamos a aplicação e podemos visualizar o componente MapView sendo mostrado na tela do emulador similar à Figura 8.

 

 

Figura 7. Principais componentes da API de Mapas.

 

Listagem 1. ContatosMapActivity.java                                                                     

 

package contatos.lbs;

 

import android.os.Bundle;

import com.google.android.maps.*;

 

"

A exibição deste artigo foi interrompida :(
Este post está disponível para assinantes MVP

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?