OpenTracks
A sensor-first fork of OpenTracks. Record sport activities with Bluetooth sensors taking priority over GPS, alongside customized recording controls and audio behavior.
| Project | Platform | Main change | License |
|---|---|---|---|
| Personal fork | Android 8.0+ | Bluetooth sensor priority | Apache 2.0 |
Download fork APKs · Build locally · What changed · Upstream documentation
Fork identity — This repository is based on OpenTracksApp/OpenTracks. Upstream store downloads do not include these modifications.
Browse all sections
Fork purpose
Use hardware sensors as the primary source of cadence, speed, and distance, with corresponding changes to recording controls and audio behavior.
Changes from upstream
| Area | Changes maintained in this fork |
|---|---|
| Recording | Bluetooth sensor data takes priority over GPS in the modified recording flow. |
| Interface | Expanded sensor settings and customized recording layouts. |
| Audio | Media controls in the statistics view; voice announcement and audio-focus changes. |
| App identity | Fork-specific application IDs, including de.dennisguse.opentracks.fork and its variants. |
Requirements
| Use | Requirements |
|---|---|
| Run the app | Android 8.0 / API 26 or later, as configured in build.gradle. |
| Build the app | Android SDK platform 37 and the Gradle wrapper. The daemon toolchain requests JetBrains JDK 21 in gradle/gradle-daemon-jvm.properties. |
Getting started
Install a build
Download APKs from this fork's Gitea releases.
Build from source
From the repository root:
./gradlew assembleIrreproducibleDebug
Output: build/outputs/apk/. The debug build is intended for development.
Configuration
Configure Bluetooth sensors and recording options in the app settings. Verify the selected sensors before starting a recording.
The inherited public API examples use upstream package names. When targeting this fork, use the application ID of the installed variant from build.gradle; activity class names retain the de.dennisguse.opentracks namespace.
Usage
Start a recording after pairing the desired sensors. See the inherited feature and usage reference for tracking, export formats, dashboards, backup, and supported sensor types.
The screenshots are inherited documentation assets and may differ from the modified interface.
Development
Run the checks configured by Gitea Actions:
./gradlew lint
./gradlew testNightlyDebugUnitTest --stacktrace
CI configuration defines build and prerelease publication behavior. Check the workflow files for toolchain and runner requirements.
Upstream maintenance
The upstream sync workflow runs daily and on manual dispatch. It merges main from the configured Gitea upstream mirror into this fork's main. Resolve sync failures before retrying.
After an upstream merge, review sensor priority, recording layouts, announcements, and application IDs. Keep fork-specific instructions in this README. Refresh README.upstream.md separately from the merged upstream documentation, retaining upstream attribution and checking relative links.
Documentation
| Reference | What you will find |
|---|---|
| Inherited upstream README | Original features, screenshots, export formats, and project history. Retained from this checkout; local fork notice removed and malformed links corrected. |
| Dashboard API | Integration with external dashboards. |
| Tested sensors | Documented sensor compatibility. |
| Upstream release instructions | Inherited release process; review before applying it to this fork. |
| README style guide | Shared documentation structure and presentation rules. |
Credits
Development of the changes maintained in this fork was carried out to a significant extent with assistance from AI coding agents, in collaboration with the repository owner.
OpenTracks is developed by its upstream contributors and derives from Google My Tracks. See the project history and upstream contribution guidelines. Report fork-specific behavior in this fork's issue tracker.
License
See LICENSE for the inherited Apache License 2.0 terms and notices.