×
Namespaces

Variants
Actions

Archived:API GPS para Symbian 3a edição

From Nokia Developer Wiki
Jump to: navigation, search

Archived.pngAquivado: Este artigo foi arquivado, pois o conteúdo não é mais considerado relevante para se criar soluções comerciais atuais. Se você achar que este artigo ainda é importante, inclua o template {{ForArchiveReview|escreva a sua justificativa}}.

Acredita-se que este artigo ainda seja válido no contexto original (quando ele foi escrito)

Article Metadata

Exemplo de código
Compatibilidade
Plataforma(s): Symbian 3rd Edition

Artigo
Tradução:
Por kyllercg
Última alteração feita por hamishwillee em 14 Sep 2012

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

This page was last modified on 14 September 2012, at 03:29.
80 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×