# OpenTracks logo OpenTracks: a sport tracker _OpenTracks_ is a sport tracking application that completely respects your privacy. [![Awesome Humane Tech](https://codeberg.org/teaserbot-labs/delightful-humane-design/raw/branch/main/humane-tech-badge.svg)](https://delightful.club/delightful-humane-design/#health)
Free (F-Droid) Free (Nightly for F-Droid) Donations
Get it on F-Droid Nightly builds (for F-Droid client) Donate using Liberapay
OpenTracks version published on F-Droid Get it on Google Play
Translations are hosted on hosted.weblate.org. Translation status ## Screenshots
## Features * __Tracking:__ track your sport and outdoor activities * __Voice announcements__ * __Photos and Markers:__ mark interesting locations while tracking * __Export:__ * export tracks either as [KMZ 2.3](https://docs.opengeospatial.org/is/12-007r2/12-007r2.html) (incl. photos), [KML 2.3](https://docs.opengeospatial.org/is/12-007r2/12-007r2.html), or [GPX 1.1](https://www.topografix.com/GPX/1/1/) * export automatically after each recording (e.g., to sync via [Nextcloud](https://nextcloud.com/)) * avoid duplication: each exported file contain a random unique identifier (i.e., `opentracks:trackid`) * __Altitude:__ * gain/loss via barometric sensor (if present) * 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](README_TESTED_SENSORS.md) ### Gadgetbridge integration OpenTracks can be used with [Gadgetbridge](https://www.gadgetbridge.org/): * 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 permission:__ * _ACCESS_FINE_LOCATION_: required to use the GPS. ### Public API OpenTracks includes an API for starting/stopping recording by another installed application (e.g., [Automate](https://llamalab.com/automate/), [Tasker](https://tasker.joaoapps.com), or [Easer](https://github.com/renyuneyun/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` `Class`: * **Start a recording:** `de.dennisguse.opentracks.publicapi.StartRecording` * **Stop a recording:** `de.dennisguse.opentracks.publicapi.StopRecording` For testing via adb: `adb shell am start -e someParameter someValue -n "package/class"` `StartRecording` supports the following parameters: * Set track data: `TRACK_NAME`, `TRACK_DESCRIPTION`, `TRACK_CATEGORY`, and `TRACK_ICON` (non-localized identifier see [/src/main/java/de/dennisguse/opentracks/util/TrackIconUtils.java#L38](/src/main/java/de/dennisguse/opentracks/util/TrackIconUtils.java#L38)). NOTE: if `TRACK_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` and `STATS_TARGET_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](https://www.topografix.com/GPX/1/1/) | [KML 2.3](https://docs.opengeospatial.org/is/12-007r2/12-007r2.html) | [KMZ 2.3](https://docs.opengeospatial.org/is/12-007r2/12-007r2.html) | |------------------------------------------------------|------------------------------------------------|----------------------------------------------------------------------|----------------------------------------------------------------------| | [OpenLayers 7.1.0](https://openlayers.org/) | ? | [no](https://github.com/openlayers/openlayers/issues/14104) | [no](https://github.com/openlayers/openlayers/issues/14104) | | [Golden Cheetah 3.5](https://www.goldencheetah.org/) | ? | [no](https://github.com/GoldenCheetah/GoldenCheetah/issues/4271) | [no](https://github.com/GoldenCheetah/GoldenCheetah/issues/4271) | | [GpxPod](https://apps.nextcloud.com/apps/gpxpod) | ? | ? | ? | | [OsmAnd](https://github.com/osmandapp/OsmAnd) | ? | [no](https://github.com/osmandapp/OsmAnd/issues/15271) | [no](https://github.com/osmandapp/OsmAnd/issues/15271) | | [FitTrackee](https://github.com/SamR1/FitTrackee) | yes | n/a | n/a | ## 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](https://github.com/OpenTracksApp/OSMDashboard), which presents an OpenStreetMap map (showing the current track, incl. updates). The Dashboard API is also used by [Gadgetbridge](https://codeberg.org/Freeyourgadget/Gadgetbridge/) for displaying live track statistics on supported wearables. Alternatively, recorded tracks can be shared as KMZ/GPX with installed applications ( e.g., [OsmAnd](https://play.google.com/store/apps/details?id=net.osmand)). However, this is rather slow and does not provide updates while recording. The developer documentation is in [README_API.md](README_API.md). ## Project history _OpenTracks_ is based upon Google _My Tracks app_ ([code](https://code.google.com/archive/p/mytracks/)). _My Tracks_ was initially released by Google in 2010 as [open-source software](http://google-latlong.blogspot.fr/2010/05/code-for-my-tracks-is-now-yours.html). In 2016, [Google decided to discontinue](https://support.google.com/maps/answer/6333516) _My Tracks_ and stopped distributing it via the Google Play store in April 2016. Then [Plonk42](https://github.com/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](https://github.com/Plonk42/mytracks). 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_: * [Wikipedia page](https://en.wikipedia.org/wiki/MyTracks) * [Google code archive](https://code.google.com/archive/p/mytracks/)