Introducing GPSjake
One of the reasons behind me starting this blog was that it would give me a resting ground for a little app I worked on quite a while ago (and for quite a while) but did nothing with. A place where I could document it a little, post the source code for prosperity and finally put the thing to bed.
GPSjake was a J2ME (Java Mobile Edition) app I started developing for (mainly) Nokia Series 60 phones 5-6 years ago.
I’ve spent some time over the last couple of months re-visiting the code and updating it to work with a more modern smartphone (OK so only slightly modern – at least it has a touch screen!) – the Nokia N8.
GPSjake was my attempt to use the phone as a bike computer / sat nav. I used to find having to take a map out of my pocket all the time whilst on the bike was a pain – my initial idea here was to have the route loaded in my phone and have directions played to me in a headset. The route would be worked out in advance (as you would work out a route on paper map) rather than ‘calculated’ and the prompts that are to be played at the various decision points are pre-recorded by the user (e.g. turn left at the church etc). I liked this idea as it still required someone to read and understand a map rather than rely on route calculated by software.
I’ve been thinking about bikes and navigation, off and on, for a long time – when I just think back now – a *real* long time. I could maybe have done something more useful with this time – but I’m afraid I didn’t. Anyway, I’ve got some notes in a notebook from December 2004 which outline the basic idea – the notes talk about using a PocketPC! I must have started developing the application properly sometime after I got my first ‘smartphone’ (Nokia 6630) in June 2005 when I realised that a PocketPC was no longer a necessity and using a smartphone was the way to go. The app was a great way to teach myself J2ME and sparked an interest in mobile phone development in general.
Initially, for GPS (there was no internal GPS on 6630) I used a NAVMAN bluetooth receiver (I used to work for NAVMAN between 2004-2008) which I could velcro onto my helmet. Here’s a picture of me with a receiver on my head in New Zealand in August 2005 – I think I rode out from Auckland to Piha that day – good times…
NAVMAN later released some cool matchbox sized receivers which were much smaller and could be stowed away in a pocket. Ultimately though GPS would be available on the phone itself (got a N95 around late 2007).
Throughout the time I was developing I maintained a task/wish/idea list. Having reviewed this there’s some entries that amuse me – especially given how things are these days, in order of date:
Some entries from this list:
- Navigation with pre-recorded voice prompts and way points (18/12/2004)
- Could make example with pocket pc + bluetooth/wired antenna using headphone socket on pocket pc (18/12/2004)
- PDA HP:iPAQ hx4700 $1199 (2/2/2005) (obviously pricing up a pocket pc at the time!!!)
- Reversal of bike nav idea – record a note with a position – PDA constantly monitors position. Event triggered when position reached and recording played. (2/2/2005)
- Instead of playing vocal prompt could just display scrolling text on bike computer (3/2/2005)
- Bike shop, pub, cafe POI’s over the air from open street map project?
- SMS current location. (20/11/2007)
- Manufacture water proof BT GPS receivers and give it away – new sirf 3 receivers are small and can be put in water proof pocket (20/11/2007)
- Distribute via a website/myspace/bebo page? (20/11/2007)
- Device to plug into phone serial port which can read heart rate monitor. (20/11/2007)
- Waterproof, BT screen to attach to handle bars interacts with phone (20/11/2007) (a.k.a. the second screen idea that has been mentioned in a previous post – maybe i’ll resurrect this one day..)
When I look back at that list one thing springs to mind – where has the time gone! 🙂
During the time I was developing it I used GPSjake a lot when riding my bike – it proved really useful. If I had it running on my current smartphone (Nokia Lumia 920) I’d still use it (another task for another day).
BTW GPSjake is named after a loyal steed of mine Jake The Snake (here’s Jake and me and the cobbles of Roubaix) – in other words another gratuitous cycling shot for no real reason:
The app allows the user to do the following:
- Load and spatially register an Ordnance Survey based map image – for instance a photo of an OS map from one’s personal collection*/**. The image is loaded in one go. There is no tiling or caching. The user can define a list of images to enable easy switching.
- Use internal / bluetooth GPS to show current location.
- Display GPS related information such as speed, heading etc.
- Load routes using GPX which can be highlighted and used to define a route. The user can choose to play an audible warning if they stray off course.
- Export GPS logs using GPX (which can be later be used as routes) or NMEA.
- Export GPS logs as NMEA.
- Simulate a route using a recorded NMEA file.
- Select vocal prompts which get played along a route at a way point (e.g. turn left, straight ahead etc) or record personal ones (e.g. turn left a the church, careful it’s a main road etc).
- My aim was that the user could perform everything on the phone without relying on a companion app that ran on a PC.
Here’s the user guide.
I should mention that me ol’ mate @juannacho a.k.a Mr John Denton provided the app’s graphics for me. Thanks sir!
Some videos of GPSjake in action
Here’s a video showing the functionality of GPSjake when running on an N8:
Finally, here’s a video showing GPSjake running other obsolete Nokias 🙂 – the 6630:
And the N95:
(filming these videos took me back – there’s no denying that Nokia made some truly great phones and were a *long* way ahead of the game – shame this slipped for a time – i’m sure the good times will return though!)
Using a photograph of an OS map
* Let’s face it. The OS make the best maps for cycling in the UK and if you’re cycling offroad are the only map of any real use. As a user and fan of the OS I liked the idea of taking a photo of a map I had bought and using it for navigating whilst out and about – this saved the paper copy. Copying the map in this way for personal, non-commercial use is allowed under the principle of ‘fair dealing’ set out in the Copyright, Designs and Patents Act 1988. The following text must be displayed on the copy:
Reproduced by permission of Ordnance Survey on behalf of HMSO. @ Crown copyright. All rights reserved.
** Please note if, after reading this post you want to explore the app further, it is your responsibility to ensure your activities comply with the relevant copyright requirements. I ain’t doing a stretch for you in other words 🙂
Here’s a video I made using the video editor app on the N8 which tries to convey the best way to take a photograph of an OS map *that you own* using a phone – basically ensure the phone is not tilted/rotated, use the gridlines in the camera app to line the map up against the OS gridlines and don’t use a flash.
Source code
Here’s the source code for GPSJake. I’ve made this available under GPLv3 and it’s hosted at the Nokia developer site https://projects.developer.nokia.com/gpsjake/. Or you can fork this https://github.com/thunderhoss.
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>
Tools
Throughout the development of GPSjake I used the following tools…
IDEs: Eclipse and Mobile Tools for Java, Netbeans and Wireless Took Kit. I started out using Netbeans but switched to Eclipse this is currently the IDE of choice at work.
SDKs: Nokia S60 2nd Edition (feature pack 3), Nokia S60 3rd Edition (feature pack 2 and 3), Nokia Symbian Belle v1.0.
Final words…
It feels good to give ol’ GPSjake it’s final resting place and share it through this blog. Although developed for old technology I think it still contains some good ideas which aren’t offered by other apps in the personal navigation / mapping space (e.g. pre-recorded, custom voice prompts).
And with that I’m off to develop on a different platform altogether……Windows Phone (once I’ve got some more Arduino business out of the way).