blankblank blank


Archive for September, 2010

Android External Bluetooth GPS Apps: Bluetooth GPS Mouse

Application Name: Bluetooth GPS Mouse

Description: Replaces internal GPS coordinate signal with one from an external Bluetooth GPS receiver.

Publisher’s website: Argotronic

Cost: Free version times out every 10 minutes; unlimited €1.99 version

Version/date reviewed: v. 0.95  /  10-2-10

Phone/OS: Droid X / Android 2.2

bgmfree_qr

Android Market link (mobile app only)
Android Market link (browser)


Note: Before using this app, you will need to pair your external Bluetooth GPS with your Android phone, and enable “mock locations”; see the Appendix at the bottom of this post for more info.

The Bluetooth GPS Mouse app offers a few more features than the free Bluetooth GPS For Android app review yesterday. And it seemed to work fine yesterday when I first tried it. However, an update today seems to have added a minor bug on my Droid X; hopefully, that will get fixed soon.

bgm_prompt

Figure 1: Unlike the previous app, this one will prompt you to turn on Bluetooth if it’s not already on.

bgm_1

Figure 2: Once Bluetooth is on, tap on “Start Service” to start it up. You might want to check out the Options section before going further …

bgm_options

Figure 3: The standard Bluetooth connect method seemed to work fine for me, with the usual balkiness; if you have problems, try the alternate one. “Show Notify Icon” puts an icon in the status bar, handy for accessing the control panel again to shut off the service or change options.

Some apps (Google Maps and Bing Maps) can have problems when the unit’s main GPS is disabled; however, I found they worked fine with this box checked here, so I left it that way.

bgm_2

Figure 4: After setting the options, tap the “Start Service” button to start it running; this will enable the “Connect To Bluetooth Device” button at the top. Tap this to connect, and you’ll get a screen to choose the Bluetooth device …

bgm_select

Figure 5: Here, the HOLUX_M-1000 is my paired Bluetooth GPS unit, so I select it.

bgm_status

Figure 6: If the connection attempt is successful, you’ll get a “success” message, and a satellite status screen. This screen works fairly well, and usually (but not always) includes the WAAS satellite signal. You can now exit this page, and run whatever GPS application you want; they will now use the Bluetooth GPS receiver for position information instead of the built-in GPS. Note also the new icon in the status bar, which notifies you that you have an active Bluetooth GPS connection, and which also gives you immediate access to the app’s control screen.

Establishing a connection can sometimes take repeated attempts. If you’re having problems after multiple attempts, try turning the Bluetooth GPS receiver off and on. If that doesn’t work, try the “Alt. BT Connect Method” option.


Other Issues:

Came across one bug, not major but annoying. Sometimes, the built-in GPS is not disabled successfully, and some GPS apps will start it up alongside the Bluetooth GPS receiver, draining your battery needlessly; you’ll know this is happening if you see the standard GPS icon appear in the status bar. The apps will then alternate getting positions from the built-in GPS and the Bluetooth GPS, sometimes causing your position to jump around. The only fix I found for this is to turn the Android unit off, and then back on again. This is an uncommon, sporadic problem; if you’re lucky, you may not even see it.

Final thoughts:

Except for the occasional bug described above, the app worked fine with every app I tried it out with. Having the satellite status screen is a plus, as other GPS apps won’t display that information. The free version times out every ten minutes, but for some uses that may be good enough. The unlimited paid version is only 2 euros (less than $3), so that won’t break your budget.

Appendix: Setting up an external Bluetooth GPS for use with your Android unit.

A link to my original post on the advantages of using an external Bluetooth GPS receiver instead of your Android’s built-in GPS.

Here are some inexpensive external Bluetooth GPS units; a search on Amazon.com or eBay will bring up many more:

After you’ve bought the unit, charged it up and turned it on:

1. Go to Settings => Wireless & networks, and make sure Bluetooth is turned on.

2. Go to the “Bluetooth settings” section, and have your Android unit scan for new Bluetooth devices.

3. After it finds your Bluetooth GPS, it may ask you to enter a four-digit security code; for GPS units, if no code is included with your unit,  “0000” usually works.

4. Your Android unit will now be “paired” with this Bluetooth GPS device; any apps that support Bluetooth GPS will have this device listed as an option. Unless you remove this pairing, you only need to do this once.

5. To use a Bluetooth GPS with apps that don’t support it natively, you’ll need either the app reviewed here, or one that performs a similar function. You will also need to enable “mock locations”: Settings => Applications => Development => check the “Allow mock locations” box.

6. DON’T DISABLE THE BUILT-IN GPS ON YOUR ANDROID. Some apps (e.g. Google Maps, Bing Maps) won’t work with external Bluetooth unless you have the built-in GPS enabled, even if they don’t actually use the built-in GPS for positions.




Android External Bluetooth GPS Apps: Bluetooth GPS For Android

Application Name: Bluetooth GPS Provider

