Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

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

From 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 00:29.
515 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.

×