I have a bluetooth GPS that I used to use some years ago with a GPS navigation application on my windows mobile phone (HTC BlueAngel, then HTC Elf).
When I switched for an Android phone (HTC Magic, then Acer Liquid), I was strangely unable to use it. It wasn't a big issue for me since both phones have an internal GPS. However, recently I bought a Samsung S galaxy, which GPS is barely usable...
I've searched something for using my bluetooth GPS, but I haven't found any open source application.
So I've developed one:
it' free,
it's open-source (you can verify what it's really doing and you can improve it!),
it just asks for needed permissions.
The application allows to use an external bluetooth GPS on Android devices:
The application starts a service, then connects to a Bluetooth device (NMEA GPS) and creates a mock GPS provider which can be used to replace the internal GPS.
It's also possible to log the external GPS NMEA data in a file on the device.
The app needs the following permissions:
bluetooth and bluetooth admin (connection to the GPS device),
location and mock location (replace the GPS location provider by a new one using the bluetooth GPS device),
write external storage (if you want to log the NMEA data into a file on the sdcard).
It should run on all android devices (2.0 and above) and NMEA bluetooth devices (there is now also a special version for Cupcake and Donuts - see below).
I have tested it with a GlobalSat BT-338 bluetooth GPS (SiRF III), a Galaxy S (I9000) and a HTC Sapphire (Froyo CM-6).
It works with Google Maps, Wikitude, GoPenS and my own personal navigation app. It should work with all applications that use Android official location API.
Note: in order to install the app:
enable Settings/Applications/Unknown sources,
enable Settings/Applications/Development/Allow mock locations,
download and install the apk.
Project page: Bluetooth GPS for Android on SourceForge
BlueGPS4Droid apk: BlueGps4Droid_1.2.6.apk for Eclair or newer.
BlueGPS4Cupcake apk: BlueGps4Cupcake_1.2.6.apk special version only for Cupcake and Donuts.
User guide an review (thanks to Leszek Pawlowicz): http://androgeoid.com/2010/09/android-external-bluetooth-gps-apps-bluetooth-gps-for-android/
I want to thank Globalsat U.S. which, kindly, has sent me, free of charge, a USB GPS and a replacement for my old bluetooth GPS, in order to support this work.
Change log
BlueGps4Cupcake 1.2.6 (2013-03-09)
BlueGps4Droid version 1.2.6 for Cupcake and Donuts - Do not use with Eclair, Froyo or Gingerbread !!!
Bluetooth support is provided using the backport-android-bluetooth package: http://code.google.com/p/backport-android-bluetooth.
BlueGps4Droid 1.2.6 (2013-03-09)
Bug fix : correction in SiRF options summary description (English/French/Russian/Portugese/Spanish)
Bug fix : correction in NMEA checksum calcul
Bug fix : NMEA sentences without checksum weren't correctly parsed
Update copyright info in source and about app message
BlueGps4Cupcake 1.2.5 (2012-05-11)
BlueGps4Droid version 1.2.4 for Cupcake and Donuts - Do not use with Eclair, Froyo or Gingerbread !!!
Bluetooth support is provided using the backport-android-bluetooth package: http://code.google.com/p/backport-android-bluetooth.
BlueGps4Droid 1.2.5 (2012-05-01)
Add Portuguese translation (thanks to rsantospereira (XDA: rikpereira) and meiji (XDA: meiji.emperor))
BlueGps4Cupcake 1.2.4 (2012-03-27)
BlueGps4Droid version 1.2.4 for Cupcake and Donuts - Do not use with Eclair, Froyo or Gingerbread !!!
Bluetooth support is provided using the backport-android-bluetooth package: http://code.google.com/p/backport-android-bluetooth.
BlueGps4Droid 1.2.4 (2012-03-26)
Bug fix (Ticket #9: Handle NMEA timestamps without fractional seconds) (thanks to Jeffrey Hutzelman).
Update copyright infos.
BlueGps4Droid 1.2.3 (2011-09-08)
Add Russian translation (thanks to skleroz)
BlueGps4Cupcake 1.2.2 (2011-05-24)
BlueGps4Droid version 1.2.2 for Cupcake and Donuts - Do not use with Eclair, Froyo or Gingerbread !!!
Bluetooth support is provided using the backport-android-bluetooth package: http://code.google.com/p/backport-android-bluetooth.
BlueGps4Droid 1.2.2 (2011-05-14)
Add an option to force auto-activation of the chosen location provider (useful when the device defines a GPS provider but doesn't provide the preferences used to enable/disable it).
Update copyright infos.
Decrease the alleged power consumption of the bluetooth GPS (so now bluetooth GPS should consume less power than internal GPS).
Change default retries number before auto-closing BlueGPS4Droid.
Bug fix (Ticket #5: BlueGPS loops forever when SIRF is enabled but connection cannot be established).
Bug fixed (Ticket #6: Cannot add mock provider if it exists already).
Closing of bluetooth connection improvements.
BlueGps4Droid 1.2.1 (2011-01-20)
Add Spanish translation (thanks to Colegota: http://forum.xda-developers.com/showpost.php?p=10628971&postcount=55 )
Change launcher and notification icons. The new icons are inspired from "XlAfbk's proposition": http://forum.xda-developers.com/showpost.php?p=10277778&postcount=29.
BlueGps4Droid 1.2.0 (2010-12-10)
Add SiRF configuration management (NMEA sentences - SBAS - Static Navigation)
Add verifications: if bluetooth or mock locations are not enabled, the service is not started.
Add alert messages to explain why the service cannot be started if bluetooth or mock locations are not enabled
If device doesn't have an internal GPS, the bluetooth GPS provider is enabled automatically
Add an about window that gives the version of application, licensing information and where the sources may be downloaded.
BlueGps4Droid 1.2 alpha (2010-10-25)
SiRF configuration management (NMEA sentences - SBAS - Static Navigation)
BlueGps4Droid 1.1.2 (2010-11-04)
Add verifications: if bluetooth or mock locations are not enabled, the service is not started.
Add alert messages to explain why the service cannot be started if bluetooth or mock locations are not enabled
If device doesn't have an internal GPS, the bluetooth GPS provider will be enabled automatically
BlueGps4Droid 1.1.1 (2010-09-29)
Bug fix (Ticket #4: Connection service is not properly closed https://sourceforge.net/p/bluegps4droid/tickets/4/).
Add notifications when the connection with the GPS fails and when the connection service is closed because of two many connection retry.
Add settings to choose the number of connection retries before exiting.
BlueGps4Droid 1.1 (2010-09-26) - does not work properly because of bug #4. Use either version 1.0 or 1.1.1 !
Reconnect automatically when the connection with the GPS is lost (5 attempts in 5 minutes)
Replace Android default internal GPS or use a new location provider
Send status notifications when GPS loses fix or is disconnected.
BlueGps4Droid 1.0.1 (2010-10-25)
Add verifications: if bluetooth or mock locations are not enabled, the service is not started.
Add alert messages to explain why the service cannot be started if bluetooth or mock locations are not enabled
If device doesn't have an internal GPS, the bluetooth GPS provider will be enabled automatically
BlueGps4Droid 1.0 (2010-09-12)
Connect to bluetooth GPS (NMEA) and replace the internal GPS of an Android device.
Record GPS tracks in NMEA files
Compatible with Android version 2.0 and above
English and French translations
Localizing BlueGPS4Droid for other languages...
BlueGPS4Droid has been downloaded more than 25,000 times from more than 100 countries.
However, actually BlueGPS4Droid is only available in the following languages:
English
French
Spanish (thanks to Colegota: http://forum.xda-developers.com/show...1&postcount=55 )
Russian (thanks to skleroz)
Portuguese (thanks to rsantospereira (XDA: rikpereira) and meiji (XDA: meiji.emperor))
If you find it useful, help us to improve the translations and support new languages !
Thank you!
Man, you rock! I thought this is never going to happen!
You made my SGS with half-broken gps useable as I have spare Nokia gps unit that I bought back in E70 days.
Keep up your great job!
I'll give this one a try.. I've tried two others in the market, one I paid for (and is still pay-for) which technically works but doesn't reconnect well or at all. The other was pay-for and now is free, and it works FLAWLESS.
Doesn't hurt to try one more for fun. Plus, maybe this one will behave on tablets, as I understand the other two don't. I don't have a tablet yet to try though..
I'm interested in having my Android send GPS NMEA as a BT GPS unit. Seems like all the pieces are there in this project. Has the author considered this use-case?
Thanks,
Jae
jaebird said:
I'm interested in having my Android send GPS NMEA as a BT GPS unit. Seems like all the pieces are there in this project. Has the author considered this use-case?
Thanks,
Jae
Click to expand...
Click to collapse
You're right, it's even simpler since you don't have to analyze the NMEA sentences.
However,
It' wasn't what I needed (sharing Galaxy S GPS is not really the best idea you can have... )
there is already several free (and open source) applications available for that purpose...
For an open source app see, for example, BlueNMEA here:
http://forum.xda-developers.com/showthread.php?t=553053
http://max.kellermann.name/projects/blue-nmea/
There is also GPS 2 Bluetooth which is free (but not open source) :
http://www.androidpit.com/en/android/market/apps/app/com.cajax.gps2bt2/GPS-2-Bluetooth-v-2
http://www.android-software.fr/gps-2-bluetooth (review in french)
New version 1.2.0 is out
BlueGps4Droid 1.2.0
Add SiRF configuration management (NMEA sentences - SBAS - Static Navigation)
Add verifications: if bluetooth or mock locations are not enabled, the service is not started.
Add alert messages to explain why the service cannot be started if bluetooth or mock locations are not enabled
If device doesn't have an internal GPS, the bluetooth GPS provider is enabled automatically
Add an about window that gives the version of application, licensing information and where the sources may be downloaded.
Some real nice work, your package is very complete. It seems like not too many people have discovered your incredible asset to our Androids. Keep up the good work.
Wonderful! Keep up the good work! I'll be testing this all day tmr! Thanks!
How do you manage to add a new location provider?
Last time I checked the list was hardcoded in Android.
Marcus
Hi, thanks for a superb tool. Now I can use my bluetooth MTK chipset GPS a save my HTC Desire battery.
It is possible to add NMEA sentence to configure MTK chipset - like SiRF configuration management.
Thanks
David
Great, it was a little frustrating not being able to use my Bluetooth GPS with Android. There are several reasons to use external GPS: improved battery life, better precision, better sensibility... It's nice to be able to use an external GPS when needed. Thanks for your program!
igalan said:
Great, it was a little frustrating not being able to use my Bluetooth GPS with Android. There are several reasons to use external GPS: improved battery life, better precision, better sensibility... It's nice to be able to use an external GPS when needed. Thanks for your program!
Click to expand...
Click to collapse
Will using an external gps really save on battery life? I thought having the bluetooth on would use as much power as that saved by turning off the gps.
Also, will this interfere with other applications that rely on the gps, or will they all use the external gps while this app is diverting it?
Can I leave the external gps in my car and have the phone only use it when I'm using it in my car for navigation?
EDIT: additional question: can the phone use two bluetooth devices at once? In other words, can I be using my bluetooth headset while the bluetooth gps is active?
Pete
Bluetooth uses way less power than a GPS. A Bluetooth GPS will run on its separate battery, so it will last 8 or more hours straight (depending on the chipset and battery capacity). Having your Bluetooth radio active won't have much impact on your phone, but try navigating with the built in GPS, it will eat the battery quickly.
You can have several Bluetooth connections at once, but most Bluetooth services can only have one connection: one headset, one stereo audio, etc.
I have a question.
It is theoretically possible to connect an external BT receiver with the phone's internal GPS receiver to several times increased the accuracy?
For example, if the GPS phone would be on the window and external BT receiver would be in the trunk, and we know its position relative to each other.
I want to use this but I have a silly problem. The battery in my BT-339 receiver is dead and I don't have a car charger for it. Anybody have a link to a cheap charger/replacement battery? Ideally, I'd like to get a usb cable for it that I can use in the car. Not sure the size of the barrel connector on it (4mm?). I used to use it with my Treo with a Seidio mount. The mount was powered and came with a power-out cable that charged the gps unit. So, I have a cable with the right barrel connector on one end and another male plug on the other. I also have an AC adapter. Ideas for best solution?
Otherwise, I love the idea for this software!
Jason
MarcusWolschon said:
How do you manage to add a new location provider?
Last time I checked the list was hardcoded in Android.
Marcus
Click to expand...
Click to collapse
I'm using Mock Locations Provider API, which allows to replace an existing provider or to create an new one.
LocationManager.html.addTestProvider(...)
Dave.a said:
Hi, thanks for a superb tool. Now I can use my bluetooth MTK chipset GPS a save my HTC Desire battery.
It is possible to add NMEA sentence to configure MTK chipset - like SiRF configuration management.
Thanks
David
Click to expand...
Click to collapse
Sure it could !
My bluetooth GPS is a GlobalSat BT-338 that has a SIRF III chip, so I had a special interest to be able to configure it...
NewYorkLaw said:
Will using an external gps really save on battery life? I thought having the bluetooth on would use as much power as that saved by turning off the gps.
Click to expand...
Click to collapse
Normally the bluetooth battery usage should be lower than the internal GPS one...
See also Why Use An External Bluetooth GPS Receiver With An Android Phone? on the AndroGeoid blog.
NewYorkLaw said:
Also, will this interfere with other applications that rely on the gps, or will they all use the external gps while this app is diverting it?
Click to expand...
Click to collapse
When you replace a locations provider, all the applications which use it should be affected.
NewYorkLaw said:
Can I leave the external gps in my car and have the phone only use it when I'm using it in my car for navigation?
Click to expand...
Click to collapse
Why not ? I'm doing it myself...
NewYorkLaw said:
EDIT: additional question: can the phone use two bluetooth devices at once? In other words, can I be using my bluetooth headset while the bluetooth gps is active?
Click to expand...
Click to collapse
It should, but it depends also on the quality of the bluetooth stack and driver.
Hi this is my first post hope I didn;t screw it up. I have a Samsung A01 phone. I always enable developer options. I noticed that bluetooth is always running with GATT service And sometimes BluetoothOppService, PanService, and A2dpService. But usually just the GATTservice. I've stopped it in developer options, I've force stopped it in Apps menu. I've also restricted running in background in mobile data and battery and also clear data. Later I also did the same to Bluetooth MIDI Service and Bluetooth Test. ( I dont bother with those anymore. The permission won't let me Deny. They are greyed out. I;m unable to disable it. I have it off in the Connections settings. I've also gone to advanced in the settings and it will not let me put anything in the blacklist. I've erased connections and at this point I can't figure it out. Also in Developer options running apps I use report and it crashes immediately. I've turned phone on and off, I've put it in safe mode, and I factory reset it. And lastly the bluetooth icon on the drop down menu screen is never showing bluetooth is on which means its running hidden. Please help thankyou.
Bluetooth per se is neither an app nor a service, it's a network communication protocol ( defined in Androids Bluetooth API ) what apps can make use of.
By using Android Bluetooth API in Android apps, they can perform the following functionalities:
Scan for the available Bluetooth devices within the range
Use local Bluetooth adapter for paired Bluetooth devices
Connect to other devices through service discovery
Transfer data to and from other devices
Manage multiple connections
jwoegerbauer said:
Bluetooth is neither an app nor a service, it's a network communication protocol ( defined in Androids Bluetooth API ) what apps can make use of.
By using Android Bluetooth API in Android apps, they can perform the following functionalities:
Scan for the available Bluetooth devices within the range
Use local Bluetooth adapter for paired Bluetooth devices
Connect to other devices through service discovery
Transfer data to and from other devices
Manage multiple connections
Click to expand...
Click to collapse
Oh I'm using the wrong terminology. (although in developer options its showing under "running applications" And I dont like it running without my permission.