Localização sem fio

Serviços baseados em localização com J2ME e a Location API

O objetivo deste artigo é fazer um estudo sobre o desenvolvimento de serviços baseados em localização para aparelhos celulares explorando o potencial do J2ME e da Location API (JSR-179), e também introduzir o leitor aos métodos de localização disponíveis no mercado.

Serviços Baseados em Localização para aparelhos celulares

LBS (Location-Based Services) fornecem ao usuário de aparelhos celulares aplicações personalizadas baseadas na sua localização geográfica que é obtida usando um ou mais dos métodos citados no tópico anterior. Normalmente essas aplicações respondem a três perguntas básicas:

ü       Onde estou?

ü       O que há em minha volta?

ü       Como eu faço para chegar até lá?

A localização do usuário é determinada usando uma das muitas tecnologias de localização disponíveis no mercado, como visto anteriormente. Juntamente com outras informações a localização do usuário é fornecida para personalizar aplicações e serviços ao usuário. Como exemplo de uma aplicação, podemos considerar um serviço de emergência que determina qual a localização do indivíduo que fez a chamada telefônica. Este serviço pode ser muito útil para indivíduo que está longe de casa e não conhece àquela região onde se encontra, não tendo condições de fornecer pontos de referência ou nomes de ruas. Sistemas conselheiros de tráfego, ajudando na navegação incluindo mapas e rotas e direções a tomar para que se evite um congestionamento na próxima avenida. Outros serviços podem combinar a localização atual do indivíduo com informações sobre preferências pessoais e ajudar a encontrar restaurantes, hotéis, serviços de entretenimento, etc.

Há um grande mercado para desenvolvedores, operadoras de telefonia celular, provedores de conteúdo e empresas em geral, se levarmos em consideração o número de aplicações que podem ser desenvolvidas, e o quando elas podem agregar valor ao usuário ou ao negócio da empresa, em pontos como economia de tempo e dinheiro. Abaixo alguns exemplos de aplicações e serviços divididos por categoria:

Produtividade

ü       Aconselhamento do usuário quanto a condições de tráfego.

ü       Encontrar um tipo de restaurante mais próximo.

ü       Mapas e Rotas.

ü       Gerenciamento de Frotas.

Mobile Commerce

ü       Cupons de desconto.

ü       Pushing Marketing .

ü       Letreiros digitais patrocinados.

Segurança

ü       Rastreamento de Veículos

ü       Emergência Policial

ü       Rastreamento de Pessoas

Tarifação

ü       Taxas e descontos baseados na localização.

Entretenimento

ü       Amigos próximos a mim.

ü       Alma Gêmea.

ü       Detector de Sogra.

ü       Pique Esconde – quente e frio.

ü       Informações Turísticas.

Segurança e Privacidade em LBS

As informações de localização podem ser muito úteis, porém, é necessário citar algumas questões sobre segurança e privacidade, que podem ser usadas contra o usuário:

Marketing Objetivo

A localização de usuários móveis pode ser usada para classificar possíveis consumidores, para focar o tipo de marketing a ser aplicado.

Embaraço

O conhecimento da localização de um usuário por outro usuário pode causar situações de embaraço e constrangimento.

Perturbação

O conhecimento da localização de um usuário pode ser usada para perturbá-lo ou atacá-lo.

Negação de Serviço

Uma empresa de plano de saúde pode negar um determinado atendimento caso descubra que o usuário tenha visitado uma área de alto risco.

Restrições Legais

Alguns países possuem leis que protegem e uso de dados pessoais do usuário.

Considerações quanto ao desenvolvimento de LBS

Ao projetar Aplicações baseadas em Localização é aconselhável ao desenvolvedor tomar alguns cuidados com relação aos assuntos abordados abaixo:

Indisponibilidade de serviço

O usuário pode está dentro de um túnel ou avião, ou por qualquer outra razão, a localização do usuário pode não estar disponível naquele momento, portanto, informe graciosamente ao usuário, a indisponibilidade do serviço.

Tempo de localização

Às vezes a determinação da localização pode levar um longo tempo. Este atraso pode ser tão longo que o resultado final pode não ser mais útil, como, por exemplo, no caso de uma aplicação de navegação. Mantenha o usuário sempre informado !

Taxas

Operadores de telefonia celular podem cobrar taxas para serviços de localização que usam o ID do celular, caso a aplicação se baseie neste método é aconselhável conhecer bem a forma de cobrança e não usar excessivamente o serviço.

Privacidade

