Location service emulation on popular platforms

This post in a nutshell: How to run GPS emulation with several mobile platform and a short evaluation of each.

Windows Mobile

On Windows Mobile 5, you get a “GPS” settings applet but there is no GPS emulation tool. The attached documentation (GPS sample) state that you’ll need a real GPS device for the sample to work (and remember to configure it for develapment!); then I downleaded a new version hoping for better support. The first thing I noticed touching the WM6 SDK is the vast amount of tools added: Cellular network emulator, package tools, test framework, and of course among them: a GPS emulator. Looks like Microsoft has finally started to fear Sun.

The GPS emulator is in WM6 SDK folderGPS. Access the CAB file from your device to install it. Additionally, the settings.exe can only be run inside the device and is the same things as the GPS applet. The documentation is still vague, but the tool works.

Here’s the interesting bit: The WM6 FakeGPS work perfectly well on WM5, so you don’t need the new (and huge) SDK to work on location services, just copy the FakeGPS from someone who installed (it’s around 1MB)

The data file structure is pretty clueless, but I may eventually figure that out after some more searching :/

$GPGLL,36000.0000,N,72000.0000,E,000023.998,V*1A
$GPGSA,A,1,,,,,,,,,,,,,50.0,50.0,50.0*05
$GPRMC,000023.998,V,36000.0000,N,72000.0000,E,0.000000,,101102,,*30
$GPGGA,000024.998,0000.0000,N,00000.0000,E,0,00,50.0,0.0,M,0.0,M,0.0,0000*78
$GPGLL,36000.0000,N,72000.0000,E,000024.998,V*1D

What left to be wondered is, why GPS is taken out of Smartphone and available only for PocketPC? While it’s true that a phone ‘s functionalities are not as easily extended with cards and stuff like a PDA but some of them can locate themselves; or Microsoft thinks 3G should not include location services? Oh well…

Symbian

Given the previous experiences with Symbian, I expected this platform to be the hardest to configure. Looks like I worried too much :). You can select the emulated location service from the phone’s settings. Just go to settings / general / positioning and select simulation, choose settings on this mode to choose emulation data.

Symbian’s emulator can read 2 types of data: the one Windows Mobile used above (nmea.nme is included with the demo) and .sps files. Sps files seem to define non-deterministic movement, like this:

Horizontal accuracy=10;
Vertical accuracy=16;
TimeToFix min=2;
TimeToFix max=7;
Powerup time=5;
Longitude=23.9385;
Latitude=61.5285;
Speed=0;
Course=113.9;
Deterministic=0;

Getting the sample application running is pretty easy too. They even have 4 more examples for this topic and each comes with detailed information on how the classes work.

J2ME

The most straightforward platform! The Location service example is there (called CityGuide), Location and landmark service is built-in with the emulator. To simulate movement, from the emulator choose MIDlet/External events, toward the bottom you’ll see the “Location” group, click Browse to select the path file (City guide comes ready with a path file, citywalk.xml), press play and you are on the move!

The data file is different from both of the above platforms, which belongs to some kind of standard, which is good but to me J2ME’s xml is the best! It’s the cleanest and most human-readable data. Ph34r the power of XML!

<waypoint time="6500" latitude="14.394759972655674" longitude="50.10266737954043" altitude="310" />
<waypoint time="1500" latitude="14.395190022566581" longitude="50.102641304996304" altitude="310" />
<waypoint time="1500" latitude="14.395487422916618" longitude="50.10265163602227" altitude="310" />
<waypoint time="1500" latitude="14.395935213738783" longitude="50.10265925148049" altitude="310" />

I think the landmark tool is build for some purpose, but clearly the sample work well without any tweaking by this tool.