GPSLogger for Android

A battery efficient GPS logging application

GPSLogger uses the GPS capabilities of your Android phone to log coordinates to GPS format files at regular intervals. This can be particularly useful if you want to geotag your photos after a day out or share your travel route with someone. The purpose of this application is to be battery efficient to save you battery power when abroad and last as long as possible.
Tour FAQ Screenshots

Quick Tour

Menus and Icons

2

Use the views dropdown to navigate between the different presentations.

While you are logging, the green indicator will stay on.

The spinner only appears when the GPS is trying to get a fix.

Menus

3

Many menu items

Profiles - Group preferences under profile names, such as default, nighttime, trekking, etc.

General options - Startup, imperial, debug file and version info

Logging details - File formats, folder, new file creation, frequency, accuracy

Auto send, email and upload - Settings for various destinations such as Google Docs, FTP, Dropbox

Simple view

1

Shows your last recorded GPS point, updates when new point available

Tap any field to highlight the text

Big start/stop button. You can't miss it

Distance travelled is the total distance between all points.

Detailed view

4

Detailed view of last recorded GPS point

Smaller start/stop button

Big View

5

Big text

Meant for landscape mode

Awkward in portrait mode

Features

Can log to GPX, KML, CSV, NMEA and CSV formats. Can also log to a custom URL or just the screen.

Logs GPX points as tracks and track segments

Also logs speed, direction and altitude if available

Add a description to a point using the annotate menu, gets added as a waypoint

Configure time intervals between points

Configure a minimum distance filter between points or an accuracy filter

Notification icon with coordinates and quick actions

Uses cell towers for location when GPS is disabled

Selectively choose network, gps and passive location providers

Automatically upload or email the file at set intervals to destinations such as Email, FTP, Dropbox, Google Docs, OpenStreetMap.