Description: Replaces internal GPS coordinate signal with one from an external Bluetooth GPS receiver.

Publisher’s website: Bluetooth GPS For Android

Cost: Free

Version/date reviewed: v.1.0  /  9-26-10

Phone/OS: Droid X / Android 2.2

This app is not currently available in the Android Market; you will need to download it from the website link above, transfer it over to your Android device, then install it by “sideloading” it. You will also need to enable installation of stand-along Android apk files in the settings section (Settings => Applications => Check the “Unknown sources” box). Some cellular providers do not allow you to do this.


Note: Before using this app, you will need to pair your external Bluetooth GPS with your Android phone, and enable “mock locations”; see the Appendix at the bottom of this post for more info.

Bluetooth GPS For Android is the only free app (so far) that will let you use an external Bluetooth GPS with your Android unit. It’s also the only one currently available outside the Android Market; that means you can load it onto units like the upcoming Archos Android tablets that have Bluetooth, but no GPS and no Android Market support. For now, “free” also means a limited feature set.

The current release version is 1.1, but I had serious problems getting it to work correctly. The previous version (1.0) seems to work fine, so if 1.1 or a later version doesn’t work for you, try downloading 1.0 from the Downloads section of the website (click on the “Apk” link to list all available versions).

bluegps_1

Figure 1: The app is called “BlueGPS” on your Android, and has a standard Droid icon; start it up and get the basic screen above. You should already have turned on your unit’s Bluetooth, and paired your Bluetooth GPS receiver with your Android (see the Appendix below for more info. Tap on “Choose Bluetooth GPS” …

bluegps_2

Figure 2: … and get a list of all the paired Bluetooth devices for your phone, including those that aren’t GPS receivers. Here, I’m paired with my desktop computer (INSPIRON), and my Bluetooth headset (WEP870) in addition to my GPS receiver (HOLUX_M-1000). Tap on a paired device to select i

bluegps_3

Figure 3: To start up the Bluetooth GPS service, tap on the Start/Stop GPS checkbox, and wait. You’ll get a message at the bottom saying “Bluetooth GPS … started”, and the checkbox will turn green. However, the first attempt won’t always be successful; if that happens, the checkbox will become unchecked, and you’ll see “Bluetooth GPS .. stopped”, as in the screenshot at left. It can take a few tries to establish a successful connection; I think this is an Android issue and not an app issue, as I’ve had problems with making Bluetooth connections with other devices as well.

In version 1.1, the checkbox always stays green, even if no Bluetooth connection is established – that’s why I went back to version 1.0.

bluegps_4

Figure 4: Here, a successful Bluetooth GPS connection has been made. Notice the Android icon in the status bar at top; that will stay there as long as the service is active, and can be use to access this settings page at any time.

There are apparently options to log the raw NMEA data from the GPS to a text file, which could be used to store track data. I prefer other apps for this purpose, so I didn’t test that out.

bluegps_status

Figure 5: Here’s a test of the Bluetooth GPS in action, using the free app GPS Status. You can see that there’s  position/altitude data visible at the bottom, even though no satellites are shown in the sky view at top.

Every app I tested this Bluetooth GPS app with worked perfectly, including Google Maps and Bing Maps. Bing Maps was especially impressive, as I could walk from one end of my house to the other and see my position track exactly; my Android’s built-in GPS couldn’t follow my movement inside my house the same way.

Other Issues: Nothing major.

  • One force-close that never repeated
  • You have to make sure to turn on your Bluetooth first; the app won’t prompt you if it’s off
  • You also need to remember to turn off the service when you’re done, otherwise any apps looking for GPS data will always look for the Bluetooth GPS instead of the built-in GPS.
  • No readout of satellite status (number of satellites available, accuracy)

Final thoughts:

Apart from the problems with the latest version, which I assume will be fixed soon, the app does seem to work fine. It’s currently a little thin on features, and the two paid apps I’ll be reviewing next have some really useful features for not a lot of extra cash. But if you absolutely need a free app, this one works perfectly fine.

Appendix: Setting up an external Bluetooth GPS for use with your Android unit.

A link to my original post on the advantages of using an external Bluetooth GPS receiver instead of your Android’s built-in GPS.

Here are some inexpensive external Bluetooth GPS units; a search on Amazon.com or eBay will bring up many more:

After you’ve bought the unit, charged it up and turned it on:

1. Go to Settings => Wireless & networks, and make sure Bluetooth is turned on.

2. Go to the “Bluetooth settings” section, and have your Android unit scan for new Bluetooth devices.

3. After it finds your Bluetooth GPS, it may ask you to enter a four-digit security code; for GPS units, if no code is included with your unit,  “0000” usually works.

4. Your Android unit will now be “paired” with this Bluetooth GPS device; any apps that support Bluetooth GPS will have this device listed as an option. Unless you remove this pairing, you only need to do this once.

5. To use a Bluetooth GPS with apps that don’t support it natively, you’ll need either the app reviewed here, or one that performs a similar function. You will also need to enable “mock locations”: Settings => Applications => Development => check the “Allow mock locations” box.

6. DON’T DISABLE THE BUILT-IN GPS ON YOUR ANDROID. Some apps (e.g. Google Maps, Bing Maps) won’t work with external Bluetooth unless you have the built-in GPS enabled, even if they don’t actually use the built-in GPS for positions.




Why Use An External Bluetooth GPS Receiver With An Android Phone?

Google’s specification for an “official” Android unit, that allow it to use Google’s logo and have access to the Android Market, includes a requirement for a built-in GPS receiver. That’s why the new line of Archos Android tablets need their own app marketplace – they don’t come with GPS receivers. So if Android phones come with GPS, why bother with an external Bluetooth GPS receiver, especially when it will cost you extra? Here are a few good reasons:

1. External Bluetooth GPS sidesteps the Motorola “GPS In Airplane Mode” problem.

Posted about this yesterday; basically, some Motorola Android phones have a bug where GPS won’t work if you turn Airplane Mode on. Bluetooth GPS doesn’t have any problems – works perfectly in Airplane Mode.

2. External Bluetooth GPS offers a second position data source, letting you run multiple GPS apps simultaneously.

I’ve noticed that if you have one app getting position data from the GPS, and then start up another app that also looks for GPS data, they don’t always play well together – the second app can take over the GPS data stream completely. If one app supports Bluetooth GPS natively, then you can track position with that, and also run a second app that uses the unit’s internal GPS.

3. External Bluetooth GPS can give you slightly more accurate positions.

I have yet to find a single Android unit that has a GPS chipset that supports WAAS (Wide Area Augmentation Service). WAAS is a satellite signal that broadcasts real-time correction data for several sources of GPS position error, including satellite time/position errors and signal transmission errors in the ionosphere. Not terribly important while the sun is quiet, as it is now, but as the sun moves into a more active phase over the next few years, WAAS can improve the position accuracy by a few meters. Most external Bluetooth GPS receivers come with WAAS turned on as the default.

External GPS units can also come with larger antennas, and have room for bigger (and better) GPS chipsets, allowing for more accurate position determination. And because they’re not tied to your phone, you can place them in a location where they might get better satellite reception, e.g. the top of your backpack, the dashboard of your car, even under your hat. I hope to have a post in the near future comparing the accuracy of my Droid X’s built-in GPS unit, an external Bluetooth GPS receiver, and a high-quality handheld dedicated GPS unit (Garmin 60Cx).

4. Using an external Bluetooth GPS position instead of the built-in GPS can extend the battery life of your Android unit.

In a previous post, I looked at the battery drain from GPS, Bluetooth, WiFi, and cellular. The built-in GPS had the biggest power requirements by far; in comparison, turning Bluetooth on had virtually no effect on battery life. I just ran some additional comparison tests on battery life for the Droid X using internal GPS with Bluetooth off  vs. external Bluetooth GPS. The unit was in Airplane mode in both cases, to eliminate cellular/WiFi power drain. I used the TrekBuddy map app, which lets you choose between the internal GPS and an external Bluetooth GPS as the GPS position source. Approximate battery life is given in hours, based on the time to drop from 100% battery to 60% battery. For one set of tests, the display was turned off; for the second, the display was left on continuously at 50% brightness.

Display off Display on (50% brightness)
Bluetooth GPS 20.2 hrs 9.1 hrs
Internal GPS 11.0 hrs 5.7 hrs

Results are pretty dramatic – switching from the internal GPS to an external Bluetooth GPS cuts almost doubles battery life when the display is off. Even with the display on, the battery life with the external Bluetooth GPS is actually comparable to some stand-alone GPS units. For example, battery life for the Magellan Triton or deLorme PN-40 units with two AA batteries is often a bit less than 10 hours under normal use. If you remember to turn off the display when you don’t need it, you could easily get 15+ hours of continuous use by switching over to an external Bluetooth GPS.

5. An external Bluetooth GPS is cheaper than a spare battery.

External Bluetooth GPS units aren’t free, but they don’t have to be terribly expensive. Basic models like my Holux M-1000 (which works great with my Droid X), or the Globalsat BT-359 run less than $45, which is the cost of a standard OEM spare battery for my Droid X. My Holux will run for 16 hours on a charge, which is just about the same time you can run the Android phone before it needs recharging as well.


Some Android GPS apps like TrekBuddy already come with built-in native Bluetooth GPS support, which doesn’t require any additional apps or settings. Other apps, like Topo Maps, don’t have native Bluetooth support,  but there are “helper” service apps, free and paid,  that will let those apps use positions from an external Bluetooth GPS as well. I’ll be reviewing some of those in upcoming posts.




Fixing Some Common GPS Issues With Android Phones

I’ve run into a couple of minor GPS issues with my Droid X phone, and thought I’d post my solutions/quasi-solutions to them, in the hope you might find them useful some day.

Problem 1: GPS takes a very long time to get a fix, and only shows 1-2 satellite signals during that period.

I’ve had this pop up a few times, where it takes 15-60 minutes for a good solid position fix, even when Assisted-GPS is enabled. When this happens, signals from only 1-2 satellites are listed as acquired, even though many more satellites are in the sky. Powering off and on doesn’t solve the problem.

Solution: Clear out your Android unit’s cache partition.

1. Find out how to start your Android unit in “Recovery Mode”. Unfortunately, there’s no standard way that works with every phone, so you’ll have to Google your phone’s name and “recovery mode” to find out what works for you. On my Droid X, press the Home and Power keys simultaneously while turning the unit on, until an exclamation mark icon pops up, then press the Search button.

2. Select the “wipe cache partition” option. On my Droid X, I sse the Volume up/down keys to highlight “wipe cache partition”, and the camera shutter button to select that option.

3. It will take a few seconds, then you’ll get the message “Cache wipe complete”. You can now select the “reboot system now” option, and start up your phone normally.

No guarantees this will work, but in one case where I wasn’t able to get a GPS fix for two hours, even with multiple power cycles, going through this process immediately fixed the problem. It did seem to screw up my compass calibration once or twice, so you might check your compass calibration after doing this. Don’t know exactly why it works, but I suspect it deletes the old GPS ephemeris file, requiring the system to rebuild a new one.

Problem 2: Motorola units can’t get a GPS fix in Airplane Mode.

Got a comment recently from someone who reported that they couldn’t get a GPS fix when their Motorola Droid X was in “Airplane Mode”. Turning Airplane Mode on shuts off WiFi and cellular, conserving power; given how much battery power the GPS sucks up, this should help extend battery life a bit if you don’t need a phone or data connection. I’d used Airplane Mode sometimes, and not seen that  problem; but after further investigation, I found that my phone also has issues as well.

  • If you start GPS tracking with Airplane Mode off, then turn Airplane Mode on, GPS tracking will work correctly.
  • If you turn Airplane Mode on, and start GPS tracking within a short period of time of doing that (< 5 minutes or so), GPS tracking will work.
  • If you turn Airplane Mode on, and try to start GPS tracking after 5 or more minutes have elapsed, you will be unsuccessful. I didn’t see the problem because I always started GPS tracking right after turning Airplane Mode on.

This is a fairly-well known problem with the Verizon Droid units manufactured by Motorola (Droid, Droid 2 and Droid X); Droid units made by HTC (Eris, Incredible) do not appear to have this problem. One site suggested the problem lies with the Assisted-GPS function, but I don’t think this is correct; if I turn off Assisted-GPS on my Droid X, it has no effect on this issue. Running a test app, I can see that the GPS chipset is outputting NMEA data in Airplane Mode, but no coordinate position info is coming out. Sometimes, a GPS satellite signal will pop up for a second or two, then disappear and not come back.

I haven’t yet found a full “solution” that resolves this issue, but there are some “quasi-solutions”:

  • Leave Airplane Mode off. I’ve been able to get a solid GPS fix in this case even when there’s no cellular connection (e.g. in the bottom of a very deep canyon). The disadvantage is obviously decreased battery life. You can turn WiFi off independently for a bit of extra power savings, without affecting GPS signal acquisition.
  • Turn Airplane Mode On, then immediately run the app that requires a GPS fix and keep it running. Disadvantages are obvious: substantial battery drain, and you may not be able to run another program at the same time.
  • Complain to Motorola, and hope they fix the problem. Here’s a link to their support page; choose your model, then send them an email asking (nicely) to fix this problem.
  • Final solution costs a few bucks, but sidesteps the problem completely, works with any app that uses GPS, improves accuracy, and reduces battery drain dramatically. And these advantages apply to any Android phone, including those that don’t have the Airplane Mode problem. The magic solution is to use an external Bluetooth GPS receiver with your Android phone. Tomorrow, I’ll post about the whys and hows of this solution, and the rest of the posts this week will be about apps (free and paid) that let you use an external Bluetooth GPS receiver with any app, even those that don’t have native Bluetooth support.




Locational Soil And Vegetation Data In Android With SoilWeb

Application Name: SoilWeb

Description: Pulls up NRCS-NCSS soil, geology and vegetation data for a location.

Publisher’s website: SoilWeb

Cost: Free

Version/date reviewed: v.1.1  /  9-21-10

Phone/OS: Droid X / Android 2.1

sw_qr

Android Market link (mobile app only)
Android Market link (browser)


If someone asked me to demonstrate apps that showed the true potential of Android-based portable geography tools, SoilWeb would be one of my top examples. SoilWeb queries US government soil survey data based on a GPS-derived location, then displays it on your Android’s screen. The intro screen gives basic instructions, as well as an example of the kind of data it will retrieve (Figure 1):

sw1

Tap on “Get My Location” to start up the GPS, and determine the coordinates for which data will be retrieved. Since the app only allows 30 seconds for position acquisition, it’s probably a good idea to run some other GPS app beforehand to “warm up” the system. Ironically, my house is in one of the few areas in the country with no data coverage; the app will tell me that, as well as bringing up a link to a US data coverage map (Figure 2):

coverall

However, I was in an area of New Mexico last week that does have data, and was able to fully exercise the app. After getting my location, the app retrieved two soil columns for the area I was in (Figure 3):

sw3

Tapping on the link at the top of the column brings up a description of it (Figure 4):

teco1

Tapping on the soil column itself brings up tabular data for both the soil, and vegetation types typical for that soil type and the climate of the area (Figure 5):

tecofull

Awesome stuff, and I hope to see more apps like this in the future. I hope to try and bang out a few myself, but am unlikely to make one as good as this one. Kudos to Dylan Beaudette of the California Soil Resource Lab for putting this app together, and making it freely available.




TrekBuddy: Offline Map Viewer And GPS Tracker For Android II

Continuing yesterday’s review of TrekBuddy

By tapping in the lower-right-hand corner of TrekBuddy’s map screen, you can flip through the compass screen, the computer mode screen (CMS), and back to the map screen. The compass screen is pretty rudimentary; just a needle display (no digital bearing), and it’s magnetic directions only (Figure 1):

compass

If you’ve just installed the program, and now flip on to the CMS page, you’ll find it blank. Turns out that you have to download and install CMS themes by copying them into the TrekBuddy/ui-profiles directory, either from the CMS wiki page or the TrekBuddy forum. CMS themes are written in XML, and on the plus side it looks like you can create some very interesting themes, including scripting. On the downside, CMS theme creation isn’t for the newbie, even using GUI editors like CMS Creator and CMS Designer. What’s more, CMS themes appear to have rigid size specifications i.e. they’re written for particular screen pixel dimensions; so, you have to find or design a theme that’s close to your screen’s pixel size. Otherwise, instead of a CMS display that fills your screen (Figure 2):

cms1

You’ll get one that only partially fills it, with text so small that it can be unreadable (Figure 3):

cms2

Tracks And Waypoints:

The navigation screen (tap in the upper left corner of the map) lets you manage waypoints and tracks. Four submenus:

  • Waypoints – Waypoints need to be in the standard GPX format, copied into the TrekBuddy/wpts directory. But you can have multiple waypoints in a single GPX file, and select one of them to use for display or navigation. Once selected, you can “GoTo” it (jump to the map area where it’s located), “NavigateTo” it (though TrekBuddy’s navigation capabilities are limited), or use it in creating a route. You can a Field Note to it, useful for geocaching. On high-resolution Android screens, the waypoint text and icon can be so small as to be unfindable/unreadable; what’s more, only a waypoint that you’re navigating to will show up on-screen (Figure 4):

waypoint

  • Tracks – Similar handling to waypoints; they’ll need to be in GPX format in the tracks-gpx directory, and you can only display one track at a time. You can navigate or route along a track.  Annoyingly, all the individual track points are displayed (Figure 5):

track

  • Record Current – Lets you record your current waypoint position, with your desired name and comment; time and altitude tags are added automatically. You can add a waypoint to an existing GPX file, or put it into a new GPX file on its own. Simple and easy to use – one of TrekBuddy’s best features.
  • Add Custom – For creating a waypoint by entering coordinates; otherwise, works the same as “Record Current”.

The process of recording tracks is clumsy and inflexible. In the “Location” menu (under Settings), you only have the options of never recording tracks, asking when you start up the GPS and then tracking all the time, or always tracking as soon as the GPS is on. You can’t stop a track, then start up a new one in the running program; the only way to stop a track and start a new one is to exit the program. You have the option of saving tracks in either GPX or NMEA format; tracks are auto-named with the date/time, and stored in either the tracks-gpx or tracks-nmea directory.

Other Issues:

  • Occasional Java exception error pops up – this doesn’t seem to affect program operation, and goes away after you tap on the “OK” button.
  • One program crash under odd circumstances; program died, but GPS tracking kept on going.
  • Several times, the touch screen locked up completely; any attempts to do anything on-screen brings up a “Keyboard locked” message. Once, random button pushing got rid of the problem; the second time, I had to power-down my Android unit and turn it back on again to get rid of the problem.

Final Thoughts:

There are a number of features I really like about TrekBuddy. The waypoint recording functions are pretty good, and the Bluetooth GPS option is a killer feature, one I hope more Android apps will adopt. And it does a decent job of map display and GPS tracking. I just wish there weren’t so many oddball quirks and inaccessible features that make using it a bit of a pain, at least in Android. It is a port of an app intended for use with OSes other Android, and I guess you can’t expect everything to port over smoothly. Worth checking out, especially for Bluetooth GPS, but I’m hoping to find a better map app, and/or that the Android bugs/quirks will get fixed.




TrekBuddy: Offline Map Viewer And GPS Tracker For Android I

Application Name: TrekBuddy

Description: Displays offline mapsets, GPS tracking, records waypoints and tracks, more.

Publisher’s website: TrekBuddy

Cost: Free (donationware)

Version/date reviewed: v.0.9.99  /  9-14-10

Phone/OS: Droid X / Android 2.1

tb_qr

Android Market link (mobile app only)
Android Market link (browser)


After too many recent posts on creating offline maps with MOBAC and MAPC2MPAC, and transferring them over to an Android unit, I’m finally back to actual GPS map apps. First up is TrekBuddy, a J2ME app originally written about 4 years ago, used on devices with Java Virtual Machines (Blackberry, Symbian, Palm, Windows Mobile), and more recently ported over to Android. The good part of its long history is that it’s fairly stable and reliable; the bad part is that it become clear fairly quickly that it wasn’t written originally as an Android app. Some operational quirks in Android are pretty minor, but others can be a real annoyance to deal with.

First off, the app comes with only a rudimentary low-zoom basemap (Figure 1):

trekbuddyopen

… so you’ll need to prepare maps to use with it using MOBAC or MAPC2MAPC. There are essentially two loadable formats:

  • Maps (which MAPC2MAPC creates). In compressed format, these come as a *.tmi and *.tar file, containing map imagery and calibration data for a single zoom level.
  • Atlases (which MOBAC creates). These are collections of different kinds of maps, each of which can have multiple zoom detail levels. These come with a single atlas file (in .tar format) that contains catalogue information for all the maps in the atlas collection. You can also access individual mapsets independently of their atlas context.

You first need to copy an atlas collection, or a mapset, onto your Android unit (see this post for some ways to do that). These should normally go into the “maps” subfolder of the main TrekBuddy data folder, since that’s where the program looks for them first. However, it appears as though you can navigate within the app to folders in other locations on your memory card, so you could put them elsewhere; you can also change the default directory for data in the program Settings section. For this review, I copied the atlas created in this post, which consists of a single atlas index file (renamed to “kv.tar”), and three folders with OSM, MS and topo maps data. I also copied over a folder containing a mapset created with MAPC2MAPC, a converted USGS aerial photo.

Loadatlas

Figure 2: To choose an atlas, select “Load Atlas” from the menu. Here, I first I select the kv.tar atlas file to open the atlas …

atlasmaps

Figure 3: Then only the mapsets in the atlas are displayed. Choosing the “Topo Maps” mapset …

atlastopo

Figure 4: I see the three zoom layers I chose. Selecting the “17” level …

atlastopoview

Figure 5: The topo map for that zoom level pops up. If I start GPS tracking (Menu => Start), my location will be marked with a compass circle.

“Load Map” works in a similar fashion, except that you’ll have to manually select the “.tar” file that contains individual mapset data, even if it’s the only file in a directory. You’ll also always be asked if you want to set this map as the default, which is annoying. And if you change your mind, and decide you don’t want to select an atlas or map, there’s no way to back out gracefully. Either choose a map, even the one you’re currently using, or you’ll have to exit the program by selecting “Exit” from the menu (back key doesn’t get you out of the program at any time).

But there’s a bigger problem. With three zoom levels for the topo mapset in the atlas, I expected to see some kind of zoom control in the map display to let me zoom in and out through the three available levels. I finally figured out that there is no zoom control; if you want to switch to a map of the same type, but at a different zoom detail, you’ll have to manually select it using the “Load Atlas” or “Load Map” function again. You can’t zoom in or out on a single detail level either; it’s always displayed at the native resolution. This is a huge pain; I don’t understand why mapsets in an atlas can’t automatically be loaded/unloaded with zoom buttons. On the plus side, GPS tracking was accurate, with the map scrolling fairly smoothly as I moved. Tapping and dragging to scroll the map also worked well.

The main TrekBuddy menu has six functions:

  • Start – Starts up GPS tracking; when started, this splits into GPS “Pause” tracking and “Stop”  tracking buttons
  • Load Map, Load Atlas – Described above
  • Info – Brings up a helpful screen describing keyboard shortcuts, which are the only way to bring up some functions. The problem is that these require a physical keyboard; there’s no option with touchscreen-only Android models to bring up the virtual keyboard, which locks out some of the functionality.
  • Exit – The only way to stop the program; you can’t get out using the back key.
  • Settings – Lets you modify the program configuration:
    • Basic – Set the default map, folder, startup screen, units and coordinate system. On the plus side, it supports 15 datums, along with UTM and lat/long coordinates. On the down side, setting the default map and folder is a pain, as you have to type out the full file path for it; would be better if there were a file/directory screen to do that.
    • Desktop – Set parameters for onscreen display (OSD), like scale, font size/transparency, decimal precision, etc.. The program seems to be optimized for low- pixel-pitch screens, as even the largest font size results in a fairly small on-screen size for my Droid X; other features also display so small that they can be hard to make out sometimes.
    • Location – Lets you set the tracklog recording to never/ask/always, track export format (GPX/NMEA), and the track interval in time or distance; it appears as though entering a negative value for time or distance renders that interval parameter inoperative. Also in this section is TrekBuddy’s big killer feature, the ability to use an external Bluetooth GPS unit instead of the built-in GPS for location tracking. I’ll cover Bluetooth GPS in future posts, but I’ll say now that this option is a huge plus for TrekBuddy.
    • Navigation – Lets you set parameters for navigation like waypoint/track display, proximity parameters and more.
    • Misc – Some cryptic operating options; I’m guessing there’s documentation at the website, but I couldn’t find it.

The first time I tried setting some of these options, I got incredibly frustrated – the program kept reverting back to the starting defaults. I finally figured out that if you change any option in a Settings section, you need to press the menu button to bring up an “OK” menu listing, then tap on that. Then, before exiting the main Settings list to go back to the map, you need to press the menu button, then tap on “Save” to permanently record your option changes. I don’t see why the program can’t just automatically save whatever changes you’ve made after exiting a section.

I knew from the main website and some of the settings that TrekBuddy had options for recording/navigating tracks and waypoints. There was also supposed to be a compass screen, and a computer mode screen (CMS), displaying numerical data like GPS satellite info, position, etc.. But without a physical keyboard, it looked like some of these were totally inaccessible on my Droid X. Then I accidentally stumbled on a partial solution: some key features could be accessed by tapping on specific parts of the Droid’s touchscreen:

  • Upper-left corner tap brings up a screen for waypoint and track control (Figure 6).

navigation

  • Lower-left corner brings up all the options accessible with the menu button; tap anywhere else to make it disappear (Figure 7)

main

  • With an atlas loaded, tapping just above the lower left corner brings up the atlas layers; you’ll still have to select the zoom level you want.
  • Bottom-center fills in the circle/compass display that marks your position, making it easier to see the compass points and the direction-of-movement arrow
empty
“Empty” circle
full
“Filled-in” circle
  • Bottom-right switches from the map screen to compass to CMS back to map
  • Left-center, right-center and top-center pause tracking
  • Tapping in the middle resumes paused GPS tracking, and also brings you back to your current position if you’ve scrolled the map to a different spot

More tomorrow on the compass/CMS screens, and waypoint/track management.




Transferring Geographic Data Files To And From An Android Unit II

Second part of a series (part one here) on how to copy map files and other geographic data to and from your Android phone.

3. Awesome Drop

A somewhat unusual approach, but seems to work quite well. Install the Awesome Drop application on your Android unit:

Continue reading ‘Transferring Geographic Data Files To And From An Android Unit II’




Transferring Geographic Data Files To And From An Android Unit I

The past four posts (one, two, three, four) have covered desktop applications that create offline map files for use with some Android map display and GPS tracking apps. But once you’ve created the maps, you need to get them onto your Android unit to use them. For that matter, if you use an Android app to save geographic information like waypoints and tracks, you’ll probably need an easy way to copy those files back onto your PC, or share them with others. It should be a simple process, but often isn’t. In my Droid X manual, there’s only a very short section on this, and it’s both limited and wrong. This post and the next will cover several different ways to move file onto, and off of, an Android unit, listed here roughly in order of speed:

  • Direct USB connection (fastest, but not always convenient)
  • FTP server (second fastest, but least convenient)
  • Online file transfer service (convenient, but only copies files to Android, not from)
  • Online file storage/synchronization services (slowest but most flexible)

Each has advantages and disadvantages, but one or more of them should meet most file transfer requirements. I’ll cover the first two today, and the others tomorrow.

1. Direct USB Connection

Your Android unit should have come with a cable that lets you hook it up directly to your computer. However, the default connection only allows for transferring media files from your computer to your Android. To copy data to/from your Android’s microSD memory card storage, you’ll need to put it into USB Mass Storage Mode:

USBconnect

Figure 1: Connect your Android unit to your phone with the USB cable; you should get a message indicating that it’s connected, and the USB symbol should show up in the status bar.

dropdown

Figure 2: Drag down the status bar to view the message; you’ll see one that says USB connection. Tap on that …

USBmenu

Figure 3: … and the USB mode menu will appear. Select “USB Mass Storage” and tap OK; your computer will now mount the Android’s microSD card as a USB drive

explorerlisting

Figure 4: Here, the Android microSD card is listed as removable disk G:. You can now navigate the folder structure through your computer’s file explorer

directorylisting

Figure 5: … and copy data to/from the unit. For example, I could copy the maps created in recent posts into a subfolder of the TrekBuddy folder, and could copy waypoint/track files from that folder, or from the TurboGPS folder

eject

Figure 6: IMPORTANT! Once you’ve completed all file operations, don’t just disconnect the cable directly; you may wind up corrupting the memory card, which would be bad. Eject the microSD card disk by right-clicking on it and choosing eject, or using the “Safely Remove Hardware” option in the traybar icon. Once that’s done, go to the USB mode menu (from step 3), select PC Mode and OK, then wait a few seconds for the Android unit to re-mount the SD card.

Since this approach uses a USB 2.0 connection running at 480 Mbps, it’s going to be the fastest at copying data, and is probably the best choice for large files. But unlike the remaining three options, it requires that you have the correct USB cable handy. You could also pull the microSD card out of your Android unit, put it into a card reader, and then copy/move files from there; if you do this, make sure you follow the same “Eject / Safely Remove Hardware” process as above. But many Android units require you to remove the battery to access the microSD card, which can make that approach inconvenient.

2. Android FTP Server

Convenient, since it doesn’t require a cable, and fairly fast since it copies/moves files at the top speed of your wireless connection; you also don’t have to worry about dismounting/mounting your SD card. But highly geeky, since you have to install a FTP server program on your Android, configure it, then set up a network folder on your main computer that links to the FTP server. I’ve set it up myself, and it works, but I find the direct USB connection more convenient, faster and easier to use. Full directions available at the Android Police website.

Last two approaches tomorrow.




Convert Scanned/Digital Map Images Into Offline Android Format With MAPC2MAPC – Part II

Continued from Part I, Part II is a walkthrough of converting a calibrated map or aerial image into an Android-app-friendly format.

There are a number of ways to get calibrated maps and aerial photos that MAPC2MAPC can convert to Android-app friendly format.

- GIS/mapping programs can usually export maps into “raster”/digital formats that MAPC2MAPC can use. These can also display GIS vector data like shapefiles, then convert it into a compatible rasterized format. This is useful since there currently aren’t any good Android apps that can directly display such vector data.

- Some US state and government agencies provide easy online access to calibrated scanned maps and aerial imagery. Data for the US is particularly easy to find:

For this walkthrough, I’m going to download an aerial photograph and topographic map for my neighborhood from the USGS Seamless Server Site.  I won’t go through the exact details of the process (there’s a tutorial on using the Seamless Server available at that site). But I will point out that when you select a data type for downloading, the Seamless Server will conveniently tell you the projection and datum the data is in, which you’ll need for MAPC2MAPC. Here, both the aerial imagery and topographic map are in the UTM projection, Zone 12N; however, the aerial imagery is in the NAD83 datum, while the topo map is in the NAD27 datum:

seamlessinfo

If you miss it there, or can’t find it, the downloaded zip file will include a .prj text file that has this information, and which can be opened in any text editor:

sszip

ssprj

The two files you will need for use with MAPC2MAPC are the image file (with the .tif file extension) and the “worldfile” with coordinate calibration data (.tfw file extension). In the MAPC2MAPC program, choose File => Open Calibration. In the lower-right corner will be a drop-down menu that lets you select the type of calibration file you’re using from the ones that MAPC2MAPC supports; here, I’ll choose “World files”, then select the .tfw file.

selecttfw

Because worldfiles do not contain map projection/datum info, MAPC2MAPC will prompt me for projection/datum info:

wfparams

From the Seamless Server or PRJ file, I know that the image is in the UTM coordinate system, Zone 12; the numbers in this listing box represent the UTM zones. If it were in a different coordinate system, I could scroll in the box and see if it was available at the bottom; MAPC2MAPC currently supports about 22 additional coordinate systems along with UTM. If I didn’t find it, I’d have to recalibrate the map manually using one of MAPC2MAPC’s built-in utilities, or a separate program (see post I for more info on datums, projections and map calibration). The default datum for MAPC2MAPC is WGS84; if the map is in a different datum (NAD83 in this case), I click the “Not WGS84” button, and choose the correct datum from the next window:

datum

If successful, you should get a screen that looks something like this:

2010-09-14_172052

Now the map image can easily be converted into the Android-app-friendly format. In this case, I’m converting it to TrekBuddy format, so File => Write map as Trekbuddy files converts the original calibrated map image into the TrekBuddy-compatible format.. You’ll find the generated map files in a subfolder located in the same directory as the original image file, with the same name as the image plus “_tiles” appended. The other Android-friendly format MAPC2MAPC supports is the “Mobile Atlas” format; you’ll find that export function in the File menu as well.

The mapset and tiles will be in the uncompressed TrekBuddy format, as MAPC2MAPC doesn’t currently support the compressed tared TrekBuddy format. However, there’s a free Java utility called jtbtar that can convert the uncompressed mapset into a smaller compressed one. Run jtbtar, select the folder with the map tiles, click on “Pack Map”:

jtbtar

And jtbtar will create a compressed .tar file and .tmi file containing the mapset data.

For this example, I didn’t actually notice any substantial space savings by going through this process. However, copying a large compressed file from your computer to your Android unit takes far less time than copying many individual tile files. The process of copying the data over to your Android unit is the next topic on this blog; there are several options, each with advantages and disadvantages.