Archived:API GPS para Symbian 3a edição
hamishwillee
(Talk | contribs) m (Hamishwillee - Adding missing translation link) |
hamishwillee
(Talk | contribs) m (Hamishwillee - Fix translation link) |
||
| Line 78: | Line 78: | ||
* [[Media:GpsPositionRequest.zip|Código fonte do CGpsPositionRequest]] | * [[Media:GpsPositionRequest.zip|Código fonte do CGpsPositionRequest]] | ||
| − | |||
<!-- Translation --> [[en:Archived:GPS API in Symbian 3rd Edition]] | <!-- Translation --> [[en:Archived:GPS API in Symbian 3rd Edition]] | ||
<!-- Translation --> [[ja:Archived:S60 3rd Edition でのGPS API]] | <!-- Translation --> [[ja:Archived:S60 3rd Edition でのGPS API]] | ||
Latest revision as of 03:29, 14 September 2012
Acredita-se que este artigo ainda seja válido no contexto original (quando ele foi escrito)
Dados do artigo
Exemplo de código
Compatibilidade
Artigo
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"

