You Are Here:

Community: Wiki

This page was last modified on 27 November 2007, at 01:16.

API GPS para S30 3a edição

From Forum Nokia Wiki

Original: GPS API in S60 3rd Edition

Contents

Visão geral

S60 3a Edição provê suporte completo ao sistema de posicionamento geográfico GPS. Ambos módulos GPS, interno e externo, são suportados. Existem diversos dispositivos com GPS disponíveis no mercado, entre os quais temos o Nokia 6110 e o Nokia N95. E outros ainda deverão surgir.

A Nokia disponibiliza gratuitamente um sistema de navegação GPS chamado Smart2Go (também conhecido como Nokia Maps). Existem ainda diversos sistemas de outros fabricantes que utilizam o sistema GPS.

Implementação

Existem duas formas de usar o sistema GPS em suas aplicações. O primeiro é através do uso de um dispositivo GPS externo via Bluetooth. Essa solução foi bastante aplicada nos dispositivos S60 2a edição. Ela envolve vários aspectos técnicos e pode não funcionar corretamente com alguns disposititos GPS Bluetooth externos. Além disso, essa solução não irá funcionar com o GPS interno dos Nokia 6110 e N95. É a forma antiga de fazer a coisa.

A outra forma (a recomendada) é usar a API Location que foi introduzida nos S60 2a edição, FP 2 e que também está disponível nos S60 3a edição.

Existem diversas classes na API Location. Entre elas: RPositionServer, RPositioner e TPositionInfo. Primeiro, deve-se conectar usando RPositionServer. Então deve-se criar um objeto RPositioner e lançar uma requisição assíncrona para a localização atual. O resultado será retornado na estrutura TPositionInfo.

Forma de uso

A seguir, apresenta-se uma classe de alto nível chamada CGpsPositionRequest. Ela soluciona três problemas. Primeiro, ela esconde todos os detalhes e complexidade da API Location do usuário (programador). Segundo, ela funciona de forma síncrona e remove toda a complexidade de lidar com requisições assíncronas do usuário. Terceiro, um janela de progresso é exibida durante a requisição de localização. Dessa maneira o usuário final irá ver que a aplicação está sendo executada. Abaixo temos um exemplo de uso.

#include "GpsPositionRequest.h"
...
// variáveis para guardar a posição atual
TReal latitude, longitude;
// cria objeto CGpsPositionRequest e coloca na pilha de limpeza;
// passa nome da aplicação como argumento
CGpsPositionRequest* request = CGpsPositionRequest::NewLC(_L("My application"));
// pega posição atual (esta operação pode levar até 30 segundos);
// barra de prograsso é mostrada ao usuário enquanto isso
TBool result = request->FetchCurrentPostionL(latitude, longitude);
// apaga objeto da requisição
CleanupStack::PopAndDestroy(request);
// processa o resultado aqui
if (result) {
// deu certo, usa as coordenada de latitude e longitude aqui
} else {
// ops... ocorreu um erro ao recuperar a posição, exibe mensagem de erro
}

Observe que você deve incluir as seguintes linhas no seu arquivo de projeto MMP:

SOURCE          GpsPositionRequest.cpp
LIBRARY lbs.lib

Você irá precisar também incluir o arquivo GpsPositionRequest.ra ao seu arquivo de recursos:

#include "GpsPositionRequest.ra"


Links

Related Wiki Articles

No related wiki articles found

Rate This

 
Bookmark this page: DeliciousDiggFacebookGoogleYahooStumbleUponRedditDiigoTechnocratiTwitter  Share this page Share this page Print this Page Print this page Invite a friend Invite a friend
京ICP备05048969号    Email Newsletters Press Terms & Conditions Privacy Policy Sitemap Contact Us © 2009 Nokia