Share location or log files via SMS/Email (and other apps such as Facebook or Twitter depending on what you've got installed)

Start logging on phone bootup

Invoke operations from Tasker or other automation apps.

You can give it a preset file with your own values for distribution

Multiple profiles with different settings are possible

Frequently asked questions and issues

Why is it taking so long to find a fix?

There can be several reasons reasons for this.

New location - if you are at a new location after a long flight, the GPS on your phone can take a while to reorient itself. Try running GPSLogger at high frequency until it does find a location.

Interference - there may be structures nearby blocking your signal.

Mid flight - if you are in a commercial aircraft, you are probably traveling too fast for your phone's hardware to keep up with the GPS signals.

You can read more a little more on what's involved here

Why are the fixes sometimes inaccurate?

It all comes down to your hardware, settings and environment. The accuracy is only as good as your phone's GPS chip. Some phones may have 4 meter accuracies, some have 500 meters. Also, using GPS satellites will give you better accuracy but take a longer time; using network location will give worse accuracy but is quicker. You may also want to check your environment, as there can be inaccuracy due to clouds, buildings, sunspots, alien invasion, etc.

My time interval has passed, but no point was logged

Sometimes, the app will not log for long periods of time

Sometimes your specified time interval will have passed, but no point was logged. There are a few reasons this could happens.

  • The GPS system will have attempted to find its location and given up after a while. This in turn means that Android OS will not have given a location to GPSLogger

  • The accuracy was below your Accuracy filter settings, or the distance was below your Distance filter settings, so GPSLogger didn't log it. You can try setting a retry interval in which GPSLogger can wait for a more accurate point to show up and then use it. Or you can allow for slightly more inaccurate fixes - your mileage may vary as every phone is different in terms of how accurate a fix it can get on a regular basis.

  • Additionally, on Android 6+ (Marshmallow), a new feature called doze mode was introduced, which severely restricts activity on the device after certain periods of inactivity. You can choose to whitelist GPSLogger which does not bypass doze mode but occasionally provides logging windows in which to work. It will not make a great difference though, doze mode is quite aggressive.

It's using the wrong timezone, can you make it use my timezone?

The standard when logging points is to use UTC. Since this is the standard, it would be wrong to use the the local time zone, the file is considered invalid. Instead, it is the responsibility of the software you use the log file on (Google Earth, GeoSetter, etc.) to adjust for your timezone. Any application that deals with GPX or KML files will have a setting that allows you to specify your own timezone.

I am displaying imperial units but why isn't it logging imperial to the file?

What are the units in which the values are logged?

imperial

The imperial units are only for display purposes and nothing else. However, when logging, the units are always in SI units - meters and seconds.

Where is the file being logged? How do I get to it?

What is the default folder path?

Due to recent restrictions, the default GPSLogger folder is different per device. You can see it on the simple/detailed screens and it may be something like

Example: /storage/emulated/0/Android/data/com.mendhak.gpslogger/files/

Example: /sdcard/Android/data/com.mendhak.gpslogger/files/

The initial part will be different for your device.

If you have a file explorer installed, you can click on the folder paths in the simple/detailed screens.

To copy the GPSLogger files, you can connect your phone to your computer and mount the SD card, then copy straight from the above folder. You can also change the default folder in the app settings.

Finally, note that due to the restrictions introduced in Android KitKat, any files in the default folder will be removed if you uninstall the app.

I've changed the settings, but it's still showing/using the old settings

If the app is logging, and you make changes to the settings, the changes will take effect after the next point is logged. This means that if you've set your interval as 1 hour, you have a long wait ahead of you. If you want the changes to take effect immediately, then stop logging and start it again so that the changes are refreshed.

What do the various settings mean? (Accuracy, retry interval for accuracy, etc)

7b

Time before logging - How long to wait after a point has been logged to try logging again.

Distance filter - When a point becomes available, the app will check to ensure that this much distance exists between the previous and current points. If it isn't this distance, the point is discarded.

Accuracy filter - When a point becomes available, the app will check to ensure that this point has a minimum accuracy specified. If it does not match the specified accuracy, the point is discarded. This is useful if you are inside a building for a while.

Time interval for accuracy - When searching for a point, the app can continue searching for this many seconds until it finds a point that meets the accuracy and distance filter criteria above.

Absolute timeout - When searching for a point and trying over and over, the app will give up when this timeout is reached. This is useful for when you're inside buildings, GPS tends to keep searching and finding nothing.

Keep GPS on between fixes - Normally, the app stops using GPS between points, to save battery. This means when it's time to log the next point, the GPS needs to be 'woken up' again and this takes a little time. Keeping GPS on between fixes causes this 'wake up' time to be reduced.

Don't log if I'm not moving - Some Android phones come with activity recognition; the app can use this to determine if you are not moving and if so, it will not attempt to log a point.

How do I make the app last longer?

Are there any recommended settings?

Mainly, turn wifi off, turn mobile data off, turn background synchronization off, turn bluetooth off.

If you turn mobile data off, you'll probably want to inject aGPS data regularly, there are apps that can do it for you. You can also try going into airplane mode which turns many things off.

When it comes to choosing between location sources - GPS vs network - GPS will be more battery hungry, but has better accuracy; network location is easier on the battery but isn't as accurate.

For time intervals, consider using 60 seconds or more.

The app doesn't log at exactly x seconds as I've specified

It's how the Android OS has implemented its GPS system. When you say you want a point every 60 seconds (for example), that's actually a suggestion rather than an imperative, and so the time interval between GPS points is never guaranteed. GPSLogger has logic that checks the time difference, though, and will make sure that at least 60 seconds have passed before logging again. It is not meant for sub-second logging, as that will require aggressive wakelocks.

Why can't I remove the notification?

notif

As of newer versions of Android, removing the notification will cause the service to be killed. As a result, the notification now needs to stay there. You may have seen a recent increase in the number of apps that need to sit in the notification bar for the same reason - to perform background services without being killed.

There is an option in the app's settings that allows you to remove the notification buttons if you want a smaller notification.

What settings are required for task managers?

Task managers don't like GPSLogger and will frequently kill the service.

Due to the varied nature of the way task managers and task killers work, I simply cannot help or advise with any problems where you have one of these installed, and would advise against it as well

How is this different from other logging apps?

It's meant to be more battery efficient. A lot of other apps, such as MyTracks, usually go with the assumption that you have a data connection available and your routes won't be very long. They use CPU wakelocks and log points extremely frequently with high accuracy. The aim of GPSLogger is to log points and stay quiet.

To put it another way, MyTracks or similar are better suited for runs; GPSLogger is suited for days out, hiking, photography.

How does this integrate with Tasker/Llama or other automation frameworks?

If your automation app can send intents, you can use those intents to control GPSLogger and get it to perform a few actions. For example, in Tasker, create a new action under Misc > Send Intent.

Action: com.mendhak.gpslogger.GpsLoggingService
Extra: immediatestart:true (others below)
Target: Service

These are the extras you can send to GPSLogger:

immediatestart - (true/false) Start logging immediately

immediatestop - (true/false) Stop logging

setnextpointdescription - (text) Sets the annotation text to use for the next point logged

settimebeforelogging - (number) Sets preference for time before logging option

setdistancebeforelogging - (number) Sets preference for distance before logging option

setkeepbetweenfix - (true/false) Sets preference whether to keep GPS on between fixes

setretrytime - (number) Sets preference for retry time

setabsolutetimeout - (number) Sets preference for absolute timeout

setprefercelltower - (true/false) Enables or disables the GPS or celltower listeners

logonce - (true/false) Log a single point, then stop

switchprofile - (text) The name of the profile to switch to

You can also invoke the Start and Stop shortcuts that GPSLogger comes with.

How can I define a preset file with my own values?

Many people actually distribute GPSLogger to colleagues preinstalled on phones, with some preset values.

If you create a file in the default folder or at /sdcard/gpslogger.properties, then GPSLogger will read this file each time it loads and apply those settings to the application.

For example, in the file you can put accuracy_before_logging=42 and that will reset the Accuracy Filter to 42 meters each time the application starts. There are many properties that can be applied and you can glean a full list here.

The most common examples of properties would be log_gpx, log_kml, time_before_logging, opengts_* for OpenGTS settings, smtp_* for email settings.

How can these GPS log files be used?

How do I geotag photos with a GPS log file?

The GPS files produced by this app are generally used for processing other things.

A common use case is to geotag photos. Many cameras, especially SLRs, don't have built-in GPS. After a day (or days) out of photography, you may have hundreds of photos that need to be geotagged so that their locations can appear properly when used elsewhere.

I have had success with:

  • GeoSetter - GUI, comprehensive options with map display
  • ExifTool - command line, lots of options
  • Lightroom's map module - very basic and limited

There are of course other uses of the produced files, these are a few I've seen over the years; it's usually a combination of a log file produced from GPSLogger with a secondary software to process the files.

  • Recording your hike, paragliding, flight
  • View it in Google Earth, Google Maps
  • OpenStreetMap tracing
  • Track fleets of trucks or vehicles
  • Volunteer organisations use it as rescue reports
  • Drivers and salespeople using it as a timesheet
  • Tracking of geocaches, gravestones, repair sites, etc.
  • Tracking friends and family on holiday

Can I use your app in a research project?

This is actually the most commonly asked question! Yes, feel free to use GPSLogger in your research.

The source code is available on Github if you want to dig through it. Feel free to link back to the Github repo for credit/citation.

What are profiles?

profilesdemo

Profiles are basically different settings, grouped under a name. For example you can have a night profile and a trekking profile with different logging frequencies, and switch between the two when you need to.

Tap the profile header and then "Add profile" to create a new profile. The new profile will have the same settings as the one you're currently on. You can then modify a few settings and those should be specific to your new profile.

Conversely, any settings you change in one profile won't automatically be saved in other existing profiles. It is recommended that you do your basic setup in the Default Profile first.

You can delete a profile by long pressing it.

Troubleshooting

Sometimes the app might not behave in an expected way.

You can troubleshoot it yourself by going to General Options and enabling the Write to debug file option.

Next, reproduce the behavior or problem, and this creates a debuglog.txt file in the GPSLogger directory.

You can then grab the file off your phone and have a look through it, or email it to yourself from the same screen (Attach debug log to email). Be sure to turn it off afterwards as this file grows very fast.

How do I download it?

qrcode

Search for GPS Logger for Android in Google Play, or follow this direct link.

You can also download the APK directly here.

Other links

Submit your feature requests on Github.

Please note that I work on GPSLogger in my spare time and I may not always have the time or resources to implement a feature. However, GPSLogger is open source. You are encouraged to contribute or get someone else to contribute a feature.

Source code

Contribute translations on Crowdin

Licensed under GPLv2

Read the privacy policy

Open source libraries used

Donate Paypal

Donate Bitcoin

More screenshots

General settings

6

Logging details

7

7a

7b

Auto send

8

FTP Setup

9

Auto Email Setup

10

Open GTS Setup

11

OpenStreetMap setup

13