by bfabiszewski

bfabiszewski / ulogger-android

μlogger • android application for real-time collection and publishing of geolocation data

150 Stars 39 Forks Last release: 29 days ago (3.3) GNU General Public License v3.0 221 Commits 22 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

ulogger_logo_small μlogger Build Status Coverity Status

μlogger [micro-logger] is an android application for continuous logging of location coordinates, designed to record hiking, biking tracks and other outdoor activities. Application works in background. Track points are saved automatically at chosen intervals or manually and may be uploaded to dedicated server in real time. This client works with μlogger web server. Together they make a complete self owned and controlled client–server solution.


  • meant to be simple and small (μ)
  • low memory and battery impact
  • focus on privacy, doesn't use Google Play services, logs to self-owned server
  • uses GPS or network based location data
  • synchronizes location with web server in real time, in case of problems keeps retrying
  • alternatively works in offline mode; positions may be uploaded to the servers manually
  • allows adding waypoints with attached images and comments (required μlogger server version 1.0+ for synchronization)
  • configurable tracking settings
  • export to GPX format
  • automation


main waypoint settings


Download from f-droid


  • μlogger's current status is shown by two leds, one for location tracking and one for web synchronization:


tracking synchronization
status green on, recently updated synchronized
status yellow on, long time since last update synchronization delay
status red off synchronization error

  • clicking on current track's name will show track statistics


  • μlogger may accept commands from other applications for starting or stopping its operations. To make it work you must explicitly enable this functionality in app settings ("Allow external commands" switch).
  • commands are sent as
    with following
    • target package:
    • target class:
    • action:
    • extra:
      "command": [command name]
      , where command name is one of:
    • "start logger"
      for starting position logging
    • "start new logger"
      for creating a New Track and starting position logging to it
    • "stop logger"
      for stopping position logging
    • "start upload"
      for starting track data upload to server (in case live tracking is off)
  • third party examples:
    • Automate (LlamaLab) – Send broadcast block with
      Receiver Class
      fields as above and
      field eg.
      {"command": "start logger"}
    • Tasker (joaomgcd) – System → Send intent. Fields
      as above and
      field eg.
      command:start logger
  • command line:
    am broadcast -a net.fabiszewski.ulogger.intent.action.COMMAND -e "command" "start logger" net.fabiszewski.ulogger net.fabiszewski.ulogger.ExternalCommandReceiver

App settings guidelines

Finding the optimized settings for your practice can be a bit complex and may require you to do a lot of testing. As a first approach, here are some parameters that offer a good compromise between precision and the number of points acquired by your server.

| Activity | Time | Distance | Accuracy | Provider | |---|---|---|---|---| | hiking/cycling | 30 seconds | 100m | 100m | GPS + Network | | motorbiking | 1 minute | 500m | 50m | GPS + Network |

They may not be optimal, depending on your feelings, and you will have to adapt them.

Contribute translations

Translate with transifex


Donate paypal
Donate bitcoin


Donate ethereum

Donate dash


License: GPL 3.0

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.