Informe ao usuário quais as informações dele que estão sendo coletadas e o como elas serão usadas. Ofereça ao usuário o direito de escolher quais as informações de localização a aplicação deve revelar. Permita ao usuário rever seus perfis de privacidade de forma que eles sempre saibam o que estão permitindo ser revelado e finalmente, proteja as informações de localização de forma que não sejam acessadas por pessoas não autorizadas.

Métodos de Localização para Aparelhos Celulares

Um método de localização em geral é um processo que determina a posição geográfica de um dispositivo. O resultado desse processo é representado em termos de coordenadas – latitude, longitude e altitude, que podem ser mais ou menos precisas dependendo do método que usado.

Há um grande número de métodos de localização de aparelhos celulares existentes no mercado. Eles são basicamente divididos         em duas categorias: os baseados na rede de telefonia celular e os baseados no aparelho celular.

 Métodos baseados na rede de telefonia celular

O método baseado na rede de telefonia celular, depende da infra-estrutura da operadora para obter a localização e é composto de um conjunto de métodos que podem ser desde um relativamente simples como o COO (cell of origin) até alguns mais complexos como TDOA (Time Diference of Arrival).

COO (Cell of Origin)

É o método mais fácil e comum, em contrapartida o mais impreciso. É possível determinar a localização do aparelho através de sua célula de comunicação, isto é, sua BTS (Base Transceiver Station). Este método é suficiente para a maioria das aplicações baseadas em localização. Cálculos adicionais como TA (Time Advance) podem ajudar a alcançar melhor qualidade na localização.

AOA (Angle of Arrival)

Esse método usa um equipamento especial que tem de ser instalado na BTS para determinar o ângulo de chegada do sinal de rádio. Fazendo uso de alguns cálculos geométricos, é possível determinar a localização do aparelho somente com duas BTS recebendo o seu sinal.

TDOA (Time Difference of Arrival)

Também conhecido como Triangulação de Antenas. Esse método faz uso da diferença de chegada dos sinais de rádio emitidos pelo aparelho celular as BTSs. No mínimo três BTS são necessárias para calcular a localização do aparelho.

LPM (Location Pattern Matching)

Certamente o mais complexo de todos, este método analisa sinais de rádio e os compara a padrões armazenados em um banco de dados. Tais padrões incluem reflexões e ecos de sinal. Quando um padrão é reconhecido, a localização do aparelho pode ser identificada. Esse método pode ser usado somente em áreas urbanas onde tais padrões de sinal ocorrem com freqüência e certamente alcança níveis de precisão de localização melhores que os demais métodos de sua categoria, porém, infelizmente este método não é adequado para áreas rurais.

Métodos baseados no aparelho celular

O método de localização baseado no aparelho celular, permite a localização do dispositivo sem a ajuda da rede de comunicação celular, como GSM ou CDMA. Neste caso a GPS é o mais proeminente método desta categoria.

GPS (Global Positioning System)

O sistema GPS é o mais novo e promissor método de localização para aparelhos celulares com receptor GPS embutido, pois é mais abrangente e preciso por usar satélites, e mais seguro e maduro por ser uma tecnologia largamente usada á anos, além de ser independente da rede de telefonia celular. Porém, uma desvantagem deste método é a necessidade do aparelho de estar em lugar aberto para uma comunicação mais clara com os satélites.

E-OTD (Enhanced Observed Time Difference)

Este método é conhecido como oposto ao método TOA (Time os Arrival). Ao invés de medir a diferença de tempo dos sinais que são transmitidos de um aparelho para uma BTS quem calcula a localização é o próprio aparelho. Porém, há a necessidade de instalação de softwares apropriados no aparelho celular. Além disso, as também conhecidas como “Unidades de Medida de Localização” (Location Measurement Units) tem de ser instaladas em cada BTS. A precisão do método E-OTD é relativamente alta, e embora estes resultados estejam próximos aos do GPS, somente podem ser obtidos em áreas urbanas, onde a maioria dos celulares está disponível.

SIM (Subscriber Identity Module Toolkit)

O STK (SIM ToolKit) é uma API que permite comunicação com o SIM Card, o qual muitos aparelhos celulares possuem muitas aplicações instaladas. A qualidade pode ser tão ruim quanto o método COO, porém pode ser melhorada por alguns algoritmos armazenados no próprio SIM Card e também por algumas características extras fornecidas pela própria rede de telefonia celular.

Métodos Híbridos

Por trás de ambas as categorias, há também métodos híbridos, que unem métodos baseados na rede de telefonia celular e baseados no aparelho. AGPS (Assisted GPS) é um deles, onde é possível aumentar a velocidade do tempo de inicialização do receptor GPS usando informações vindas da rede celular.

AGPS (Assisted GPS)

