Awesome
<img src="drawable-svg/LOGO.svg" alt="OpenTracks logo" height="40"></img> OpenTracks: a sport tracker
OpenTracks is a sport tracking application that completely respects your privacy.
<table> <tr> <th>Free (F-Droid)</th> <th>Free (Nightly for F-Droid)</th> <th>Donations</th> </tr> <tr> <td align="center"> <a href="https://f-droid.org/packages/de.dennisguse.opentracks"> <img alt="Get it on F-Droid" src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png" height="60" align="middle"> </a> </td> <td align="center"> <a href="https://fdroid.storchp.de/fdroid/repo?fingerprint=99985A7E73DCB0B16C9BDDCE7A0B4996F88068AE7C771ED53E217E69CD1FF196"> <img alt="Nightly builds (for F-Droid client)" src="https://opentracksapp.com/static/img/fdroid.storchp.de.png" height="90" align="middle"> </a> </td> <td align="center"> <a href="https://liberapay.com/OpenTracks/donate"> <img alt="Donate using Liberapay" src="https://liberapay.com/assets/widgets/donate.svg" height="45" align="middle"> </a> </td> </tr> <tr> <td align="center"> <img alt="OpenTracks version published on F-Droid" src="https://img.shields.io/f-droid/v/de.dennisguse.opentracks.svg" align="middle" > </td> <td></td> <td align="center"> <a href="https://play.google.com/store/apps/details?id=de.dennisguse.opentracks.playstore"> <img alt="Get it on Google Play" src="https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png" height="60" align="middle"> </a> </td> </tr> </table>Translations are hosted on <a href="https://hosted.weblate.org/engage/opentracks/"> hosted.weblate.org</a>. <a href="https://hosted.weblate.org/engage/opentracks/"> <img src="https://hosted.weblate.org/widgets/opentracks/-/horizontal-auto.svg" alt="Translation status" /> </a>
Screenshots
<div> <img width="23%" src="fastlane/metadata/android/en-US/images/phoneScreenshots/screenshot1.png"> <img width="23%" src="fastlane/metadata/android/en-US/images/phoneScreenshots/screenshot2.png"> <img width="23%" src="fastlane/metadata/android/en-US/images/phoneScreenshots/screenshot3.png"> <img width="23%" src="fastlane/metadata/android/en-US/images/phoneScreenshots/screenshot4.png"> </div> <div> <img width="23%" src="fastlane/metadata/android/en-US/images/phoneScreenshots/screenshot5.png"> <img width="23%" src="fastlane/metadata/android/en-US/images/phoneScreenshots/screenshot6.png"> <img width="23%" src="fastlane/metadata/android/en-US/images/phoneScreenshots/screenshot7.png"> <img width="23%" src="fastlane/metadata/android/en-US/images/phoneScreenshots/screenshot8.png"> </div>Features
-
Tracking: track your sport and outdoor activities
-
Voice announcements
-
Photos and Markers: mark interesting locations while tracking
-
Export:
-
Altitude:
- gain/loss via barometric sensor (internal if present or via Bluetooth's Environmental Sensing Service)
- shown in EGM2008 (above mean sea level); exported as WGS84
-
Bluetooth LE sensors:
- heart rate
- cycling: speed and distance
- cycling: cadence
- cycling: power meter
- running: speed and cadence
- support for BLE sensor training only (i.e., without GPS) for indoor training
An overview of tested sensors: README_TESTED_SENSORS.md
Gadgetbridge integration
OpenTracks can be used with Gadgetbridge:
- shows statistics via notification on smart watches (requires Gadgetbridge 0.56.1 or later), and
- Gadgetbridge's GPX exporter generates
opentracks:trackid
to avoid duplication (Gadgetbridge 0.53.0 or later).
Privacy
- No Internet access: Internet is not used
- No advertising
- No in-app analytics
- No use of Google Play Services
Only required permissions:
- ACCESS_FINE_LOCATION: required to use the GPS.
- ACCESS_BACKGROUND_LOCATION: required to start recording with GPS while phone is in standby. (e.g. when triggered by Public API from an external device)
Public API
OpenTracks includes an API for starting/stopping recording by another installed application (e.g., Automate, Tasker, or Easer). The API can be invoked by sending an explicit Intent to start an activity.
Package
(depends on the variant installed):
- F-Droid:
de.dennisguse.opentracks
- GooglePlay:
de.dennisguse.opentracks.playStore
- Debug:
de.dennisguse.opentracks.debug
- Nightly:
de.dennisguse.opentracks.nightly
Classes
:
- Start a recording:
de.dennisguse.opentracks.publicapi.StartRecording
- Set track data:
TRACK_NAME
,TRACK_DESCRIPTION
,TRACK_CATEGORY
, andTRACK_ICON
( non-localized identifier see /src/main/java/de/dennisguse/opentracks/util/TrackIconUtils.java#L38). NOTE: ifTRACK_ICON
is not present,TRACK_CATEGORY
will be used to determine the icon ( localized). - Send recorded data to another application via Dashboard API:
STATS_TARGET_PACKAGE
andSTATS_TARGET_CLASS
- Set track data:
- Stop a recording:
de.dennisguse.opentracks.publicapi.StopRecording
- Create a marker:
de.dennisguse.opentracks.publicapi.CreateMarker
For testing via adb: adb shell am start -e someParameter someValue -n "package/class"
The Public API is disabled by default to protect the user's privacy, but it can easily be enabled in the settings.
File formats compatibility with open-source software
GPX 1.1 | KML 2.3 | KMZ 2.3 | |
---|---|---|---|
OpenLayers 7.1.0 | ? | no | no |
Golden Cheetah 3.5 | ? | no | no |
GpxPod | ? | ? | ? |
OsmAnd | ? | no | no |
FitTrackee | yes | n/a | n/a |
SportsTracker | yes, single tracks only | no | no |
ExifTool | yes | no | no |
Dashboard API (incl. map)
As of v3.3.1, OpenTracks supports custom dashboards for displaying previously recorded and live tracks.
The reference implementation is OSMDashboard, which presents an OpenStreetMap map (showing the current track, incl. updates). The Dashboard API is also used by Gadgetbridge for displaying live track statistics on supported wearables.
Alternatively, recorded tracks can be shared as KMZ/GPX with installed applications ( e.g., OsmAnd). However, this is rather slow and does not provide updates while recording.
The developer documentation is in README_API.md.
Project history
OpenTracks is based upon Google My Tracks app (code). My Tracks was initially released by Google in 2010 as open-source software. In 2016, Google decided to discontinue My Tracks and stopped distributing it via the Google Play store in April 2016. Then Plonk42 conducted some maintenance work until 2016, so My Tracks could still be used (based upon version Google's MyTracks version 2.0.6). Plonk42's version is available here. In 2019, OpenTracks was forked from Plonk42's My Tracks and major rework was conducted.
Rework of OpenTracks included:
- removing Google's analytics code,
- removing integration into Google Drive,
- removing Google Maps integration,
- removing Google Earth integration,
- removing use of Google Play service,
- removing calorie estimation and activity estimation,
- removing support for ANT+ and Classic Bluetooth,
- adding support for Bluetooth LE heart rate sensors,
- removing Protobuf (store sensor data in SQLite columns directly), and
- removing Android Service API for other apps.
Artwork, logos and user interface remained more or less unchanged.
More information about Google My Tracks: