This page was last modified 05:33, 22 May 2008.
GPS API in S60 3rd Edition
From Forum Nokia Wiki
Overview
S60 3rd Edition has full support for GPS positioning. The both built-in and external Bluetooth GPS modules are supported. There are several GPS-enabled phones already on the market. They are Nokia 6110 and Nokia N95. More GPS phones are coming.
There is free GPS navigation software from Nokia called Smart2Go (another name is Nokia Maps). There are several 3rd party titles that also utilize GPS positioning. How can you use GPS positioning in your application?
Implementation
There are two ways. The first way is using low-level communication with external Bluetooth GPS module. It was widely used in S60 2nd Edition. It involves many technical issues and might not work correctly with some external Bluetooth GPS devices. It also will NOT work with the built-in GPS modules in Nokia 6110 and Nokia N95 phones. It’s a deprecated way.
The other (recommended) way is using Location API that was introduced in S60 2nd Edition, Feature Pack 2 and also supported in S60 3rd Edition.
There are several key classes in Location API. They are RPositionServer, RPositioner and TPositionInfo. First you need to connect to RPositionServer. Then create RPositioner object and issue an asynchronous request for current location. The result will be returned in TPositionInfo structure.
Usage
Here is a high-level utility class CGpsPositionRequest. It solves three problems. First, is hides all details and complexity of Location API from a user (programmer). Second, it works synchronously and removes all asynchronous complexity from the user. Third, a progress dialog (wait note) is being shown during the location request, so an end-user will see that an application is working. Here is a usage example:
#include "GpsPositionRequest.h" ... // variables to hold current locations TReal latitude, longitude; // create CGpsPositionRequest object and put it into cleanup stack; // pass application name as argument CGpsPositionRequest* request = CGpsPositionRequest::NewLC( _L("My application")); // get current location (this operation can be long up to 30 seconds); // progress dialog is shown to user during this time TBool result = request->GetCurrentPostionL(latitude, longitude); // delete request object CleanupStack::PopAndDestroy(request); // process result here if (result) { // success, use latitude and longitude coordinates } else { // failed getting current position, show error message to user }
Note that you also need to include the following lines into your MMP project file:
SOURCE GpsPositionRequest.cpp LIBRARY lbs.lib
You will also need to include GpsPositionRequest.ra file into your resource file:
#include "GpsPositionRequest.ra"
Download the source code for CGpsPositionRequest from here:
Image:GpsPositionRequest.zip
Another example that also has simple re-usable container that you could use for viewing the position before selecting it can be found from here: Image:GeoTagging Example.zip
| Related Discussions | ||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Is their any api available in symbian s60 3rd edition to adjust screen saver timing?? | kumara1423 | General Symbian C++ | 1 | 2007-05-30 05:33 |
| Nokia Series 60 3rd edition Chinese SDK! | liuxg | Symbian | 3 | 2006-10-08 02:05 |
| Problems installing applications with MMS Capability | pmgf_14 | Mobile Java Networking & Messaging & Security | 3 | 2006-11-10 19:42 |
| How To Custom Theme Using 3rd Party Icons | chenloong | Themes/Carbide.ui | 2 | 2008-06-17 12:41 |
| GPS with j2me N95 | mypig | Mobile Java General | 16 | 2008-01-27 20:01 |