A operadora de telefonia celular obtém a posição dos quatro satélites disponíveis em uma determinada área e distribui está informação na rede de telefonia celular, diminuindo drasticamente        o tempo de inicialização que um receptor GPS geralmente necessita, além de economizar bateria, pois o receptor GPS é ativado para seu uso básico.

SRB (Short Range Beacon)

Esse método pode ser usado para localizar aparelhos em locais fechados como edifícios, pois faz uso de tecnologias de comunicações de curta distância como Bluetooth ou IrDA. A qualidade é boa, porém, a configuração do ambiente é muito complexa, novas infraestruturas têm de ser adquiridas, como também a atualização dos aparelhos, portando o custo benefício normalmente não compensa.

Java e o desenvolvimento de LBS

Os aparelhos celulares deixaram de ser simples dispositivos sem fio orientados a voz com algumas funcionalidades escritas em código nativo, para serem hoje dispositivos extensíveis, com acesso a Internet, armazenamento de dados e execução de softwares complexos. Tais dispositivos necessitam de suporte a download dinâmico de novos softwares e também serem capazes de executar softwares escritos não somente por seus fabricantes, mas também, por terceiros. Isso fará com que esses dispositivos tornem-se muito mais dependentes de software, portanto, é necessário que tais softwares tenham interoperabilidade, segurança e sejam confiáveis.

Aplicações LBS serão a próxima “grande onda” no mundo do desenvolvimento wireless e a Java 2 Micro Edition é ideal para tornar-se um padrão para o desenvolvimento desse tipo de aplicação, pois fornece um conjunto de classes e funcionalidades voltadas para esse fim, e dispõe de outras importantes características como:

ü       Entrega dinâmica de conteúdo

ü       Segurança

ü       Compatibilidade entre plataformas

ü       Conteúdo interativo

ü       Acesso Offline

ü       O poder da linguagem orientada a objetos

ü       Padronização da indústria através do Java Community Process

Particularmente para o desenvolvimento de sistemas LBS, a plataforma J2ME oferece além de suas capacidades acima mencionadas, a Location API for J2ME (JSR-179), que é o resultado de um esforço da indústria para a padronização de uma única interface de programação que possibilita obter de dados de localização de um dispositivo.

Especificação da Location API

A Location API (Java Specification Request #179) foi aceita pelo Executive Commitee for Micro Edition do JCP em Junho de 2003 e foi liderada por Kimmo Loytana da Nokia Corporation. Essa API fornece uma interface padrão de alto nível para acesso a informações de posição de um dispositivo independente do método de localização utilizado. Esta API é opcional, portanto, não precisa necessariamente estar presente no conjunto padrão de API´s encontrados nos dispositivos complacentes com a plataforma J2ME, mesmo para aqueles que dispõe de receptor GPS embutido, como é o caso de alguns aparelhos já disponíveis no mercado.

O acesso á localização de um aparelho celular agrega grande valor aos sistemas embarcados. A Location API permite-nos acessar esse tipo de informação através de uma interface padrão, de forma que, o método usado para obter a informação de posicionamento não muda a forma como se usa API, é claro que, a qualidade e a quantidade das informações de localização podem variar substancialmente.

O Pacote javax.microedition.location

O pacote javax.microedition.location contêm classes básicas para solicitar e obter uma localização geográfica.

A classe LocationProvider representa um módulo capaz de determinar a localização do dispositivo. Isso pode ser implementado, usando um de seus métodos de localização, por exemplo, via satélite usando GPS, via rede de telefonia celular, mensagens de curto alcance, etc. A aplicação pode usar também a combinação dos métodos a fim de obter o melhor resultado, tudo isso usando uma mesma interface de alto nível para obter os resultados.

A aplicação pode especificar critérios para selecionar o provedor de localização usando uma instância da classe LocationProvider que é capaz de executar os critérios o tanto quanto possível. Usando LocationProvider, a aplicação pode criar objetos Location e obter a localização do dispositivo, no momento que desejar, porém, é possível que a aplicação obtenha a sua localização constantemente através da implementação da interface LocationListener, que irá criar novos objetos Location de acordo com a disponibilidade do provedor de localização, por exemplo um receptor GPS.

A localização é representada por um objeto Location que contêm objetos QualifiedCoordinates, representando as coordenadas geográficas (latitude, longitude e altitude) e informações sobre a sua precisão, hora e possivelmente velocidade e curso do dispositivo. Para alguns métodos de localização, o objeto Location pode também conter um objeto AddressInfo que inclui por exemplo o endereço de uma Rua.

Este pacote também inclui informações um banco de dados de pontos de referência (landmarks). Um pondo de referência é um ponto físico conhecido pelo usuário da aplicação, como, por exemplo, sua casa, escritório, escola, supermercado, etc. Esse banco de dados deve ser compartilhado entre as aplicações e possibilita ao usuário construir seu banco de dados particular de pontos de referência.

No caso de segurança das informações do usuário, o perfil MIDP (Mobile Information Device Profile) versão 2.0 oferece um framework para isto com uma série de vantagens. Ele pode, por exemplo, restringir o acesso a dados de localização em casos em que o usuário explicitamente confirma a permissão, entre outros.

Java1.gif 

Figura 1. Diagrama de Classes javax.microedition.location

Utilizando a Location API

A Motorola saiu na frente e já existem aplicações LBS implementadas em J2ME para os modelos i730 e i88s, com GPS embutido e tecnologia iDEN, como é o caso da Nextel e seu serviço “Mapas e Rotas”, presente na região sudeste, principalmente em São Paulo. No entanto é possível fazer uso de API´s proprietárias da Motorola que fazem um papel semelhante ao da Location API,  mas inviabilizam a portabilidade da aplicação. .

Felizmente, já estão sendo lançados os primeiros celulares GSM com a Location API, como é o caso dos Siemens C65, CX65 e S65. O trecho de código abaixo demonstra como é simples obter a localização do dispositivo.

 

Listagem 1. Exemplo de utilização da Location API

import javax.microedition.location.*;

 

class LocationSample {

  public static void main (String[] args) throws Exception {

     // Configura o critério para o Fornecedor de Localização (Location Provider):

     Criteria myCriteria = new Criteria();

     //Precisão de 500 metros horizontalmente

     myCriteria.setHorizontalAccuracy(500);

     // Obtêm uma instância da classe Location

     LocationProvider lp = LocationProvider.getInstance(myCriteria);

     // Requisita a localização, configura para 1 minuto o  tempo de espera

     Location l = lp.getLocation(60);

     // Obtêm uma instância da classe Coordinates

     Coordinates c = l.getQualifiedCoordinates();

     // Caso haja coordenadas de localização

      if (c != null) {

        //Obtêm a Latitude

        double lat = c.getLatitude();

        //Obtêm a Longitude

        double lon = c.getLongitude();

       }

   }

}

Conclusões

Segundo a revista britânica Nature (jan/2004) as geotecnologias estão entre os três mercados emergentes mais importantes da atualidade, junto com a nanotecnologia e a biotecnologia.

Inserida neste contexto, as aplicações LBS prometem crescer substancialmente nos próximos anos com auxílio da telefonia móvel, gerando um grande potencial de oportunidades para desenvolvedores J2ME, pois os métodos de localização estão cada vez mais precisos e a convergência de receptor GPS e aparelho celular permitirá principalmente a independência e o baixo custo, uma vez que nenhum software adicional precisa ser instalado nem no aparelho celular nem na operadora.

O desenvolvimento de aplicações LBS usando a plataforma J2ME ainda é tímido, pois a Location API é opcional e existem poucos aparelhos celulares que à implementam, porém,  a expectativa é que num futuro bem próximo, possamos ver um grande número de dispositivos habilitados a usá-la, pois a especificação da JSR-179 foi desenvolvida pelos principais fabricantes de aparelhos celulares do mercado e tende a se tornar um padrão para desenvolvimento de aplicações do gênero e, sem dúvida, as aplicações LBS irão se popularizar e logo farão parte do nosso dia a dia.

 

Links

http://gpstm.com/port/apostila_port.htm

http://colorado.edu/geography/gcraft/notes/gps/gps_f.html

http://digit-life.com/articles/gpssystem/

O Sistema de Posicionamento Global

 

http://mobilein.com/mobile_positioning.htm

Mobile Positioning

 

http://developers.sun.com/techtopics/mobility/apis/articles/location/

http://wsdmag.com/Articles/Index.cfm?ArticleID=5956&pg=1

http://sys-con.com/story/?storyid=37747&DE=1#RES 

http://today.java.net/pub/a/today/2004/02/16/gis.html

http://today.java.net/pub/a/today/2004/04/01/gis.html#Using_LBS

http://nextel.com.br/w_mapa_rotas_br.htm

http://jcp.org/en/jsr/detail?id=179

Artigos sobre Location API, J2ME e LBS

 

http://j2mepolish.org/devices/devices-locationapi.html

Lista de dispositivos que suportam a Location API

 

http://fatorgis.com.br/geotec.asp?orig=A4

Artigo da Revista Natural sobre geotecnologias

 

Marco Antônio C. Faleiros (mfaleiros@genius.org.br) é desenvolvedor Java/J2ME do Genius Instituto de Tecnologia, especialista em Tecnologia Web com mais de 8 anos de experiência em desenvolvimento de sistemas.