├── .github
├── FUNDING.yml
├── dependabot.yml
└── workflows
│ ├── android.yml
│ └── lint.yml
├── .gitignore
├── LICENSE
├── README.md
├── assets
├── COMPASS.svg
├── Featuregrafic.xcf
├── LOGO.svg
├── LOGO.svg.png
├── LOGO2.svg
├── NAV_ICON.svg
├── logo_background.svg
├── logo_background_debug.svg
├── logo_background_nightly.svg
├── logo_background_offline.svg
├── logo_foreground.svg
└── logo_monochrome.svg
├── build.gradle.kts
├── dependabot.yml
├── fastlane
└── metadata
│ └── android
│ ├── de-DE
│ └── changelogs
│ │ ├── 1.txt
│ │ ├── 10.txt
│ │ ├── 11.txt
│ │ ├── 12.txt
│ │ ├── 13.txt
│ │ ├── 14.txt
│ │ ├── 15.txt
│ │ ├── 16.txt
│ │ ├── 17.txt
│ │ ├── 18.txt
│ │ ├── 19.txt
│ │ ├── 2.txt
│ │ ├── 20.txt
│ │ ├── 21.txt
│ │ ├── 22.txt
│ │ ├── 23.txt
│ │ ├── 24.txt
│ │ ├── 25.txt
│ │ ├── 26.txt
│ │ ├── 27.txt
│ │ ├── 28.txt
│ │ ├── 29.txt
│ │ ├── 3.txt
│ │ ├── 30.txt
│ │ ├── 31.txt
│ │ ├── 32.txt
│ │ ├── 33.txt
│ │ ├── 34.txt
│ │ ├── 35.txt
│ │ ├── 36.txt
│ │ ├── 37.txt
│ │ ├── 38.txt
│ │ ├── 39.txt
│ │ ├── 4.txt
│ │ ├── 40.txt
│ │ ├── 41.txt
│ │ ├── 42.txt
│ │ ├── 43.txt
│ │ ├── 44.txt
│ │ ├── 45.txt
│ │ ├── 46.txt
│ │ ├── 47.txt
│ │ ├── 48.txt
│ │ ├── 49.txt
│ │ ├── 5.txt
│ │ ├── 50.txt
│ │ ├── 6.txt
│ │ ├── 7.txt
│ │ ├── 8.txt
│ │ └── 9.txt
│ └── en-US
│ ├── changelogs
│ ├── 1.txt
│ ├── 10.txt
│ ├── 11.txt
│ ├── 12.txt
│ ├── 13.txt
│ ├── 14.txt
│ ├── 15.txt
│ ├── 16.txt
│ ├── 17.txt
│ ├── 18.txt
│ ├── 19.txt
│ ├── 2.txt
│ ├── 20.txt
│ ├── 21.txt
│ ├── 22.txt
│ ├── 23.txt
│ ├── 24.txt
│ ├── 25.txt
│ ├── 26.txt
│ ├── 27.txt
│ ├── 28.txt
│ ├── 29.txt
│ ├── 3.txt
│ ├── 30.txt
│ ├── 31.txt
│ ├── 32.txt
│ ├── 33.txt
│ ├── 34.txt
│ ├── 35.txt
│ ├── 36.txt
│ ├── 37.txt
│ ├── 38.txt
│ ├── 39.txt
│ ├── 4.txt
│ ├── 40.txt
│ ├── 41.txt
│ ├── 42.txt
│ ├── 43.txt
│ ├── 44.txt
│ ├── 45.txt
│ ├── 46.txt
│ ├── 47.txt
│ ├── 48.txt
│ ├── 49.txt
│ ├── 5.txt
│ ├── 50.txt
│ ├── 6.txt
│ ├── 7.txt
│ ├── 8.txt
│ └── 9.txt
│ └── images
│ ├── featuregrafic.png
│ ├── icon.png
│ └── phoneScreenshots
│ ├── 1-info-view.png
│ ├── 2-single-track-map-view.png
│ ├── 3-multi-track-map-view.png
│ ├── 4-simple-theme-map-view.png
│ ├── 5-map-download-view.png
│ ├── 6-map-selection-view.png
│ └── 7-map-3d.png
├── gradle.properties
├── gradle
├── libs.versions.toml
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── proguard-rules.pro
├── release.sh
├── settings.gradle.kts
└── src
├── full
├── AndroidManifest.xml
└── fastlane
│ └── metadata
│ └── android
│ ├── ar
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── cs-CZ
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── de-DE
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── en-US
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── es-ES
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── fr-FR
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── ga
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── gl
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── hu-HU
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── it
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── lt
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── nb-NO
│ ├── short_description.txt
│ └── title.txt
│ ├── pl-PL
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── ro
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── sl
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── sv-SE
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── tr
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ └── zh-CN
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
├── fullDebug
├── ic_launcher-playstore.png
└── res
│ ├── drawable-v24
│ └── ic_launcher_foreground.xml
│ ├── drawable
│ ├── ic_launcher_background.xml
│ └── ic_launcher_foreground.xml
│ ├── mipmap-anydpi-v26
│ ├── ic_launcher.xml
│ └── ic_launcher_round.xml
│ ├── mipmap-hdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ ├── mipmap-mdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ ├── mipmap-xhdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ ├── mipmap-xxhdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ ├── mipmap-xxxhdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ └── values
│ └── strings.xml
├── main
├── AndroidManifest.xml
├── assets
│ └── vtm
│ │ └── vtmstyle.xml
├── ic_launcher-playstore.png
├── kotlin
│ └── de
│ │ └── storchp
│ │ └── opentracks
│ │ └── osmplugin
│ │ ├── BaseActivity.kt
│ │ ├── MainActivity.kt
│ │ ├── ShowErrorActivity.kt
│ │ ├── Startup.kt
│ │ ├── download
│ │ ├── DownloadActivity.kt
│ │ ├── DownloadItemType.kt
│ │ ├── DownloadMapItem.kt
│ │ ├── DownloadMapItemAdapter.kt
│ │ └── DownloadMapSelectionActivity.kt
│ │ ├── map
│ │ ├── MapActivity.kt
│ │ ├── MapData.kt
│ │ ├── MapMode.kt
│ │ ├── MapUtils.kt
│ │ ├── MovementDirection.kt
│ │ ├── SpeedColors.kt
│ │ ├── TrackColorMode.kt
│ │ ├── model
│ │ │ ├── Track.kt
│ │ │ ├── TrackStatistics.kt
│ │ │ ├── Trackpoint.kt
│ │ │ ├── TrackpointsBySegments.kt
│ │ │ ├── TrackpointsDebug.kt
│ │ │ └── Waypoint.kt
│ │ └── reader
│ │ │ ├── APIConstants.kt
│ │ │ ├── DashboardReader.kt
│ │ │ ├── GeoUriReader.kt
│ │ │ ├── GpxParser.kt
│ │ │ ├── GpxReader.kt
│ │ │ ├── MapDataReader.kt
│ │ │ ├── TrackReader.kt
│ │ │ ├── TrackpointReader.kt
│ │ │ └── WaypointReader.kt
│ │ ├── settings
│ │ ├── DirectoryChooserActivity.kt
│ │ ├── FileItem.kt
│ │ ├── LocalePreference.kt
│ │ ├── MapItemAdapter.kt
│ │ ├── MapSelectionActivity.kt
│ │ ├── SettingsActivity.kt
│ │ ├── ThemeItemAdapter.kt
│ │ └── ThemeSelectionActivity.kt
│ │ └── utils
│ │ ├── ExceptionHandler.kt
│ │ ├── FileUtil.kt
│ │ ├── PreferencesUtils.kt
│ │ ├── StatisticElement.kt
│ │ ├── StringUtils.kt
│ │ └── UnitConversions.kt
└── res
│ ├── drawable
│ ├── baseline_folder_24.xml
│ ├── baseline_map_24.xml
│ ├── baseline_marker_end_34.xml
│ ├── baseline_marker_start_34.xml
│ ├── baseline_settings_24.xml
│ ├── baseline_style_24.xml
│ ├── ic_baseline_fullscreen_48.xml
│ ├── ic_baseline_fullscreen_exit_48.xml
│ ├── ic_baseline_share_24.xml
│ ├── ic_bug_report_24.xml
│ ├── ic_compass.xml
│ ├── ic_launcher_background.xml
│ ├── ic_launcher_foreground.xml
│ ├── ic_launcher_monochrome.xml
│ ├── ic_logo_color_24dp.xml
│ ├── ic_marker_orange_pushpin_modern.xml
│ └── ic_marker_pause_34.xml
│ ├── layout
│ ├── activity_download.xml
│ ├── activity_download_map_selection.xml
│ ├── activity_main.xml
│ ├── activity_map_selection.xml
│ ├── activity_maps.xml
│ ├── activity_settings.xml
│ ├── activity_show_error.xml
│ ├── activity_theme_selection.xml
│ ├── download_item.xml
│ ├── map.xml
│ ├── map_item.xml
│ ├── theme_item.xml
│ ├── toolbar.xml
│ └── view_preference_switch.xml
│ ├── menu
│ └── show_error.xml
│ ├── mipmap-anydpi-v26
│ ├── ic_launcher.xml
│ └── ic_launcher_round.xml
│ ├── mipmap-hdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ ├── mipmap-mdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ ├── mipmap-xhdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ ├── mipmap-xxhdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ ├── mipmap-xxxhdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ ├── resources.properties
│ ├── values-ar
│ └── strings.xml
│ ├── values-ca
│ └── strings.xml
│ ├── values-co
│ └── strings.xml
│ ├── values-cs
│ └── strings.xml
│ ├── values-da
│ └── strings.xml
│ ├── values-de
│ └── strings.xml
│ ├── values-es
│ └── strings.xml
│ ├── values-fr
│ └── strings.xml
│ ├── values-gl
│ └── strings.xml
│ ├── values-hr
│ └── strings.xml
│ ├── values-hu
│ └── strings.xml
│ ├── values-id
│ └── strings.xml
│ ├── values-is
│ └── strings.xml
│ ├── values-it
│ └── strings.xml
│ ├── values-lt
│ └── strings.xml
│ ├── values-lv
│ └── strings.xml
│ ├── values-nb-rNO
│ └── strings.xml
│ ├── values-nl
│ └── strings.xml
│ ├── values-pl
│ └── strings.xml
│ ├── values-pt-rBR
│ └── strings.xml
│ ├── values-pt
│ └── strings.xml
│ ├── values-ro
│ └── strings.xml
│ ├── values-si
│ └── strings.xml
│ ├── values-sk
│ └── strings.xml
│ ├── values-sl
│ └── strings.xml
│ ├── values-sq
│ └── strings.xml
│ ├── values-sv
│ └── strings.xml
│ ├── values-tr
│ └── strings.xml
│ ├── values-uk
│ └── strings.xml
│ ├── values-zh-rCN
│ └── strings.xml
│ ├── values-zh-rTW
│ └── strings.xml
│ ├── values
│ ├── arrays.xml
│ ├── bools.xml
│ ├── colors.xml
│ ├── dimens.xml
│ ├── integers.xml
│ ├── non-translatable-strings.xml
│ ├── strings.xml
│ └── styles.xml
│ └── xml
│ ├── backup_descriptor.xml
│ ├── data_extraction_rules.xml
│ ├── file_paths.xml
│ ├── network_security_config.xml
│ └── root_preferences.xml
├── nightly
├── ic_launcher-playstore.png
└── res
│ ├── drawable-v24
│ └── ic_launcher_foreground.xml
│ ├── drawable
│ └── ic_launcher_background.xml
│ ├── mipmap-anydpi-v26
│ ├── ic_launcher.xml
│ └── ic_launcher_round.xml
│ ├── mipmap-hdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ ├── mipmap-mdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ ├── mipmap-xhdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ ├── mipmap-xxhdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ ├── mipmap-xxxhdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ └── values
│ └── strings.xml
├── offline
├── AndroidManifest.xml
├── fastlane
│ └── metadata
│ │ └── android
│ │ ├── ar
│ │ ├── short_description.txt
│ │ └── title.txt
│ │ ├── co
│ │ ├── short_description.txt
│ │ └── title.txt
│ │ ├── cs-CZ
│ │ ├── short_description.txt
│ │ └── title.txt
│ │ ├── de-DE
│ │ ├── short_description.txt
│ │ └── title.txt
│ │ ├── en-US
│ │ ├── images
│ │ │ └── icon.png
│ │ ├── short_description.txt
│ │ └── title.txt
│ │ └── sv-SE
│ │ ├── short_description.txt
│ │ └── title.txt
├── ic_launcher-playstore.png
└── res
│ ├── drawable-v24
│ └── ic_launcher_foreground.xml
│ ├── drawable
│ └── ic_launcher_background.xml
│ ├── mipmap-anydpi-v26
│ ├── ic_launcher.xml
│ └── ic_launcher_round.xml
│ ├── mipmap-hdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ ├── mipmap-mdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ ├── mipmap-xhdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ ├── mipmap-xxhdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ ├── mipmap-xxxhdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ └── values
│ └── strings.xml
└── test
├── java
└── android
│ └── util
│ └── Log.java
├── kotlin
└── de
│ └── storchp
│ └── opentracks
│ └── osmplugin
│ ├── map
│ ├── model
│ │ └── TrackStatisticsTest.kt
│ └── reader
│ │ ├── GeoUriReaderTest.kt
│ │ ├── GpxParserTest.kt
│ │ ├── TrackReaderTest.kt
│ │ ├── TrackpointReaderTest.kt
│ │ └── WaypointReaderTest.kt
│ └── utils
│ └── MapUtilsTest.kt
└── resources
├── aat.gpx
├── route-noelevation.gpx
├── route.gpx
└── track.gpx
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | liberapay: OpenTracks
4 | github: [rgmf, pstorch, dennisguse]
5 |
--------------------------------------------------------------------------------
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | version: 2
2 | updates:
3 | - package-ecosystem: "gradle"
4 | directory: "/"
5 | schedule:
6 | interval: "daily"
7 |
--------------------------------------------------------------------------------
/.github/workflows/android.yml:
--------------------------------------------------------------------------------
1 | name: Android CI
2 |
3 | on:
4 | push:
5 | branches: [ "main" ]
6 | pull_request:
7 | branches: [ "main" ]
8 |
9 | jobs:
10 | build:
11 |
12 | runs-on: ubuntu-latest
13 |
14 | steps:
15 | - uses: actions/checkout@v3
16 | - name: set up JDK 17
17 | uses: actions/setup-java@v3
18 | with:
19 | java-version: '17'
20 | distribution: 'temurin'
21 | cache: gradle
22 |
23 | - name: Grant execute permission for gradlew
24 | run: chmod +x gradlew
25 | - name: Build with Gradle
26 | run: ./gradlew testFullDebug
27 |
--------------------------------------------------------------------------------
/.github/workflows/lint.yml:
--------------------------------------------------------------------------------
1 | name: Linting
2 |
3 | on:
4 | push:
5 | pull_request_target:
6 |
7 | jobs:
8 | analyse:
9 | name: Analyse
10 | runs-on: ubuntu-latest
11 |
12 | steps:
13 | - name: Checkout repository
14 | uses: actions/checkout@v3
15 |
16 | - uses: actions/setup-java@v3
17 | with:
18 | distribution: 'zulu'
19 | java-version: '17'
20 |
21 | - run: ./gradlew lint
22 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | local.properties
4 | .idea/
5 | !.idea/inspectionProfiles/Project_Default.xml
6 | .DS_Store
7 | build/
8 | captures/
9 | .externalNativeBuild
10 | .cxx
11 | .project
12 | .settings/
13 | release/
14 |
--------------------------------------------------------------------------------
/assets/COMPASS.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/assets/Featuregrafic.xcf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/assets/Featuregrafic.xcf
--------------------------------------------------------------------------------
/assets/LOGO.svg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/assets/LOGO.svg.png
--------------------------------------------------------------------------------
/assets/logo_foreground.svg:
--------------------------------------------------------------------------------
1 |
2 |
92 |
--------------------------------------------------------------------------------
/dependabot.yml:
--------------------------------------------------------------------------------
1 | groups:
2 | update-types:
3 | - "minor"
4 | - "patch"
5 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/1.txt:
--------------------------------------------------------------------------------
1 | - Ein erstes Release, was Tracks auf einer Karte von OpenStreetMaps anzeigen kann
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/10.txt:
--------------------------------------------------------------------------------
1 | - Problem mit Zugriff auf das Kartenverzeichnis nach Neustart behoben
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/11.txt:
--------------------------------------------------------------------------------
1 | - Track-Glättung nach Douglas-Pecker Algorithmus
2 | - Track-Aufteilung nach Segmenten (an Pause TrackPoints)
3 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/12.txt:
--------------------------------------------------------------------------------
1 | - Wegpunkt-Markierungen werden nun auf der Karte angezeigt und können in OpenTracks angezeigt werden
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/13.txt:
--------------------------------------------------------------------------------
1 | - Bild in Bild Modus für laufende Trackaufzeichnungen
2 | - Vollbildmodus von OpenTracks hinzugefügt
3 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/14.txt:
--------------------------------------------------------------------------------
1 | - Richtungspfeil als Endemarkierung
2 | - Kartenrotation als Kompass oder in Bewegungsrichtung
3 | - Kompass-Glättung
4 | - Vollbildsteuerung über die Karte
5 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/15.txt:
--------------------------------------------------------------------------------
1 | - Dummyversion für F-Droid als Fix für Target-SDK 30
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/16.txt:
--------------------------------------------------------------------------------
1 | - Upgrade der Mapsforge Bibliothek auf Version 0.14.0
2 | - Multihread Map Rendering
3 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/17.txt:
--------------------------------------------------------------------------------
1 | - Aufteilung in vollwertige und reine offline Variante
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/18.txt:
--------------------------------------------------------------------------------
1 | - Speicheroptimierung
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/19.txt:
--------------------------------------------------------------------------------
1 | - Konfigurierbare Strichstärke für die Tracks
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/2.txt:
--------------------------------------------------------------------------------
1 | - fix: beachte Track Segmente mit Pausen
2 | - new: setze Zoom-Level, so dass gesamter Track sichtbar ist
3 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/20.txt:
--------------------------------------------------------------------------------
1 | - Animierte Kartenbewegung zu neuen Trackpoints
2 | - Aktualisierte und erweiterte Übersetzungen
3 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/21.txt:
--------------------------------------------------------------------------------
1 | - Update von Abhängigkeiten
2 | - Neue Übersetzungen für Tschechisch, Norwegisch und Portugiesisch (brasilianisch)
3 | - Support für die neue OpenTracks API v2
4 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/22.txt:
--------------------------------------------------------------------------------
1 | - Neue Übersetzungen
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/23.txt:
--------------------------------------------------------------------------------
1 | - Aktualisierte Abhängigkeiten
2 | - Neue Übersetzung Sinhala
3 | - Neue Übersetzung Ukrainisch
4 | - Neue Übersetzung Rumänisch
5 | - Neue Übersetzung Slowenisch
6 | - Neue Übersetzung Slowakisch
7 | - Neue Übersetzung Lettisch
8 | - Unterstützung für Map-Theme-Dateien im .zip Format hinzugefügt
9 | - Unterstützung für Map- und Theme-Downloads von Mapsforge, Freizeitkarte Android und OpenAndroMaps über die Download Links der Webseiten
10 | - Absturz behoben, wenn kein Dateimanager verfügbar ist
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/24.txt:
--------------------------------------------------------------------------------
1 | - Upgrade target API 31
2 | - Upgrade Gradle
3 | - Neue Übersetzungen von Mondstern
4 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/25.txt:
--------------------------------------------------------------------------------
1 | - Aktualisierte Übersetzung für Norwegisch Bokmål
2 | - Gradle aktualisiert
3 | - Fehlerbehebungen für diverse Abstürze, die durch die Google Play Konsole berichtet wurden
4 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/26.txt:
--------------------------------------------------------------------------------
1 | - Übersetzungen aktualisiert
2 | - Abhängigkeiten aktualisiert
3 | - Ignoriere Wegpunkte vom Typ SENSORPOINT, da diese keine Koordinaten enthalten
4 | - Overdraw Factor erhöht, um leere Kartenteile zu verhindern
5 | - Korrigierter Zoomlevel, um den ganzen Track auf der Karte darzustellen
6 | - Behoben: Android 12 Absturz wegen zu schneller Sensorabfrage
7 | - Neu: Track als Bild teilen
8 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/27.txt:
--------------------------------------------------------------------------------
1 | - Playstore Metadaten korrigiert
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/28.txt:
--------------------------------------------------------------------------------
1 | - MinSDK auf 24 erhöht und Java Code modernisiert
2 | - Abhängigkeiten aktualisiert (z.B. Mapsforge Bibliothek)
3 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/29.txt:
--------------------------------------------------------------------------------
1 | - Aktivität zum Melden von Abstürzen hinzugefügt
2 | - Update Ziel-SDK auf 32
3 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/3.txt:
--------------------------------------------------------------------------------
1 | - fix Track Pausen
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/30.txt:
--------------------------------------------------------------------------------
1 | - Neu: Erweitert / TileCache Optionen
2 | - Neu: konfigurierbarer Karten-Überzeichenen-Faktor
3 | - Behoben: Leere Kartenkacheln
4 | - Aktualisierung der Abhängigkeiten
5 | - Aktualisierte Übersetzungen
6 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/31.txt:
--------------------------------------------------------------------------------
1 | - Abhängigkeiten aktualisieren
2 | - Übersetzungen aktualisiert
3 | - Repariere #169, einen möglichen Speicherleck in ThemeSelectionActivity
4 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/32.txt:
--------------------------------------------------------------------------------
1 | - Neu: Track einfärben nach Geschwindigkeit
2 | - Neu: konfigurierbare Statistik
3 | - New: Versionsinformationen auf der "Über"-Seite
4 | - Aktualisierte Übersetzungen
5 | - Aktualisierte Abhängigkeiten
6 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/33.txt:
--------------------------------------------------------------------------------
1 | - Upgrade auf AGP 8.0 und Java 17
2 | - Abhängigkeiten aktualisiert
3 | - Übersetzungen aktualisiert
4 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/34.txt:
--------------------------------------------------------------------------------
1 | - Abhängigkeiten aktualisiert
2 | - Übersetzungen aktualisiert
3 | - Debug Informationen für das Einlesen von Wegpunkten
4 | - Fix #241: Scrolling auf der Startseite hinzugefügt
5 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/35.txt:
--------------------------------------------------------------------------------
1 | - Upgrade ZielSDK auf 34
2 | - Verbesserung der Kompatibilität mit der älteren OpenTracks Dashboard API
3 | - Neu: Empfang und Darstellung von Wegpunkten (z.B. Marker von OpenTracks)
4 | - Neu: Weitere Trackfärbung einstellbar (einfarbig, pro Track, nach Geschwindigkeit)
5 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/36.txt:
--------------------------------------------------------------------------------
1 | - Fix: Track Marker wurden nicht mehr dargestellt
2 | - Neues Marker Icon von khao-soi
3 | - Übersetzungen aktualisiert
4 | - Abhängigkeiten aktualisiert
5 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/37.txt:
--------------------------------------------------------------------------------
1 | - Abhängigkeiten aktualisiert
2 | - Übersetzungen aktualisiert
3 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/38.txt:
--------------------------------------------------------------------------------
1 | - Fix #269 ignoriere Null-Koordinaten von OpenTracks
2 | - Abhängigkeiten aktualisiert
3 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/39.txt:
--------------------------------------------------------------------------------
1 | - Pause Markierung hinzugefügt
2 | - Neu: Einstellungsseite
3 | - Übersetzungen aktualisiert
4 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/4.txt:
--------------------------------------------------------------------------------
1 | - fastlane metadaten erweitert und korrigiert
2 | - Absturz wenn Track keine Trackpunkte enthält
3 | - Absturz auf Android 6.x Geräten
4 | - Beschreibung zu Offlinemaps hinzugefügt und besser sichtbar gemacht
5 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/40.txt:
--------------------------------------------------------------------------------
1 | - Werte Pause Trackpoints nicht als ungültig im Debug Screen
2 | - Monochromes Launcher Icon hinzugefügt
3 | - Übersetzungen aktualisiert
4 | - Abhängigkeiten aktualisiert
5 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/41.txt:
--------------------------------------------------------------------------------
1 | - Neu: UI Theme Auswahl
2 | - Neu: Unterstützung für dynamische Farben ab Android 12+
3 | - Neu: Migration zur Mapsforge VTM OpenGL vector-tile Rendering Bibliothek
4 | - Übersetzungen aktualisiert
5 | - Abhängigkeiten aktualisiert
6 | - Beschreibung zum Download von Offline Maps aktualisiert
7 | - Beschreibung zum Download von Offline Maps innerhalb der App in der Offline Variante entfernt
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/42.txt:
--------------------------------------------------------------------------------
1 | - Kartenstil angepasst, so dass Beschriftungen für Wanderwege angezeigt werden
2 | - Kartenposition korrigiert, wenn ein Wegpunkt über eine geo URL angezeigt wird
3 | - Übersetzungen aktualisiert
4 | - Abhängigkeiten aktualisiert
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/43.txt:
--------------------------------------------------------------------------------
1 | - Neue Marker können per langem Klick auf eine Position auf der Karte zu OpenTracks hinzugefügt werden (benötigt OpenTracks 4.13.0)
2 | - Übersetzungen aktualisiert
3 | - Abhängigkeiten aktualisiert
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/44.txt:
--------------------------------------------------------------------------------
1 | - Beschreibung für die Offline-Version geändert
2 | - Neu: Map und Theme Downloads über Android DownloadManager
3 | - Neu: Map Download über nativen Dialog (ersetzt WebView)
4 | - Übersetzungen aktualisiert
5 | - Abhängigkeiten aktualisiert
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/45.txt:
--------------------------------------------------------------------------------
1 | - Migration nach Kotlin
2 | - Reproducible builds
3 | - Übersetzungen aktualisiert
4 | - Abhängigkeiten aktualisiert
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/46.txt:
--------------------------------------------------------------------------------
1 | - Fix: Absturz im Online-Map-Consent Dialog
2 | - Übersetzungen aktualisiert
3 | - Abhängigkeiten aktualisiert
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/47.txt:
--------------------------------------------------------------------------------
1 | - Neu: Sprachauswahl in den Einstellungen
2 | - Übersetzungen aktualisiert
3 | - Abhängigkeiten aktualisiert
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/48.txt:
--------------------------------------------------------------------------------
1 | - Neu: Android 15 Unterstützung
2 | - Neu: GPX Betrachter
3 | - Neu: Start/Ziel Marker
4 | - Neu: Marker Popups mit Zeit und Standort Information
5 | - Übersetzungen aktualisiert
6 | - Abhängigkeiten aktualisiert
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/49.txt:
--------------------------------------------------------------------------------
1 | - Fix: Sprachen im PlayStore App Bundle
2 | - Übersetzungen aktualisiert
3 | - Abhängigkeiten aktualisiert
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/5.txt:
--------------------------------------------------------------------------------
1 | - Anzeige mehrerer Tracks gleichzeitig
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/50.txt:
--------------------------------------------------------------------------------
1 | - Neu: Trackfarben sind nun konfigurierbar
2 | - Fix: NullPointer-Exception in MapData
3 | - Übersetzungen aktualisiert
4 | - Abhängigkeiten aktualisiert
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/6.txt:
--------------------------------------------------------------------------------
1 | - Absturz beim Verlassen des Dashboards während eine Trackaufzeichnung noch läuft
2 | - Maximale Zoomstufe begrenzt, um bessere Übersicht zu erhalten
3 | - Kompassrose hinzugefügt
4 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/7.txt:
--------------------------------------------------------------------------------
1 | - Zugriff auf externen Speicher ersetzt durch Android Storage Access Framework
2 | - Tracks werden während der Aufzeichnung nur erweitert und nicht mehr komplett neu gezeichnet
3 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/8.txt:
--------------------------------------------------------------------------------
1 | - Mehrere offline maps können gleichzeitig aktiviert werden
2 | - Compass stabilisiert
3 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/changelogs/9.txt:
--------------------------------------------------------------------------------
1 | - Darstellungsfehler bei großer Schriftart behoben
2 | - Einverständnis für Online-Karte einholen
3 | - Übernimmt die "Lasse Bildschirm eingeschaltet" und "Zeige auf Sperrbildschirm" Einstellungen von OpenTracks
4 | - Download von Offline-Karten direkt über die App
5 | - Neues Logo nach Android Adaptive Launcher Icon Spezifikation
6 | - Umstrukturierung des Menüs mit Karten- und Design-Auswahl
7 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/1.txt:
--------------------------------------------------------------------------------
1 | - First release showing the track on a map from OpenStreetMaps
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/10.txt:
--------------------------------------------------------------------------------
1 | - fix problem with access to the map directory after reboot
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/11.txt:
--------------------------------------------------------------------------------
1 | - Track smoothing with Douglas-Pecker algorithm
2 | - Track splitting at segments (at Pause TrackPoints)
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/12.txt:
--------------------------------------------------------------------------------
1 | - waypoint marker are shown on the map and can be opened in OpenTracks
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/13.txt:
--------------------------------------------------------------------------------
1 | - Picture in picture mode for live track recordings
2 | - Added fullscreen mode from OpenTracks
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/14.txt:
--------------------------------------------------------------------------------
1 | - Arrow as endmarker to show current heading
2 | - Map rotation options: compass and moving direction
3 | - Compass smoothing
4 | - Fullscreen switch via map controls
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/15.txt:
--------------------------------------------------------------------------------
1 | - Dummyversion for F-Droid to fix target-SDK 30
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/16.txt:
--------------------------------------------------------------------------------
1 | - upgrade mapsforge library to version 0.14.0
2 | - multihread map rendering
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/17.txt:
--------------------------------------------------------------------------------
1 | - Split in full and offline only variant
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/18.txt:
--------------------------------------------------------------------------------
1 | - Memory optimization
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/19.txt:
--------------------------------------------------------------------------------
1 | - configurable stroke width for the tracks
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/2.txt:
--------------------------------------------------------------------------------
1 | - fix: respect track segments for pauses
2 | - new: set zoom-level, so that full track is withing view
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/20.txt:
--------------------------------------------------------------------------------
1 | - map movement animation to new trackpoint
2 | - updated and extended translations
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/21.txt:
--------------------------------------------------------------------------------
1 | - Update dependencies
2 | - New translations for Czech, Norwegian and Portuguese
3 | - Support for new OpenTracks API v2
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/22.txt:
--------------------------------------------------------------------------------
1 | - New translations
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/23.txt:
--------------------------------------------------------------------------------
1 | - update dependencies
2 | - New translation Sinhala
3 | - New translation Ukrainian
4 | - New translation Romanian
5 | - New translation Slovenian
6 | - New translation Slovak
7 | - New translation Latvian
8 | - Added support for map theme files in .zip format
9 | - Added support to download maps and themes from Mapsforge, Freizeitkarte Android and OpenAndroMaps via the download links of their websites
10 | - Fix crash when no file manager is available
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/24.txt:
--------------------------------------------------------------------------------
1 | - Upgrade to target API 31
2 | - Upgrade gradle
3 | - Updated translations by mondstern
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/25.txt:
--------------------------------------------------------------------------------
1 | - Updated translation for Norwegian Bokmål
2 | - Updated Gradle
3 | - Fix crashes reported by Google Play Console
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/26.txt:
--------------------------------------------------------------------------------
1 | - update translations
2 | - update dependencies
3 | - ignore trackpoints of type SENSORPOINT as they don't contain coordinates
4 | - increase overdraw factor to get rid of blank tiles
5 | - fixed zoomlevel to view the whole track on the map
6 | - fixed crash on Android 12 because of too high sensor sampling
7 | - new: share track as picture
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/27.txt:
--------------------------------------------------------------------------------
1 | - correct Playstore metadata
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/28.txt:
--------------------------------------------------------------------------------
1 | - raise minSdk to 24, modernize code
2 | - update dependencies (e.g. mapsforge library)
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/29.txt:
--------------------------------------------------------------------------------
1 | - Add crash report activity
2 | - Update target SDK level to 32
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/3.txt:
--------------------------------------------------------------------------------
1 | - fix handling of pause and resume of track segments
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/30.txt:
--------------------------------------------------------------------------------
1 | - New: Advanced / TileCache options
2 | - New: map overdraw factor configurable
3 | - Fixed: blank map tiles
4 | - Update dependencies
5 | - Update translations
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/31.txt:
--------------------------------------------------------------------------------
1 | - update dependencies
2 | - update translations
3 | - fix #169 possible memory leak in ThemeSelectionActivity
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/32.txt:
--------------------------------------------------------------------------------
1 | - New: color by speed
2 | - New: configurable statistic overlay
3 | - New: version information in about screen
4 | - Updated translations
5 | - Updated dependencies
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/33.txt:
--------------------------------------------------------------------------------
1 | - Upgrade to AGP 8.0 and Java 17
2 | - Update dependencies
3 | - Updated translations
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/34.txt:
--------------------------------------------------------------------------------
1 | - Update dependencies
2 | - Update translations
3 | - Add debug information and fail on reading trackpoints errors
4 | - Fix #242: add scrolling to the main screen
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/35.txt:
--------------------------------------------------------------------------------
1 | - Upgrade targetSdk to 34
2 | - Improve compatibility with older OpenTracks dashboard API
3 | - New: receive geo locations and show marker on map (e.g. track markers from OpenTracks)
4 | - New: configurable track color mode (unicolor, by track, by speed)
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/36.txt:
--------------------------------------------------------------------------------
1 | - Fix: track markers were missing
2 | - New marker icon by khao-soi
3 | - Updated translations
4 | - Updated dependencies
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/37.txt:
--------------------------------------------------------------------------------
1 | - Update dependencies
2 | - Update translations
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/38.txt:
--------------------------------------------------------------------------------
1 | - fix #269 ignore null coordinates from OpenTracks
2 | - Update dependencies
3 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/39.txt:
--------------------------------------------------------------------------------
1 | - Add pause markers
2 | - New: settings screen
3 | - Update translations
4 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/4.txt:
--------------------------------------------------------------------------------
1 | - fastlane metadata extended and corrected
2 | - fix crash when no trackpoints received from main app
3 | - fix crash on android 6.x devices
4 | - add description regarding offline maps and made it more visible
5 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/40.txt:
--------------------------------------------------------------------------------
1 | - don't treat pause trackpoints as invalid
2 | - add monochrome launcher icon
3 | - updated translations
4 | - updated dependencies
5 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/41.txt:
--------------------------------------------------------------------------------
1 | - New: UI theme selection
2 | - New: support for Android 12+ dynamic colors
3 | - New: migration to mapsforge VTM OpenGL vector-tile rendering
4 | - Updated translations
5 | - Updated dependencies
6 | - Update description on how to download maps
7 | - Remove in app map download description from offline version
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/42.txt:
--------------------------------------------------------------------------------
1 | - Mapstyle adjustments to show labels for paths
2 | - Fix geo URL map position
3 | - Updated translations
4 | - Updated dependencies
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/43.txt:
--------------------------------------------------------------------------------
1 | - Add marker to OpenTracks via long click on a map location (requires OpenTracks 4.13.0)
2 | - Updated translations
3 | - Updated dependencies
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/44.txt:
--------------------------------------------------------------------------------
1 | - Change description for offline version
2 | - New: map and theme downloads use now the Android DownloadManager
3 | - New: map download via native dialog (replaces WebView)
4 | - Updated translations
5 | - Updated dependencies
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/45.txt:
--------------------------------------------------------------------------------
1 | - Migration to Kotlin
2 | - Reproducible builds
3 | - Updated translations
4 | - Updated dependencies
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/46.txt:
--------------------------------------------------------------------------------
1 | - Fix: crash in Online-Map-Consent dialog
2 | - Updated translations
3 | - Updated dependencies
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/47.txt:
--------------------------------------------------------------------------------
1 | - New: add language chooser in preferences
2 | - Updated translations
3 | - Updated dependencies
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/48.txt:
--------------------------------------------------------------------------------
1 | - New: support for Android 15
2 | - New: GPX viewer
3 | - New: start/finish markers
4 | - New: marker popups with time and location information
5 | - Updated translations
6 | - Updated dependencies
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/49.txt:
--------------------------------------------------------------------------------
1 | - Fix: include all languages in Play Store app bundle
2 | - Updated translations
3 | - Updated dependencies
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/5.txt:
--------------------------------------------------------------------------------
1 | - Visualization of multiple tracks on one map
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/50.txt:
--------------------------------------------------------------------------------
1 | - New: make track colors configurable
2 | - Fix: NullPointer-Exception in MapData
3 | - Updated translations
4 | - Updated dependencies
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/6.txt:
--------------------------------------------------------------------------------
1 | - fix crash when leaving dashboard while trackrecording is active
2 | - limit max zoomlevel for better overview
3 | - added compass rose
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/7.txt:
--------------------------------------------------------------------------------
1 | - read external storage permission replaced by Android Storage Access Framework
2 | - tracks are just extended during recording, no complete redraw anymore
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/8.txt:
--------------------------------------------------------------------------------
1 | - several offline maps can be selected in parallel
2 | - compass stabilized
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/9.txt:
--------------------------------------------------------------------------------
1 | - fixed display issue with large font size
2 | - ask for consent to use online map
3 | - respects "Keep screen on" and "Show on Lockscreen" preferences from OpenTracks
4 | - download of offline maps directly via the app
5 | - new Logo according to the Android Adaptive Launcher Icon Specification
6 | - restructure menu and map/theme selection
7 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/featuregrafic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/fastlane/metadata/android/en-US/images/featuregrafic.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/fastlane/metadata/android/en-US/images/icon.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/1-info-view.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/fastlane/metadata/android/en-US/images/phoneScreenshots/1-info-view.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/2-single-track-map-view.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/fastlane/metadata/android/en-US/images/phoneScreenshots/2-single-track-map-view.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/3-multi-track-map-view.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/fastlane/metadata/android/en-US/images/phoneScreenshots/3-multi-track-map-view.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/4-simple-theme-map-view.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/fastlane/metadata/android/en-US/images/phoneScreenshots/4-simple-theme-map-view.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/5-map-download-view.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/fastlane/metadata/android/en-US/images/phoneScreenshots/5-map-download-view.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/6-map-selection-view.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/fastlane/metadata/android/en-US/images/phoneScreenshots/6-map-selection-view.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/7-map-3d.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/fastlane/metadata/android/en-US/images/phoneScreenshots/7-map-3d.png
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | ## For more details on how to configure your build environment visit
2 | # http://www.gradle.org/docs/current/userguide/build_environment.html
3 | #
4 | # Specifies the JVM arguments used for the daemon process.
5 | # The setting is particularly useful for tweaking memory settings.
6 | # Default value: -Xmx1024m -XX:MaxPermSize=256m
7 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
8 | #
9 | # When configured, Gradle will run in incubating parallel mode.
10 | # This option should only be used with decoupled projects. For more details, visit
11 | # https://developer.android.com/r/tools/gradle-multi-project-decoupled-projects
12 | # org.gradle.parallel=true
13 | #Wed May 01 21:42:44 CEST 2024
14 | android.enableJetifier=true
15 | android.nonFinalResIds=false
16 | android.nonTransitiveRClass=false
17 | android.useAndroidX=true
18 | org.gradle.jvmargs=-Xmx2048M -Dkotlin.daemon.jvm.options\="-Xmx2048M"
19 |
--------------------------------------------------------------------------------
/gradle/libs.versions.toml:
--------------------------------------------------------------------------------
1 | [versions]
2 | androidGradlePlugin = "8.10.1"
3 | androidJunit5 = "1.12.2.0"
4 | androidsvg = "1.4"
5 | androidTest = "1.7.0"
6 | appcompat = "1.7.1"
7 | assertJ = "3.27.3"
8 | colorpicker = "1.1.5"
9 | constraintlayout = "2.2.1"
10 | desugar_jdk_libs = "2.1.5"
11 | documentfile = "1.1.0"
12 | junitJupiter = "5.13.0"
13 | kotlin = "2.1.21"
14 | lifecycleViewmodelKtx = "2.9.1"
15 | mapsforge = "0.25.0"
16 | material = "1.12.0"
17 | mockk = "1.14.2"
18 | preferenceKtx = "1.2.1"
19 | runner = "1.6.2"
20 | slf4jApi = "2.0.17"
21 | jsoup = "1.20.1"
22 | activity = "1.10.1"
23 |
24 | [libraries]
25 | android-test-runner = { module = "de.mannodermaus.junit5:android-test-runner", version.ref = "androidTest" }
26 | android-test-core = { module = "de.mannodermaus.junit5:android-test-core", version.ref = "androidTest" }
27 | androidsvg = { module = "com.caverock:androidsvg", version.ref = "androidsvg" }
28 | appcompat = { module = "androidx.appcompat:appcompat", version.ref = "appcompat" }
29 | assertj-core = { module = "org.assertj:assertj-core", version.ref = "assertJ" }
30 | colorpicker = { module = "com.github.7Koston:HSVColorPicker", version.ref = "colorpicker" }
31 | constraintlayout = { module = "androidx.constraintlayout:constraintlayout", version.ref = "constraintlayout" }
32 | desugar_jdk_libs = { module = "com.android.tools:desugar_jdk_libs", version.ref = "desugar_jdk_libs" }
33 | documentfile = { module = "androidx.documentfile:documentfile", version.ref = "documentfile" }
34 | gradle = { module = "com.android.tools.build:gradle", version.ref = "androidGradlePlugin" }
35 | jsoup-jsoup = { module = "org.jsoup:jsoup", version.ref = "jsoup" }
36 | junit-jupiter-api = { module = "org.junit.jupiter:junit-jupiter-api", version.ref = "junitJupiter" }
37 | junit-jupiter-engine = { module = "org.junit.jupiter:junit-jupiter-engine", version.ref = "junitJupiter" }
38 | junit-jupiter-params = { module = "org.junit.jupiter:junit-jupiter-params", version.ref = "junitJupiter" }
39 | lifecycle-viewmodel-ktx = { module = "androidx.lifecycle:lifecycle-viewmodel-ktx", version.ref = "lifecycleViewmodelKtx" }
40 | material = { module = "com.google.android.material:material", version.ref = "material" }
41 | mockk = { module = "io.mockk:mockk", version.ref = "mockk" }
42 | preference-ktx = { module = "androidx.preference:preference-ktx", version.ref = "preferenceKtx" }
43 | runner = { module = "androidx.test:runner", version.ref = "runner" }
44 | slf4j-api = { module = "org.slf4j:slf4j-api", version.ref = "slf4jApi" }
45 | vtm = { module = "org.mapsforge:vtm", version.ref = "mapsforge" }
46 | vtm-android = { module = "org.mapsforge:vtm-android", version.ref = "mapsforge" }
47 | vtm-http = { module = "org.mapsforge:vtm-http", version.ref = "mapsforge" }
48 | vtm-themes = { module = "org.mapsforge:vtm-themes", version.ref = "mapsforge" }
49 | activity = { module = "androidx.activity:activity", version.ref = "activity" }
50 | activity-ktx = { module = "androidx.activity:activity-ktx", version.ref = "activity" }
51 |
52 | [plugins]
53 | android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" }
54 | android-junit5 = { id = "de.mannodermaus.android-junit5", version.ref = "androidJunit5" }
55 | kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
4 | networkTimeout=10000
5 | validateDistributionUrl=true
6 | zipStoreBase=GRADLE_USER_HOME
7 | zipStorePath=wrapper/dists
8 |
--------------------------------------------------------------------------------
/gradlew.bat:
--------------------------------------------------------------------------------
1 | @rem
2 | @rem Copyright 2015 the original author or authors.
3 | @rem
4 | @rem Licensed under the Apache License, Version 2.0 (the "License");
5 | @rem you may not use this file except in compliance with the License.
6 | @rem You may obtain a copy of the License at
7 | @rem
8 | @rem https://www.apache.org/licenses/LICENSE-2.0
9 | @rem
10 | @rem Unless required by applicable law or agreed to in writing, software
11 | @rem distributed under the License is distributed on an "AS IS" BASIS,
12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | @rem See the License for the specific language governing permissions and
14 | @rem limitations under the License.
15 | @rem
16 | @rem SPDX-License-Identifier: Apache-2.0
17 | @rem
18 |
19 | @if "%DEBUG%"=="" @echo off
20 | @rem ##########################################################################
21 | @rem
22 | @rem Gradle startup script for Windows
23 | @rem
24 | @rem ##########################################################################
25 |
26 | @rem Set local scope for the variables with windows NT shell
27 | if "%OS%"=="Windows_NT" setlocal
28 |
29 | set DIRNAME=%~dp0
30 | if "%DIRNAME%"=="" set DIRNAME=.
31 | @rem This is normally unused
32 | set APP_BASE_NAME=%~n0
33 | set APP_HOME=%DIRNAME%
34 |
35 | @rem Resolve any "." and ".." in APP_HOME to make it shorter.
36 | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
37 |
38 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
39 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
40 |
41 | @rem Find java.exe
42 | if defined JAVA_HOME goto findJavaFromJavaHome
43 |
44 | set JAVA_EXE=java.exe
45 | %JAVA_EXE% -version >NUL 2>&1
46 | if %ERRORLEVEL% equ 0 goto execute
47 |
48 | echo. 1>&2
49 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
50 | echo. 1>&2
51 | echo Please set the JAVA_HOME variable in your environment to match the 1>&2
52 | echo location of your Java installation. 1>&2
53 |
54 | goto fail
55 |
56 | :findJavaFromJavaHome
57 | set JAVA_HOME=%JAVA_HOME:"=%
58 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
59 |
60 | if exist "%JAVA_EXE%" goto execute
61 |
62 | echo. 1>&2
63 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
64 | echo. 1>&2
65 | echo Please set the JAVA_HOME variable in your environment to match the 1>&2
66 | echo location of your Java installation. 1>&2
67 |
68 | goto fail
69 |
70 | :execute
71 | @rem Setup the command line
72 |
73 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
74 |
75 |
76 | @rem Execute Gradle
77 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
78 |
79 | :end
80 | @rem End local scope for the variables with windows NT shell
81 | if %ERRORLEVEL% equ 0 goto mainEnd
82 |
83 | :fail
84 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
85 | rem the _cmd.exe /c_ return code!
86 | set EXIT_CODE=%ERRORLEVEL%
87 | if %EXIT_CODE% equ 0 set EXIT_CODE=1
88 | if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
89 | exit /b %EXIT_CODE%
90 |
91 | :mainEnd
92 | if "%OS%"=="Windows_NT" endlocal
93 |
94 | :omega
95 |
--------------------------------------------------------------------------------
/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.kts.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
23 | # recommendation from Play Store
24 | -keepattributes LineNumberTable,SourceFile
25 | -renamesourcefileattribute SourceFile
--------------------------------------------------------------------------------
/release.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # usage:
3 | # ./release.sh [Full|Offline] keystore_password
4 |
5 | export JAVA_HOME=/usr/lib/jvm/java-17-openjdk/
6 | export PATH=$JAVA_HOME/bin:$PATH
7 |
8 | ./gradlew --no-configuration-cache clean "assemble${1}Release" -Drelease_store_file=/home/peter/upload-android.jks -Drelease_store_password="$2" -Drelease_key_alias='upload' -Drelease_key_password="$2"
9 |
--------------------------------------------------------------------------------
/settings.gradle.kts:
--------------------------------------------------------------------------------
1 | pluginManagement {
2 |
3 | repositories {
4 | gradlePluginPortal()
5 | google()
6 | mavenCentral()
7 | }
8 | }
9 |
10 | @Suppress("UnstableApiUsage")
11 | dependencyResolutionManagement {
12 |
13 | repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
14 | repositories {
15 | google()
16 | mavenCentral()
17 | maven {
18 | setUrl("https://jitpack.io")
19 | }
20 | }
21 | }
22 |
23 | rootProject.name = "OSMDashboard"
24 |
--------------------------------------------------------------------------------
/src/full/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/ar/full_description.txt:
--------------------------------------------------------------------------------
1 | لوحة معلومات OpenStreetMap لـ OpenTracks.
2 | يمكن أيضًا استخدامها كعارض مستقل لملفات GPX والمواقع.
3 |
4 | تعرض مسارًا محددًا مع نقاط البداية والنهاية على خريطة من OpenStreetMap بناءً على مكتبة Mapsforge VTM.
5 | الافتراضي هو خريطة عبر الإنترنت، ولكن الخرائط دون اتصال مدعومة أيضًا. مع الخرائط دون اتصال، ليست هناك حاجة لباقة بيانات الهاتف المحمول.
6 |
7 | الخريطة الافتراضية مقدمة من OpenStreetMap.org.
8 | انضم إلى المجتمع وساعد في تحسين الخريطة، انظر www.openstreetmap.org/fixthemap
9 |
10 | يرجى التفكير في تنزيل خريطة دون اتصال لتقليل الحمل على الخادم وحفظ باقة بيانات هاتفك المحمول.
11 | يمكن العثور على بعض الخرائط دون اتصال هنا:
12 |
13 | Mapsforge
14 |
15 | Freizeitkarte Android
16 |
17 | OpenAndroMaps
18 |
19 | بعض الخرائط تتطلب سمات خاصة للعرض بشكل صحيح! يجب تنزيلها وتكوينها وفقًا لذلك.
20 |
21 | يمكن تنزيل الخرائط دون اتصال عبر قائمة "تنزيل الخريطة" أو عن طريق زيارة المواقع المذكورة أعلاه والنقر على روابط التنزيل. بعض المتصفحات (مثل Firefox) تتطلب نقرة طويلة على الرابط و "فتح الرابط في تطبيق خارجي" ثم اختيار OSMDashboard.
22 |
23 | الخرائط التي تم تنزيلها يدويًا دون اتصال أو الخرائط المشتركة مع تطبيقات أخرى يمكن فتحها من جهاز Android الخاص بك. حدد المجلد في قائمة "مجلد الخريطة".
24 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/ar/short_description.txt:
--------------------------------------------------------------------------------
1 | لوحة تحكم OpenStreetMap ل OpenTracks
2 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/ar/title.txt:
--------------------------------------------------------------------------------
1 | لوحة تحكم OSM ل OpenTracks
2 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/cs-CZ/full_description.txt:
--------------------------------------------------------------------------------
1 | OpenStreetMap přehled pro OpenTracks.
2 | Lze použít také jako samostatný prohlížeč GPX a lokace.
3 |
4 | Zobrazuje vybranou stopu s počátečním a konečným bodem na mapě z OpenStreetMap založené na knihovně Mapsforge VTM.
5 | Výchozí je online mapa, jsou ale podporovány i offline mapy. Pro offline mapy nejsou vyžadována žádná mobilní data.
6 |
7 | Výchozí mapa je poskytovaná projektem OpenStreetMap.org.
8 | Připojte se ke komunitě a pomozte vylepšit mapu, více info viz www.openstreetmap.org/fixthemap
9 |
10 | Zvažte prosím stažení offline mapy pro snížení zatížení serveru a ušetření vašich mobilních dat.
11 | Některé offline mapy naleznete zde:
12 | - Mapsforge
13 | - Freizeitkarte Android
14 | - OpenAndroMaps
15 |
16 | Některé mapy vyžadují pro správné vykreslení speciální vzhledy! Ty je potřeba stáhnout a správně nastavit.
17 |
18 | Offline mapy lze stáhnout z nabídky „Stáhnout mapy“ nebo navštívením výše zmíněných webů a kliknutím na odkazy ke stažení. Některé prohlížeče (např. Firefox) vyžadují klepnutí a dlouhé podržení na odkazu, klepnutí na „Otevřít odkaz v externí aplikaci“ a vybrání OSM Dashboard.
19 |
20 | Ručně stažené mapy nebo mapy sdílené s ostatními aplikacemi lze otevřít z vašeho zařízení Android. Vyberte adresář v nabídce „Adresář map“.
21 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/cs-CZ/short_description.txt:
--------------------------------------------------------------------------------
1 | OpenStreetMap nástěnka pro OpenTracks
2 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/cs-CZ/title.txt:
--------------------------------------------------------------------------------
1 | OSM Dashboard pro OpenTracks
2 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/de-DE/full_description.txt:
--------------------------------------------------------------------------------
1 | Ein OpenStreetMap Dashboard für OpenTracks: OpenTracks.
2 | Kann auch als eigenständiger GPX- und Standortbetrachter genutzt werden.
3 |
4 | Darstellung des Tracks mit Start- und Endpunkt auf einer Karte von OpenStreetMap basierend auf der Mapsforge VTM Bibliothek.
5 | Als Standard ist eine Onlinekarte eingestellt, aber Offlinekarten im Mapsforge Format können genutzt werden. Damit ist kein Datenvolumen während der Aufzeichnung nötig.
6 |
7 | Die Standardkarte wird von OpenStreetMap.org zur Verfügung gestellt.
8 | Trete der Gemeinschaft bei und hilf sie zu verbessern, siehe www.openstreetmap.org/fixthemap
9 |
10 | Bitte nutze eine Offlinekarte, um die Serverlast und Dein mobiles Datenvolumen zu schonen.
11 | Einige Offlinekarten findest Du hier:
12 | - Mapsforge
13 | - Freizeitkarte Android
14 | - OpenAndroMaps
15 |
16 | Einge Karte benötigen ein spezielles Kartentheme, um korrekt dargestellt zu werden. Diese müssen ebenfalls heruntergeladen und konfiguriert werden.
17 |
18 | Offlinekarten können über das Menü "Karten herunterladen" oder über die Downloadlinks der o.a. Webseiten herunter geladen werden. Bei einige Browsern (z.B. Firefox) muss man lange auf den Link klicken und "Öffne Link in externer App" und OSMDashboard wählen.
19 |
20 | Manuell heruntergeladene Offlinekarten oder Karten, die mit anderen Apps geteilt werden, können von Deinem Androidgerät über das Menü "Karten-Verzeichnis" geöffnet werden.
21 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/de-DE/short_description.txt:
--------------------------------------------------------------------------------
1 | OpenStreetMap dashboard für OpenTracks
2 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/de-DE/title.txt:
--------------------------------------------------------------------------------
1 | OSM Dashboard für OpenTracks
2 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/en-US/full_description.txt:
--------------------------------------------------------------------------------
1 | An OpenStreetMap dashboard for OpenTracks.
2 | Can be used as standalone GPX and location viewer as well.
3 |
4 | It shows a selected track with start- and endpoints on a map from OpenStreetMap based on the Mapsforge VTM library.
5 | The default is an online map, but offline maps are supported as well. With offline maps, there is no necessity for a mobile data plan.
6 |
7 | The default map is provided by OpenStreetMap.org.
8 | Join the community and help to improve the map, see www.openstreetmap.org/fixthemap
9 |
10 | Please consider downloading an offline map to decrease the server load and save your mobile data plan.
11 | Some offline maps can be found here:
12 | - Mapsforge
13 | - Freizeitkarte Android
14 | - OpenAndroMaps
15 |
16 | Some maps require special themes to render correctly! These need to be downloaded and configured accordingly.
17 |
18 | Offline maps can be downloaded via the menu "Map download" or by visiting the above mentioned websites and click the download links. Some browsers (e.g. Firefox) require a long click on the link and "Open link in external app" and then choose OSMDashboard.
19 |
20 | Manual downloaded offline maps or maps shared with other apps can be opened from your Android device. Select the directory in the menu "Map directory".
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/en-US/short_description.txt:
--------------------------------------------------------------------------------
1 | OpenStreetMap dashboard for OpenTracks
2 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/en-US/title.txt:
--------------------------------------------------------------------------------
1 | OSM Dashboard for OpenTracks
2 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/es-ES/full_description.txt:
--------------------------------------------------------------------------------
1 | Panel de OpenStreetMap para OpenTracks.
2 | Muestra la ruta seleccionada con puntos de inicio y final en el mapa OpenStreetMap basado en la librería de Mapsforge VTM .
3 | El mapa en línea está configurado como la opción predeterminada, pero también se admiten los mapas sin conexión. Con los mapas sin conexión, no hay necesidad de usar datos móviles.
4 |
5 | El mapa predeterminado lo proporciona OpenStreetMap.org.
6 | Únete a la comunidad y ayuda a mejorar el mapa, consulta www.openstreetmap.org/fixthemap
7 |
8 | Considera descargar el mapa sin conexión para reducir la carga del servidor y ahorrar en el uso de datos móviles.
9 | Algunos mapas sin conexión se pueden encontrar aquí:
10 | - Mapsforge
11 | - Freizeitkarte Android
12 | - OpenAndroMaps
13 |
14 | ¡Algunos mapas requieren temas especiales para renderizarse correctamente! Estos deben descargarse y configurarse en consecuencia.
15 |
16 | Los mapas sin conexión se pueden descargar a través del menú "Descargar los mapas" o visitando la página web mencionada anteriormente y haciendo clic en los enlaces de la descarga. Algunos navegadores (p. ej., Firefox) requieren un clic prolongado en el enlace y "Abrir enlace en una aplicación externa", luego seleccione OSMDashboard.
17 |
18 | Los mapas sin conexión descargados manualmente o los mapas compartidos con otras aplicaciones se pueden abrir en tu dispositivo Android. Selecciona un directorio en el menú "Mapa de directorio".
19 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/es-ES/short_description.txt:
--------------------------------------------------------------------------------
1 | Panel de OpenStreetMap para OpenTracks
2 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/es-ES/title.txt:
--------------------------------------------------------------------------------
1 | Panel de OSM para OpenTracks
2 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/fr-FR/full_description.txt:
--------------------------------------------------------------------------------
1 | Un tableau de bord OpenStreetMap pour OpenTracks.
2 | Il affiche les traces sélectionnées du départ à l’arrivée sur une carte OpenStreetMap basée sur la librairie Mapsforge VTM.
3 | Par défaut, la carte affichée est celle en ligne. Les cartes hors-lignes sont également prises en charge et ne nécessitent pas de donnée mobiles.
4 |
5 | La carte par défaut est fournie par OpenStreetMap.org.
6 | Rejoignez la communauté et contribuez à son amélioration sur www.openstreetmap.org/fixthemap
7 |
8 | Nous vous recommandons d’utiliser une carte hors-ligne afin d’économiser votre forfait mobile ainsi que réduire la charge des serveurs.
9 | Des cartes sont disponibles ici :
10 | – Mapsforge ;
11 | – Freizeitkarte Android ;
12 | – OpenAndroMaps.
13 |
14 | Certaines cartes nécessitent des thèmes spéciaux pour s’afficher correctement ! Ils doivent être téléchargés et configurés parallèlement.
15 |
16 | Les cartes hors-ligne sont accessibles via le menu « Téléchargement de carte » ou en visitant un des liens sus-mentionnés et d’ouvrir un lien de téléchargement. Certains navigateurs (ex : Firefox) nécessitent un appui long sur le lien, « Ouvrir le lien dans une application externe » puis de choisir OSMDashboard.
17 |
18 | Les cartes téléchargées manuellement ou partagées avec d’autres applications peuvent être ouvertes sur votre appareil Android. Sélectionnez un dossier dans le menu « Dossier de cartes ».
19 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/fr-FR/short_description.txt:
--------------------------------------------------------------------------------
1 | Tableau de bord OpenStreetMap pour OpenTracks
2 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/fr-FR/title.txt:
--------------------------------------------------------------------------------
1 | Tableau de bord OSM pour OpenTracks
2 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/ga/full_description.txt:
--------------------------------------------------------------------------------
1 | Deais OpenStreetMap le haghaidh OpenTracks.
2 | Taispeánann sé rian roghnaithe le pointí tosaigh agus críochphointí ar léarscáil ó OpenStreetMap bunaithe ar an Leabharlann Mapsforge VTM.
3 | Is léarscáil ar líne an réamhshocrú, ach tacaítear le léarscáileanna as líne freisin. Le léarscáileanna as líne, níl aon ghá le plean sonraí soghluaiste.
4 |
5 | Soláthraíonn OpenStreetMap.org an léarscáil réamhshocraithe.
6 | Bí leis an bpobal agus cuidigh le feabhas a chur ar an léarscáil, féach www.openstreetmap.org/fixthemap
7 |
8 | Smaoinigh le do thoil ar léarscáil as líne a íoslódáil chun ualach an fhreastalaí a laghdú agus chun do phlean sonraí soghluaiste a shábháil.
9 | Is féidir roinnt léarscáileanna as líne a fháil anseo:
10 | - Mapsforge
11 | - Freizeitkarte Android
12 | - OpenAndroMaps
13 |
14 | Teastaíonn téamaí speisialta ó roinnt léarscáileanna chun rindreáil i gceart! Ní mór iad seo a íoslódáil agus a chumrú dá réir.
15 |
16 | Is féidir léarscáileanna as líne a íoslódáil tríd an roghchlár "Íoslódáil Léarscáileanna" nó trí chuairt a thabhairt ar na láithreáin ghréasáin thuasluaite agus cliceáil ar na naisc íoslódála. Éilíonn roinnt brabhsálaithe (m.sh. Firefox) cliceáil fada ar an nasc agus "Oscail nasc san aip sheachtrach" agus ansin roghnaigh OSMDashboard.
17 |
18 | Is féidir léarscáileanna as líne íoslódáilte de láimh nó léarscáileanna a roinntear le haipeanna eile a oscailt ó do ghléas Android. Roghnaigh an eolaire sa roghchlár "Map eolaire".
19 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/ga/short_description.txt:
--------------------------------------------------------------------------------
1 | Painéal na nionstraimí le Haghaidh OpenTracks
2 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/ga/title.txt:
--------------------------------------------------------------------------------
1 | Painéal OSM do OpenTracks
2 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/gl/full_description.txt:
--------------------------------------------------------------------------------
1 | Un visor de OpenStreetMap para OpenTracks.
2 | Mostra a ruta seleccionada nun mapa de OpenStreetMap cos puntos de inicio e fin utilizando a biblioteca Mapsforge VTM.
3 | Por defecto usa un mapa con conexión a internet, pero ten soporte para mapas sen conexión. Con mapas sen conexión non precisas un plan de datos móbiles.
4 |
5 | O mapa por defecto está proporcionado por OpenStreetMap.org.
6 | Únete á comunidade e axuda a mellorar o mapa, le www.openstreetmap.org/fixthemap
7 |
8 | Considera descargar a versión sen conexión do mapa para reducir a carga do servidor e aforrar datos móbiles.
9 | Podes atopar aquí mapas sen conexión:
10 | - Mapsforge
11 | - Freizeitkarte Android
12 | - OpenAndroMaps
13 |
14 | Algúns mapas requiren decorados específicos para verse ben! Hai que descargalos e configuralos correctamente!
15 |
16 | Os mapas sen conexión descárganse desde o menú "Descargar Mapa" ou visitando as webs indicadas arriba e premendo nas ligazóns de descarga. Algúns navegadores (ex. Firefox) requiren unha pulsación prolongada na ligazón e "Abrir ligazón en app externa" para despois elixir OSMDashboard.
17 |
18 | Os mapas se conexión descargados manualmente ou mapas compartidos con outras aplicacións pódense abrir co teu dispositivo Android. Elixe o directorio no menú "Directorio do mapa".
19 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/gl/short_description.txt:
--------------------------------------------------------------------------------
1 | Visor de OpenStreetMap para OpenTracks
2 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/gl/title.txt:
--------------------------------------------------------------------------------
1 | OSM Dashboard para OpenTracks
2 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/hu-HU/full_description.txt:
--------------------------------------------------------------------------------
1 | OpenStreetMap irányítópult az OpenTracks számára.
2 | Megjelenít egy kiválasztott nyomvonalat kezdő- és végpontokkal az OpenStreetMap térképén a Mapsforge VTM könyvtár.
3 | Az alapértelmezett egy online térkép, de az offline térképek is támogatottak. Az offline térképekkel nincs szükség mobil adatcsomagra.
4 |
5 | Az alapértelmezett térképet az OpenStreetMap.org biztosítja.
6 | Csatlakozzon a közösséghez, és segítsen a térkép fejlesztésében, lásd: www.openstreetmap.org/fixthemap
7 |
8 | Fontolja meg egy offline térkép letöltését, hogy ezáltal csökkentse a kiszolgálóterhelést és mobiladat forgalmát.
9 | Néhány offline térkép itt található meg:
10 | - Mapsforge
11 | - Freizeitkarte Android
12 | - OpenAndroMaps
13 |
14 | Egyes térképek speciális témákat igényelnek a helyes megjelenítéshez! Ezeket le kell tölteni, és ennek megfelelően be kell állítani.
15 |
16 | Az offline térképek letölthetők a „Térkép letöltése” menüből, vagy a fent említett webhelyek felkeresésével és a letöltési hivatkozásra kattintva. Egyes böngészők (például a Firefox) hosszú kattintást igényelnek a hivatkozásra, majd a „Hivatkozás megnyitása külső alkalmazásban” lehetőséget, majd válassza az OSMDashboard lehetőséget.
17 |
18 | A saját kezűleg letöltött offline vagy más alkalmazásokkal megosztott térképek megnyithatók Android-eszközéről. Válassza ki a könyvtárat a „Map directory” menüben.
19 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/hu-HU/short_description.txt:
--------------------------------------------------------------------------------
1 | OpenStreetMap irányítópult az OpenTracks-hez
2 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/hu-HU/title.txt:
--------------------------------------------------------------------------------
1 | OSM Dashboard az OpenTrackshez
2 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/it/full_description.txt:
--------------------------------------------------------------------------------
1 | Un pannello OpenStreetMap per OpenTracks.
2 | Mostra un tracciato selezionato con punti d'inizio e arrivo su una mappa di OpenStreetMap basata sulla liberira Mapsforge VTM.
3 | Verrà utilizzata una mappa online in maniera predefinita, ma sono supportate anche le mappe offline. Con le mappe offline non c'è necessità di una connessione internet cellulare.
4 |
5 | La mappa predefinita è fornita daOpenStreetMap.org
6 | Unisciti alla comunità e aiuta a migliorare la mappa, vedi www.openstreetmap.org/fixthemap
7 |
8 | Scaricare una mappa online aiuta a ridurre sia il carico sui server che il peso sul tuo piano dati mobile.
9 | Alcune mappe online possono essere trovate qui:
10 | - Mapsforge
11 | - Freizeitkarte Android
12 | - OpenAndroMaps
13 |
14 | Alcune mappe richiedono temi particolari per essere rappresentate correttamente! Questi devono essere scaricati e configurati appropriatamente.
15 |
16 | Le mappe offline possono essere scaricate dal menu "Scaricamento mappe" o tramite i siti web elencati sopra, cliccando sui collegamenti di download. Alcuni browser (p. e. Firefox) richiedono un clic lungo sui link e la successiva selezione "Apri link con applicazione esterna" e poi di OSMDashboard.
17 |
18 | Le mappe offline scaricate manualmente o mappe condivise con altre applicazioni possono essere aperte dal tuo dispositivo Android. Seleziona la cartella nel menu "Cartella mappe".
19 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/it/short_description.txt:
--------------------------------------------------------------------------------
1 | Pannello OpenStreetMap per OpenTracks
2 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/it/title.txt:
--------------------------------------------------------------------------------
1 | Pannello OSM per OpenTracks
2 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/lt/full_description.txt:
--------------------------------------------------------------------------------
1 | OpenStreetMap prietaisų skydelis OpenTracks.
2 | Jame rodomas pasirinktas kelias su pradžios ir pabaigos taškais žemėlapyje iš OpenStreetMap remiantis Mapsforge VTM biblioteka.
3 | Pagal numatytuosius nustatymus naudojamas internetinis žemėlapis, tačiau palaikomi ir neprisijungusieji žemėlapiai. Naudojant neprisijungus prie interneto naudojamus žemėlapius, nereikia mobiliojo ryšio duomenų plano.
4 |
5 | Numatytąjį žemėlapį pateikia OpenStreetMap.org.
6 | Prisijunkite prie bendruomenės ir padėkite tobulinti žemėlapį, žr. www.openstreetmap.org/fixthemap
7 |
8 | Apsvarstykite galimybę atsisiųsti neprisijungusį žemėlapį, kad sumažintumėte serverio apkrovą ir sutaupytumėte savo mobiliųjų duomenų planą.
9 | Kai kuriuos neprisijungus prie interneto naudojamus žemėlapius galite rasti čia:
10 | - Mapsforge
11 | - Freizeitkarte Android
12 | - OpenAndroMaps
13 |
14 | Some maps require special themes teisingai atvaizduoti! Juos reikia atsisiųsti ir atitinkamai sukonfigūruoti.
15 |
16 | Neprisijungę prie interneto žemėlapius galite atsisiųsti per meniu "Žemėlapių atsisiuntimas" arba apsilankę pirmiau minėtose svetainėse ir spustelėję atsisiuntimo nuorodas. Kai kuriose naršyklėse (pvz., "Firefox") reikia ilgai spragtelėti nuorodą ir pasirinkti "Open link in external app" ("Atidaryti nuorodą išorinėje programoje"), tada pasirinkti OSMDashboard.
17 |
18 | Rankiniu būdu atsisiųstus neprisijungties žemėlapius arba su kitomis programėlėmis bendrinamus žemėlapius galima atidaryti iš "Android" prietaiso. Meniu "Map directory" (žemėlapių katalogas) pasirinkite katalogą.
19 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/lt/short_description.txt:
--------------------------------------------------------------------------------
1 | OpenStreetMap prietaisų skydelis OpenTracks
2 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/lt/title.txt:
--------------------------------------------------------------------------------
1 | OSM Dashboard dėl OpenTracks
2 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/nb-NO/short_description.txt:
--------------------------------------------------------------------------------
1 | OpenStreetMap-dashbord for OpenTracks
2 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/nb-NO/title.txt:
--------------------------------------------------------------------------------
1 | OSM-Dashbord for OpenTracks
2 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/pl-PL/full_description.txt:
--------------------------------------------------------------------------------
1 | Panel OpenStreetMap dla OpenTracks.
2 | Pokazuje wybraną trasę z punktami początkowymi i końcowymi na mapie OpenStreetMap bazując na bibliotece Mapsforge VTM.
3 | Domyślna jest mapa online, ale mapy offline są również obsługiwane. W przypadku map offline nie ma konieczności korzystania z mobilnego pakietu danych.
4 |
5 | Domyślnym dostawcą map jest OpenStreetMap.org.
6 | Dołącz do społeczności i pomóż ulepszać mapy, wejdź na >www.openstreetmap.org/fixthemap
7 |
8 | Prosimy rozważyć pobranie mapy offline, aby zmniejszyć obciążenie serwera i oszczędzić swój mobilny pakiet danych.
9 | Mapy offline można znaleźć tutaj:
10 | - Mapsforge
11 | - Freizeitkarte Android
12 | - OpenAndroMaps
13 |
14 | Niektóre mapy wymagają specjalnych motywów do poprawnego renderowania! Należy je pobrać i odpowiednio skonfigurować.
15 |
16 | Mapy offline można pobrać poprzez menu, wybierając opcję "Pobierz mapę" lub wchodząc na wyżej wymienione strony internetowe i klikając w linki do pobrania. Niektóre przeglądarki (np. Firefox) wymagają długiego kliknięcia na link i wybraniu "Otwórz link w zewnętrznej aplikacji", a następnie wybraniu OSMDashboard.
17 |
18 | Ręcznie pobrane mapy offline lub mapy współdzielone z innymi aplikacjami można otworzyć z urządzenia z systemem Android. Wybierz katalog w menu "Katalog map".
19 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/pl-PL/short_description.txt:
--------------------------------------------------------------------------------
1 | Panel OpenStreetMap dla OpenTracks
2 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/pl-PL/title.txt:
--------------------------------------------------------------------------------
1 | Panel OSM dla OpenTracks
2 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/ro/full_description.txt:
--------------------------------------------------------------------------------
1 | Un tablou de bord OpenStreetMap pentru OpenTracks.
2 | Arată un traseu selectat cu puncte de start și capăt pe o hartă de la OpenStreetMap bazată pe librăria Mapsforge VTM.
3 | Implicit este o hartă online, dar hărțile offline sunt de asemenea suportate. Cu hărțile offline, nu există necesitatea pentru un plan de date mobile.
4 |
5 | Harta implicită este furnizată de OpenStreetMap.org.
6 | Alăturați-vă comunității și ajutați la îmbunătățirea hărții, consultați www.openstreetmap.org/fixthemap
7 |
8 | Vă rugăm să luați în considerare descărcarea unei hărți offline pentru a reduce încărcătura serverului și pentru a vă salva planul de date mobile.
9 | Unele hărți offline pot fi găsite aici:
10 | - Mapsforge
11 | - Freizeitkarte Android
12 | - OpenAndroMaps
13 |
14 | Unele hărți necesită teme speciale pentru a fi redate corect! Acestea trebuie descărcate și configurate în consecință.
15 |
16 | Hărțile offline pot fi descărcate prin meniul "Descărcare hărți" sau prin vizitarea site-urilor web menționate mai sus și apăsarea link-urilor de descărcare. Unele browsere (ex: Firefox) necesită un clic lung pe link și apăsată opțiunea 'Deschideți într-o aplicație externă', apoi alegeți OSMDashboard.
17 |
18 | Hărțile offline descărcate manual sau hărțile partajate cu alte aplicații pot fi deschise de pe dispozitivul dvs. Android. Selectați dosarul în meniul 'Dosar hărți'.
19 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/ro/short_description.txt:
--------------------------------------------------------------------------------
1 | Tablou de bord OpenStreetMap pentru OpenTracks
2 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/ro/title.txt:
--------------------------------------------------------------------------------
1 | Tablou de bord OSM pentru OpenTracks
2 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/sl/full_description.txt:
--------------------------------------------------------------------------------
1 | Nadzorna plošča OpenStreetMap za OpenTracks.
2 | Prikazuje izbrano pot z začetno in končno točko na zemljevidu OpenStreetMap, ki temelji naknjižnici Mapsforge VTM.
3 | Spletni zemljevid je nastavljen kot privzeta opcija, so pa podprti tudi zemljevidi brez povezave. Z zemljevidi brez povezave ni potrebe po rabi mobilnih podatkov.
4 |
5 | Privzeti zemljevid zagotavlja OpenStreetMap.org.
6 | Pridružite se skupnosti in pomagajte izboljšati zemljevid, glej www.openstreetmap.org/fixthemap
7 |
8 | Razmislite o prenosu zemljevida brez povezave, da zmanjšate obremenitev strežnika in prihranite na rabi svojih mobilnih podatkov.
9 | Nekaj zemljevidov brez povezave najdete tukaj:
10 | - Mapsforge
11 | - Freizeitkarte Android
12 | - OpenAndroMaps
13 |
14 | Nekateri zemljevidi za pravilno upodabljanje zahtevajo posebne teme! Te je treba prenesti in ustrezno nastaviti.
15 |
16 | Zemljevide brez povezave lahko prenesete prek menija »Prenos zemljevida« ali pa tako, da obiščete zgoraj omenjeno spletno mesto in kliknete povezave za prenos. Nekateri brskalniki (npr. Firefox) zahtevajo dolgi klik na povezavo in "Odpri povezavo v zunanji aplikaciji" nakar izberite OSMDashboard.
17 |
18 | Ročno prenesene zemljevide brez povezave ali zemljevide, ki jih delite z drugimi aplikacijami, lahko odprete v vaši Android napravi. Izberite imenik v meniju "Imenik zemljevidov".
19 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/sl/short_description.txt:
--------------------------------------------------------------------------------
1 | Nadzorna plošča OpenStreetMap za OpenTracks
2 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/sl/title.txt:
--------------------------------------------------------------------------------
1 | OSM Dashboard za OpenTracks
2 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/sv-SE/full_description.txt:
--------------------------------------------------------------------------------
1 | En OpenStreetMap-kontrollpanel för OpenTracks.
2 | Den visar valt spår med start- och slutpunkter på en karta från OpenStreetMap baserad på Mapsforge VTM-biblioteket.
3 | Det förvalda är en online-karta, men stöd finns även för offline-kartor. Med offline-kartor så behövs det inget abonnemang.
4 |
5 | Den förvalda kartan kommer från OpenStreetMap.org.
6 | Gå med i communityt och hjälp till med att förbättra kartan, se www.openstreetmap.org/fixthemap
7 |
8 | Hämta gärna hem en offline-karta för att minska trycket på servern och spara på ditt mobildata.
9 | Några offline-kartor hittar du här:
10 | - Mapsforge
11 | - Freizeitkarte Android
12 | - OpenAndroMaps
13 |
14 | Vissa kartor kräver speciella teman för att visas korrekt! Dessa teman behöver då också hämtas och konfigureras.
15 |
16 | Offline-kartor kan hämtas via menyn "Hämtning av karta" eller genom att besöka ovan nämnda webbplatser och klicka på nedladdningslänkarna. I vissa webbläsare (t.ex. Firefox) behöver du långklicka på länken och välja "Öppna länk i en extern app" och sedan välja OSMDashboard.
17 |
18 | Manuellt hämtade offline-kartor eller kartor som delas med andra appar kan öppnas från din Android-enhet. Välj nedladdningsmappen i menyn "Kartmapp" ("Map directory").
19 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/sv-SE/short_description.txt:
--------------------------------------------------------------------------------
1 | OpenStreetMap-kontrollpanel för OpenTracks
2 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/sv-SE/title.txt:
--------------------------------------------------------------------------------
1 | OSM-kontrollpanel för OpenTracks
2 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/tr/full_description.txt:
--------------------------------------------------------------------------------
1 | OpenTracks için OpenStreetMap gösterge paneli.
2 | OpenStreetMap'ten Mapsforge VTM kütüphanesine dayalı bir harita üzerinde başlangıç ve bitiş noktaları ile seçilen bir yolu gösterir.
3 | Varsayılan olarak çevrimiçi harita kullanılır, ancak çevrimdışı haritalar da desteklenir. Çevrimdışı haritalar ile mobil veri planına gerek yoktur.
4 |
5 | Varsayılan harita OpenStreetMap.org tarafından sağlanmaktadır.
6 | Topluluğa katılın ve haritanın geliştirilmesine yardımcı olun, www.openstreetmap.org/fixthemap adresine bakın
7 |
8 | Sunucu yükünü azaltmak ve mobil veri planınızdan tasarruf etmek için lütfen çevrimdışı bir harita indirmeyi düşünün.
9 | Bazı çevrimdışı haritaları burada bulabilirsiniz:
10 | - Mapsforge
11 | - Freizeitkarte Android
12 | - OpenAndroMaps
13 |
14 | Bazı haritaların doğru şekilde yüklenmesi için özel temalar gerekir! Bunların indirilmesi ve uygun şekilde yapılandırılması gerekir.
15 |
16 | Çevrimdışı haritalar "Harita indir" menüsünden veya yukarıda belirtilen web sitelerini ziyaret ederek ve indirme bağlantılarına tıklayarak indirilebilir. Bazı tarayıcılar (örneğin Firefox) bağlantıya uzun bir tıklama ve "Bağlantıyı harici uygulamada aç" ve ardından OSM Gösterge Panelini seçmeyi gerektirir.
17 |
18 | Manuel olarak indirilen çevrimdışı haritalar veya diğer uygulamalarla paylaşılan haritalar Android cihazınızdan açılabilir. "Harita dizini" menüsünden dizini seçin.
19 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/tr/short_description.txt:
--------------------------------------------------------------------------------
1 | OpenTracks için OpenStreetMap panosu
2 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/tr/title.txt:
--------------------------------------------------------------------------------
1 | OpenTracks için OSM Panosu
2 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/zh-CN/full_description.txt:
--------------------------------------------------------------------------------
1 | 一个OpneStreetMap用于 OpenTracks.
2 | 在地图 OpenStreetMap 上显示轨迹的起点和终点,基于 Mapsforge VTM 开源库。
3 | 默认使用了在线地图,同时也支持离线地图。如果使用离线地图,则不需要使用额外的流量数据。
4 |
5 | 默认地图由OpenStreetMap.org提供。
6 | 加入社区并帮助改进地图,请点击www.openstreetmap.org/fixthemap
7 |
8 | 请考虑下载离线地图以减轻服务器负载并节省您的流量使用费用。
9 | 以下是一些离线地图:
10 | - Mapsforge
11 | - Freizeitkarte Android
12 | - OpenAndroMaps
13 |
14 | 有些地图需要特定主题才能正确渲染!因此需要下载完这些数据并配置完成才能正常运行。
15 |
16 | 离线地图可通过以下列表下载【地图下载】 通过访问上述网站并单击下载链接。有些浏览器 (例如Firefox) 需要长按连接并通过第三方应用下载后,再用OSM仪表盘打开。
17 |
18 | 手动下载离线地图可与您的安卓设备上其他应用共享。通过 【地图路径】按钮选择 下载好的离线地图数据存放的路径。
19 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/zh-CN/short_description.txt:
--------------------------------------------------------------------------------
1 | OpenStreetMap仪表盘用于OpenTracks
2 |
--------------------------------------------------------------------------------
/src/full/fastlane/metadata/android/zh-CN/title.txt:
--------------------------------------------------------------------------------
1 | OSM仪表盘用于OpenTracks
2 |
--------------------------------------------------------------------------------
/src/fullDebug/ic_launcher-playstore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/src/fullDebug/ic_launcher-playstore.png
--------------------------------------------------------------------------------
/src/fullDebug/res/drawable-v24/ic_launcher_foreground.xml:
--------------------------------------------------------------------------------
1 |
7 |
11 |
15 |
16 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/src/fullDebug/res/drawable/ic_launcher_background.xml:
--------------------------------------------------------------------------------
1 |
6 |
10 |
11 |
13 |
19 |
20 |
21 |
23 |
31 |
32 |
33 |
35 |
43 |
44 |
45 |
47 |
55 |
56 |
57 |
58 |
--------------------------------------------------------------------------------
/src/fullDebug/res/drawable/ic_launcher_foreground.xml:
--------------------------------------------------------------------------------
1 |
6 |
11 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/fullDebug/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/src/fullDebug/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/src/fullDebug/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/src/fullDebug/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/src/fullDebug/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/src/fullDebug/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/src/fullDebug/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/src/fullDebug/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/src/fullDebug/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/src/fullDebug/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/src/fullDebug/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/src/fullDebug/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/src/fullDebug/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/src/fullDebug/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/src/fullDebug/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/src/fullDebug/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/src/fullDebug/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/src/fullDebug/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/src/fullDebug/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/src/fullDebug/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/src/fullDebug/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/src/fullDebug/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/src/fullDebug/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | OSM Dashboard (Debug)
3 |
4 |
--------------------------------------------------------------------------------
/src/main/ic_launcher-playstore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/src/main/ic_launcher-playstore.png
--------------------------------------------------------------------------------
/src/main/kotlin/de/storchp/opentracks/osmplugin/BaseActivity.kt:
--------------------------------------------------------------------------------
1 | package de.storchp.opentracks.osmplugin
2 |
3 | import android.content.Intent
4 | import android.os.Build
5 | import android.view.View
6 | import android.view.WindowManager
7 | import androidx.activity.result.ActivityResult
8 | import androidx.activity.result.ActivityResultCallback
9 | import androidx.activity.result.ActivityResultLauncher
10 | import androidx.activity.result.contract.ActivityResultContracts.StartActivityForResult
11 | import androidx.appcompat.app.AppCompatActivity
12 | import de.storchp.opentracks.osmplugin.settings.SettingsActivity
13 |
14 | abstract class BaseActivity : AppCompatActivity() {
15 |
16 | val settingsActivityResultLauncher: ActivityResultLauncher =
17 | registerForActivityResult(
18 | StartActivityForResult(),
19 | ActivityResultCallback { result: ActivityResult? -> recreate() })
20 |
21 | @Suppress("unused")
22 | fun openSettings(view: View?) {
23 | settingsActivityResultLauncher.launch(Intent(this, SettingsActivity::class.java))
24 | }
25 |
26 | protected fun keepScreenOn(keepScreenOn: Boolean) {
27 | if (keepScreenOn) {
28 | window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
29 | } else {
30 | window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
31 | }
32 | }
33 |
34 | @Suppress("DEPRECATION")
35 | protected fun showOnLockScreen(showOnLockScreen: Boolean) {
36 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
37 | setShowWhenLocked(showOnLockScreen)
38 | } else if (showOnLockScreen) {
39 | window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED)
40 | } else {
41 | window.clearFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED)
42 | }
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/src/main/kotlin/de/storchp/opentracks/osmplugin/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package de.storchp.opentracks.osmplugin
2 |
3 | import android.content.Intent
4 | import android.os.Bundle
5 | import android.text.Html
6 | import android.text.method.LinkMovementMethod
7 | import android.view.View
8 | import android.view.ViewGroup.MarginLayoutParams
9 | import androidx.activity.enableEdgeToEdge
10 | import androidx.core.view.ViewCompat
11 | import androidx.core.view.WindowInsetsCompat
12 | import androidx.core.view.updateLayoutParams
13 | import de.storchp.opentracks.osmplugin.databinding.ActivityMainBinding
14 |
15 | class MainActivity : BaseActivity() {
16 | override fun onCreate(savedInstanceState: Bundle?) {
17 | enableEdgeToEdge()
18 | super.onCreate(savedInstanceState)
19 | val binding = ActivityMainBinding.inflate(layoutInflater)
20 | ViewCompat.setOnApplyWindowInsetsListener(binding.getRoot()) { v, windowInsets ->
21 | val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
22 | v.updateLayoutParams {
23 | bottomMargin = insets.bottom
24 | topMargin = insets.top
25 | }
26 | WindowInsetsCompat.CONSUMED
27 | }
28 | setContentView(binding.getRoot())
29 |
30 | binding.usageInfo.movementMethod = LinkMovementMethod.getInstance()
31 | binding.osmInfo.movementMethod = LinkMovementMethod.getInstance()
32 | binding.offlineMaps.movementMethod = LinkMovementMethod.getInstance()
33 | binding.versionInfo.text = Html.fromHtml(
34 | getString(
35 | R.string.version_info,
36 | BuildConfig.BUILD_TYPE,
37 | BuildConfig.VERSION_NAME,
38 | BuildConfig.VERSION_CODE
39 | ), Html.FROM_HTML_MODE_COMPACT
40 | )
41 |
42 | @Suppress("KotlinConstantConditions")
43 | if (BuildConfig.offline) {
44 | binding.offlineVersionInfo.visibility = View.VISIBLE
45 | binding.offlineMapInfo.visibility = View.GONE
46 | }
47 | }
48 |
49 | override fun onNewIntent(intent: Intent) {
50 | super.onNewIntent(intent)
51 | }
52 |
53 | }
54 |
--------------------------------------------------------------------------------
/src/main/kotlin/de/storchp/opentracks/osmplugin/Startup.kt:
--------------------------------------------------------------------------------
1 | package de.storchp.opentracks.osmplugin
2 |
3 | import android.annotation.SuppressLint
4 | import android.app.Application
5 | import android.content.Context
6 | import android.os.Build
7 | import android.util.Log
8 | import com.google.android.material.color.DynamicColors
9 | import de.storchp.opentracks.osmplugin.utils.ExceptionHandler
10 | import de.storchp.opentracks.osmplugin.utils.PreferencesUtils
11 | import java.lang.Exception
12 |
13 | private val TAG: String = Startup::class.java.getSimpleName()
14 |
15 | /**
16 | * Code that is executed when the application starts.
17 | *
18 | *
19 | * NOTE: How often actual application startup happens depends on the OS.
20 | * Not every start of an activity will trigger this.
21 | */
22 | class Startup : Application() {
23 | override fun onCreate() {
24 | super.onCreate()
25 |
26 | //Include version information into stack traces.
27 | Log.i(
28 | TAG,
29 | "${BuildConfig.APPLICATION_ID}; BuildType: ${BuildConfig.BUILD_TYPE}; VersionName: ${BuildConfig.VERSION_NAME}/ VersionCode: ${BuildConfig.VERSION_CODE}"
30 | )
31 |
32 | PreferencesUtils.initPreferences(this)
33 | PreferencesUtils.applyNightMode()
34 | if (PreferencesUtils.shouldUseDynamicColors()) {
35 | DynamicColors.applyToActivitiesIfAvailable(this)
36 | }
37 | }
38 |
39 | override fun attachBaseContext(base: Context?) {
40 | super.attachBaseContext(base)
41 |
42 | // handle crashes only outside the crash reporter activity/process
43 | if (!isCrashReportingProcess()) {
44 | Thread.setDefaultUncaughtExceptionHandler(
45 | ExceptionHandler(this, Thread.getDefaultUncaughtExceptionHandler())
46 | )
47 | }
48 | }
49 |
50 | private fun isCrashReportingProcess(): Boolean {
51 | var processName: String? = ""
52 | if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) {
53 | // Using the same technique as Application.getProcessName() for older devices
54 | // Using reflection since ActivityThread is an internal API
55 | try {
56 | @SuppressLint("PrivateApi") val activityThread =
57 | Class.forName("android.app.ActivityThread")
58 | @SuppressLint("DiscouragedPrivateApi") val getProcessName =
59 | activityThread.getDeclaredMethod("currentProcessName")
60 | processName = getProcessName.invoke(null) as String?
61 | } catch (_: Exception) {
62 | }
63 | } else {
64 | processName = getProcessName()
65 | }
66 | return processName != null && processName.endsWith(":crash")
67 | }
68 |
69 | }
70 |
--------------------------------------------------------------------------------
/src/main/kotlin/de/storchp/opentracks/osmplugin/download/DownloadItemType.kt:
--------------------------------------------------------------------------------
1 | package de.storchp.opentracks.osmplugin.download
2 |
3 | import de.storchp.opentracks.osmplugin.R
4 |
5 | enum class DownloadItemType(val iconResId: Int, val alt: String) {
6 | SUBDIR(R.drawable.baseline_folder_24, "[DIR]"),
7 | MAP(R.drawable.baseline_map_24, "[ ]");
8 | }
9 |
10 | fun String.toDownloadItemType() =
11 | DownloadItemType.entries
12 | .filter { downloadItemType: DownloadItemType? -> downloadItemType!!.alt == this }
13 | .firstOrNull()
14 |
--------------------------------------------------------------------------------
/src/main/kotlin/de/storchp/opentracks/osmplugin/download/DownloadMapItem.kt:
--------------------------------------------------------------------------------
1 | package de.storchp.opentracks.osmplugin.download
2 |
3 | import android.net.Uri
4 |
5 | data class DownloadMapItem(
6 | val downloadItemType: DownloadItemType,
7 | val name: String,
8 | val date: String?,
9 | val size: String,
10 | val uri: Uri,
11 | ) : Comparable {
12 | override fun toString() = this.name
13 |
14 | override fun compareTo(o: DownloadMapItem) =
15 | if (downloadItemType != o.downloadItemType) {
16 | downloadItemType.compareTo(o.downloadItemType)
17 | } else {
18 | name.compareTo(o.name)
19 | }
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/src/main/kotlin/de/storchp/opentracks/osmplugin/download/DownloadMapItemAdapter.kt:
--------------------------------------------------------------------------------
1 | package de.storchp.opentracks.osmplugin.download
2 |
3 | import android.app.Activity
4 | import android.view.View
5 | import android.view.ViewGroup
6 | import android.widget.ArrayAdapter
7 | import androidx.core.content.ContextCompat
8 | import de.storchp.opentracks.osmplugin.R
9 | import de.storchp.opentracks.osmplugin.databinding.DownloadItemBinding
10 |
11 | class DownloadMapItemAdapter(
12 | private val context: Activity,
13 | private val items: MutableList
14 | ) : ArrayAdapter(context, R.layout.map_item, items) {
15 |
16 | override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
17 | var rowView = convertView
18 | // reuse views
19 | if (rowView == null) {
20 | val binding = DownloadItemBinding.inflate(context.layoutInflater, parent, false)
21 | rowView = binding.getRoot()
22 | rowView.tag = binding
23 | }
24 |
25 | // fill data
26 | val binding = rowView.tag as DownloadItemBinding
27 | val item = this.items[position]
28 | binding.name.text = item.name
29 | binding.date.text = item.date
30 | binding.size.text = item.size
31 | binding.mapIcon.setImageDrawable(
32 | ContextCompat.getDrawable(context, item.downloadItemType.iconResId)
33 | )
34 |
35 | return rowView
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/src/main/kotlin/de/storchp/opentracks/osmplugin/map/MapMode.kt:
--------------------------------------------------------------------------------
1 | package de.storchp.opentracks.osmplugin.map
2 |
3 | import java.lang.IllegalArgumentException
4 |
5 | enum class MapMode {
6 | NORTH {
7 | override fun getBearing(movementDirection: MovementDirection) = 0f
8 | },
9 | DIRECTION {
10 | override fun getBearing(movementDirection: MovementDirection) =
11 | -1f * movementDirection.currentDegrees
12 | };
13 |
14 | abstract fun getBearing(movementDirection: MovementDirection): Float
15 | }
16 |
17 | fun String.toMapMode(defaultValue: MapMode) =
18 | try {
19 | MapMode.valueOf(this)
20 | } catch (_: IllegalArgumentException) {
21 | defaultValue
22 | }
23 |
24 |
--------------------------------------------------------------------------------
/src/main/kotlin/de/storchp/opentracks/osmplugin/map/MovementDirection.kt:
--------------------------------------------------------------------------------
1 | package de.storchp.opentracks.osmplugin.map
2 |
3 | import org.oscim.core.GeoPoint
4 |
5 | class MovementDirection {
6 | private var secondToLastPos: GeoPoint? = null
7 | var currentDegrees = 0f
8 | private set
9 |
10 | fun updatePos(endPos: GeoPoint?) {
11 | if (endPos != null && endPos != secondToLastPos) {
12 | currentDegrees = MapUtils.bearingInDegrees(secondToLastPos, endPos)
13 | secondToLastPos = endPos
14 | } else {
15 | currentDegrees = 0f
16 | }
17 | }
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/src/main/kotlin/de/storchp/opentracks/osmplugin/map/SpeedColors.kt:
--------------------------------------------------------------------------------
1 | package de.storchp.opentracks.osmplugin.map
2 |
3 | data class SpeedColors(val low: Int, val average: Int, val high: Int)
4 |
--------------------------------------------------------------------------------
/src/main/kotlin/de/storchp/opentracks/osmplugin/map/TrackColorMode.kt:
--------------------------------------------------------------------------------
1 | package de.storchp.opentracks.osmplugin.map
2 |
3 | val DEFAULT_TRACK_COLOR_MODE: TrackColorMode = TrackColorMode.BY_TRACK
4 |
5 | enum class TrackColorMode(val supportsLiveTrack: Boolean) {
6 | UNI(true),
7 | BY_TRACK(true),
8 | BY_SPEED(false);
9 | }
10 |
--------------------------------------------------------------------------------
/src/main/kotlin/de/storchp/opentracks/osmplugin/map/model/Track.kt:
--------------------------------------------------------------------------------
1 | package de.storchp.opentracks.osmplugin.map.model
2 |
3 | import java.time.Instant
4 | import kotlin.time.Duration
5 |
6 | data class Track(
7 | val id: Long,
8 | val name: String? = null,
9 | val description: String? = null,
10 | val category: String? = null,
11 | val startTime: Instant? = null,
12 | val stopTime: Instant? = null,
13 | val totalDistanceMeter: Double,
14 | val totalTime: Duration? = null,
15 | val movingTime: Duration? = null,
16 | val avgSpeedMeterPerSecond: Double? = null,
17 | val avgMovingSpeedMeterPerSecond: Double? = null,
18 | val maxSpeedMeterPerSecond: Double? = null,
19 | val minElevationMeter: Double? = null,
20 | val maxElevationMeter: Double? = null,
21 | val elevationGainMeter: Double? = null,
22 | )
23 |
--------------------------------------------------------------------------------
/src/main/kotlin/de/storchp/opentracks/osmplugin/map/model/Trackpoint.kt:
--------------------------------------------------------------------------------
1 | package de.storchp.opentracks.osmplugin.map.model
2 |
3 | import org.oscim.core.GeoPoint
4 | import java.time.Instant
5 |
6 | const val TRACKPOINT_TYPE_TRACKPOINT = 0
7 | const val TRACKPOINT_TYPE_PAUSE = 3
8 |
9 | data class Trackpoint(
10 | val trackId: Long? = null,
11 | val id: Long? = null,
12 | val latLong: GeoPoint,
13 | val type: Int = TRACKPOINT_TYPE_TRACKPOINT,
14 | val speed: Double? = null,
15 | val time: Instant? = null,
16 | val elevation: Double? = null,
17 | val name: String? = null,
18 | ) {
19 | val isPause = type == TRACKPOINT_TYPE_PAUSE
20 | }
21 |
--------------------------------------------------------------------------------
/src/main/kotlin/de/storchp/opentracks/osmplugin/map/model/TrackpointsBySegments.kt:
--------------------------------------------------------------------------------
1 | package de.storchp.opentracks.osmplugin.map.model
2 |
3 | data class TrackpointsBySegments(
4 | val segments: List>,
5 | val debug: TrackpointsDebug,
6 | ) : List> by segments {
7 |
8 | fun calcAverageSpeed() = speeds().average()
9 |
10 | fun calcMaxSpeed() = speeds().maxOrNull() ?: 0.0
11 |
12 | private fun speeds() = segments
13 | .flatMap { it }
14 | .map { it.speed ?: 0.0 }
15 | .filter { it > 0 }
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/src/main/kotlin/de/storchp/opentracks/osmplugin/map/model/TrackpointsDebug.kt:
--------------------------------------------------------------------------------
1 | package de.storchp.opentracks.osmplugin.map.model
2 |
3 | data class TrackpointsDebug(
4 | var trackpointsReceived: Int = 0,
5 | var trackpointsInvalid: Int = 0,
6 | var trackpointsDrawn: Int = 0,
7 | var trackpointsPause: Int = 0,
8 | var segments: Int = 0,
9 | var protocolVersion: Int = 0,
10 | ) {
11 | fun add(other: TrackpointsDebug) {
12 | this.trackpointsReceived += other.trackpointsReceived
13 | this.trackpointsInvalid += other.trackpointsInvalid
14 | this.trackpointsDrawn += other.trackpointsDrawn
15 | this.trackpointsPause += other.trackpointsPause
16 | this.segments += other.segments
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/main/kotlin/de/storchp/opentracks/osmplugin/map/model/Waypoint.kt:
--------------------------------------------------------------------------------
1 | package de.storchp.opentracks.osmplugin.map.model
2 |
3 | import org.oscim.core.GeoPoint
4 |
5 | data class Waypoint(
6 | val id: Long? = null,
7 | val name: String? = null,
8 | val description: String? = null,
9 | val category: String? = null,
10 | val icon: String? = null,
11 | val trackId: Long? = null,
12 | val latLong: GeoPoint,
13 | val photoUrl: String? = null,
14 | )
15 |
--------------------------------------------------------------------------------
/src/main/kotlin/de/storchp/opentracks/osmplugin/map/reader/APIConstants.kt:
--------------------------------------------------------------------------------
1 | package de.storchp.opentracks.osmplugin.map.reader
2 |
3 | import android.net.Uri
4 |
5 | object APIConstants {
6 | const val LAT_LON_FACTOR = 1E6
7 |
8 | // NOTE: Needs to be used in AndroidManifest.xml!
9 | const val ACTION_DASHBOARD = "Intent.OpenTracks-Dashboard"
10 |
11 | const val ACTION_DASHBOARD_PAYLOAD = "$ACTION_DASHBOARD.Payload"
12 |
13 | fun getTracksUri(uris: List) = uris[0]
14 |
15 | fun getTrackpointsUri(uris: List) = uris[1]
16 |
17 | /**
18 | * Waypoints are only available in newer versions of OpenTracks.
19 | */
20 | fun getWaypointsUri(uris: List) = uris.getOrNull(2)
21 | }
22 |
--------------------------------------------------------------------------------
/src/main/kotlin/de/storchp/opentracks/osmplugin/map/reader/GeoUriReader.kt:
--------------------------------------------------------------------------------
1 | package de.storchp.opentracks.osmplugin.map.reader
2 |
3 | import android.content.Intent
4 | import de.storchp.opentracks.osmplugin.map.MapData
5 | import de.storchp.opentracks.osmplugin.map.model.Waypoint
6 | import org.oscim.core.GeoPoint
7 | import java.net.URLDecoder
8 | import java.util.regex.Pattern
9 |
10 | private val NAME_PATTERN: Pattern = Pattern.compile("[+\\s]*\\((.*)\\)[+\\s]*$")
11 | private val POSITION_PATTERN: Pattern = Pattern.compile(
12 | "([+-]?\\d+(?:\\.\\d+)?),\\s?([+-]?\\d+(?:\\.\\d+)?)"
13 | )
14 | private val QUERY_POSITION_PATTERN: Pattern =
15 | Pattern.compile("q=([+-]?\\d+(?:\\.\\d+)?),\\s?([+-]?\\d+(?:\\.\\d+)?)")
16 |
17 | class GeoUriReader(
18 | intent: Intent,
19 | mapData: MapData,
20 | updateTrackStatistics: UpdateTrackStatistics,
21 | updateTrackpointsDebug: UpdateTrackpointsDebug,
22 | ) : MapDataReader(mapData, updateTrackStatistics, updateTrackpointsDebug) {
23 |
24 | init {
25 | require(intent.isGeoIntent())
26 |
27 | val waypoint = fromGeoUri(intent.data.toString())
28 | readWaypoints(listOf(waypoint))
29 | mapData.updateMapPositionAndZoomLevel(waypoint.latLong, 15)
30 | }
31 |
32 | }
33 |
34 | fun fromGeoUri(uri: String): Waypoint {
35 | var schemeSpecific = uri.substring(uri.indexOf(":") + 1)
36 |
37 | var name: String? = null
38 | val nameMatcher = NAME_PATTERN.matcher(schemeSpecific)
39 | if (nameMatcher.find()) {
40 | name = URLDecoder.decode(nameMatcher.group(1), "UTF-8")
41 | if (name != null) {
42 | schemeSpecific = schemeSpecific.substring(0, nameMatcher.start())
43 | }
44 | }
45 |
46 | var positionPart = schemeSpecific
47 | var queryPart = ""
48 | val queryStartIndex = schemeSpecific.indexOf('?')
49 | if (queryStartIndex != -1) {
50 | positionPart = schemeSpecific.substring(0, queryStartIndex)
51 | queryPart = schemeSpecific.substring(queryStartIndex + 1)
52 | }
53 |
54 | val positionMatcher = POSITION_PATTERN.matcher(positionPart)
55 | var lat = 0.0
56 | var lon = 0.0
57 | if (positionMatcher.find()) {
58 | lat = positionMatcher.group(1)!!.toDouble()
59 | lon = positionMatcher.group(2)!!.toDouble()
60 | }
61 |
62 | val queryPositionMatcher = QUERY_POSITION_PATTERN.matcher(queryPart)
63 | if (queryPositionMatcher.find()) {
64 | lat = queryPositionMatcher.group(1)!!.toDouble()
65 | lon = queryPositionMatcher.group(2)!!.toDouble()
66 | }
67 |
68 | return Waypoint(latLong = GeoPoint(lat, lon), name = name)
69 | }
70 |
71 | fun Intent.isGeoIntent() = "geo" == scheme && data != null
--------------------------------------------------------------------------------
/src/main/kotlin/de/storchp/opentracks/osmplugin/map/reader/GpxReader.kt:
--------------------------------------------------------------------------------
1 | package de.storchp.opentracks.osmplugin.map.reader
2 |
3 | import android.content.ContentResolver
4 | import androidx.documentfile.provider.DocumentFile
5 | import de.storchp.opentracks.osmplugin.map.MapData
6 | import javax.xml.parsers.SAXParserFactory
7 |
8 | class GpxReader(
9 | files: List,
10 | contentResolver: ContentResolver,
11 | mapData: MapData,
12 | updateTrackStatistics: UpdateTrackStatistics,
13 | updateTrackpointsDebug: UpdateTrackpointsDebug,
14 | ) : MapDataReader(mapData, updateTrackStatistics, updateTrackpointsDebug) {
15 |
16 | init {
17 | val gpxParser = GpxParser()
18 | files.forEach { file ->
19 | contentResolver.openInputStream(file.uri).use { inputStream ->
20 | SAXParserFactory.newInstance().newSAXParser()
21 | .parse(inputStream, gpxParser)
22 | }
23 | }
24 | readTrackpoints(gpxParser.tracksBySegments, false, false)
25 | readWaypoints(gpxParser.waypoints)
26 | readTracks(gpxParser.tracks)
27 | }
28 |
29 | }
30 |
--------------------------------------------------------------------------------
/src/main/kotlin/de/storchp/opentracks/osmplugin/map/reader/WaypointReader.kt:
--------------------------------------------------------------------------------
1 | package de.storchp.opentracks.osmplugin.map.reader
2 |
3 | import android.content.ContentResolver
4 | import android.database.Cursor
5 | import android.net.Uri
6 | import de.storchp.opentracks.osmplugin.map.MapUtils
7 | import de.storchp.opentracks.osmplugin.map.model.Waypoint
8 | import org.oscim.core.GeoPoint
9 |
10 | object WaypointReader {
11 | const val ID = "_id"
12 | const val NAME = "name"
13 | const val DESCRIPTION = "description"
14 | const val CATEGORY = "category"
15 | const val ICON = "icon"
16 | const val TRACKID = "trackid"
17 | const val LONGITUDE = "longitude"
18 | const val LATITUDE = "latitude"
19 | const val PHOTOURL = "photoUrl"
20 |
21 | val PROJECTION = arrayOf(
22 | ID,
23 | NAME,
24 | DESCRIPTION,
25 | CATEGORY,
26 | ICON,
27 | TRACKID,
28 | LATITUDE,
29 | LONGITUDE,
30 | PHOTOURL
31 | )
32 |
33 | /**
34 | * Reads the Waypoints from the Content Uri.
35 | */
36 | fun readWaypoints(
37 | resolver: ContentResolver,
38 | data: Uri,
39 | lastWaypointId: Long?
40 | ) = buildList {
41 | resolver.query(data, PROJECTION, null, null, null).use { cursor ->
42 | while (cursor!!.moveToNext()) {
43 | readWaypointFromCursor(cursor, lastWaypointId)?.let(::add)
44 | }
45 | }
46 | }
47 |
48 | private fun readWaypointFromCursor(cursor: Cursor, lastWaypointId: Long?): Waypoint? {
49 | val waypointId = cursor.getLong(cursor.getColumnIndexOrThrow(ID))
50 | if (lastWaypointId != null && lastWaypointId >= waypointId) { // skip waypoints we already have
51 | return null
52 | }
53 | val name = cursor.getString(cursor.getColumnIndexOrThrow(NAME))
54 | val description =
55 | cursor.getString(cursor.getColumnIndexOrThrow(DESCRIPTION))
56 | val category = cursor.getString(cursor.getColumnIndexOrThrow(CATEGORY))
57 | val icon = cursor.getString(cursor.getColumnIndexOrThrow(ICON))
58 | val trackId = cursor.getLong(cursor.getColumnIndexOrThrow(TRACKID))
59 | val latitude =
60 | cursor.getInt(cursor.getColumnIndexOrThrow(LATITUDE)) / APIConstants.LAT_LON_FACTOR
61 | val longitude =
62 | cursor.getInt(cursor.getColumnIndexOrThrow(LONGITUDE)) / APIConstants.LAT_LON_FACTOR
63 | val photoUrl = cursor.getString(cursor.getColumnIndexOrThrow(PHOTOURL))
64 |
65 | return if (MapUtils.isValid(latitude, longitude)) {
66 | val latLong = GeoPoint(latitude, longitude)
67 | Waypoint(
68 | waypointId,
69 | name,
70 | description,
71 | category,
72 | icon,
73 | trackId,
74 | latLong,
75 | photoUrl
76 | )
77 | } else {
78 | null
79 | }
80 | }
81 |
82 | }
83 |
--------------------------------------------------------------------------------
/src/main/kotlin/de/storchp/opentracks/osmplugin/settings/FileItem.kt:
--------------------------------------------------------------------------------
1 | package de.storchp.opentracks.osmplugin.settings
2 |
3 | import android.net.Uri
4 | import androidx.documentfile.provider.DocumentFile
5 | import java.io.File
6 |
7 | data class FileItem(
8 | val name: String,
9 | val uri: Uri?,
10 | val file: File? = null,
11 | val documentFile: DocumentFile? = null
12 | ) {
13 | override fun toString() = this.name
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/src/main/kotlin/de/storchp/opentracks/osmplugin/settings/MapItemAdapter.kt:
--------------------------------------------------------------------------------
1 | package de.storchp.opentracks.osmplugin.settings
2 |
3 | import android.app.Activity
4 | import android.net.Uri
5 | import android.view.View
6 | import android.view.ViewGroup
7 | import android.widget.ArrayAdapter
8 | import android.widget.CheckBox
9 | import de.storchp.opentracks.osmplugin.BuildConfig
10 | import de.storchp.opentracks.osmplugin.R
11 | import de.storchp.opentracks.osmplugin.databinding.MapItemBinding
12 |
13 | class MapItemAdapter(
14 | private val context: Activity,
15 | private val items: List,
16 | private var selected: Set
17 | ) : ArrayAdapter(context, R.layout.map_item, items.toMutableList()) {
18 |
19 | override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
20 | var rowView = convertView
21 | // reuse views
22 | if (rowView == null) {
23 | val binding = MapItemBinding.inflate(context.layoutInflater, parent, false)
24 | rowView = binding.getRoot()
25 | rowView.tag = binding
26 | }
27 |
28 | // fill data
29 | val binding = rowView.tag as MapItemBinding
30 | val item = getItem(position)
31 | binding.name.text = item?.name
32 | binding.checkbox.setChecked(
33 | @Suppress("KotlinConstantConditions")
34 | if (position == 0 && !BuildConfig.offline) selected.isEmpty() else selected.contains(
35 | item?.uri
36 | )
37 | )
38 | binding.checkbox.setOnClickListener(onStateChangedListener(binding.checkbox, position))
39 |
40 | return rowView
41 | }
42 |
43 | private fun onStateChangedListener(checkBox: CheckBox, position: Int): View.OnClickListener {
44 | return View.OnClickListener {
45 | getItem(position)?.let { fileItem ->
46 | if (checkBox.isChecked) {
47 | selected = if (fileItem.uri == null) { // online map
48 | setOf()
49 | } else {
50 | selected + fileItem.uri
51 | }
52 | } else if (fileItem.uri != null) { // offline map
53 | selected = selected - fileItem.uri
54 | }
55 | notifyDataSetChanged()
56 | }
57 | }
58 | }
59 |
60 | fun getSelectedUris() =
61 | selected.filter { uri ->
62 | items.any { item -> uri == item.uri }
63 | }.toSet()
64 | }
65 |
--------------------------------------------------------------------------------
/src/main/kotlin/de/storchp/opentracks/osmplugin/settings/ThemeItemAdapter.kt:
--------------------------------------------------------------------------------
1 | package de.storchp.opentracks.osmplugin.settings
2 |
3 | import android.app.Activity
4 | import android.net.Uri
5 | import android.view.View
6 | import android.view.ViewGroup
7 | import android.widget.ArrayAdapter
8 | import android.widget.RadioButton
9 | import de.storchp.opentracks.osmplugin.R
10 | import de.storchp.opentracks.osmplugin.databinding.ThemeItemBinding
11 |
12 | class ThemeItemAdapter(
13 | private val context: Activity,
14 | var selectedUri: Uri?,
15 | private val onlineMapSelected: Boolean
16 | ) : ArrayAdapter(context, R.layout.map_item, mutableListOf()) {
17 |
18 | override fun areAllItemsEnabled(): Boolean {
19 | return false
20 | }
21 |
22 | override fun isEnabled(position: Int): Boolean {
23 | return !onlineMapSelected || position == 0
24 | }
25 |
26 | override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
27 | var rowView = convertView
28 | // reuse views
29 | if (rowView == null) {
30 | val binding = ThemeItemBinding.inflate(context.layoutInflater, parent, false)
31 | rowView = binding.getRoot()
32 | rowView.tag = binding
33 | }
34 |
35 | // fill data
36 | val binding = rowView.tag as ThemeItemBinding
37 | getItem(position)?.let { item ->
38 | binding.name.text = item.name
39 | binding.name.setEnabled(isEnabled(position))
40 | binding.radiobutton.setChecked(if (position == 0) selectedUri == null else item.uri != null && item.uri == selectedUri)
41 | binding.radiobutton.setOnClickListener(
42 | onClickListener(
43 | binding.radiobutton,
44 | position
45 | )
46 | )
47 | binding.radiobutton.setEnabled(isEnabled(position))
48 | }
49 |
50 | return rowView
51 | }
52 |
53 | private fun onClickListener(
54 | radioButton: RadioButton,
55 | position: Int
56 | ) = View.OnClickListener {
57 | getItem(position)?.let { fileItem ->
58 | if (radioButton.isChecked) {
59 | selectedUri = fileItem.uri
60 | } else {
61 | if (fileItem.uri != null) { // offline theme
62 | selectedUri = null
63 | }
64 | }
65 | notifyDataSetChanged()
66 | }
67 | }
68 |
69 | }
70 |
--------------------------------------------------------------------------------
/src/main/kotlin/de/storchp/opentracks/osmplugin/utils/ExceptionHandler.kt:
--------------------------------------------------------------------------------
1 | package de.storchp.opentracks.osmplugin.utils
2 |
3 | import android.content.Context
4 | import android.content.Intent
5 | import android.os.Build
6 | import de.storchp.opentracks.osmplugin.BuildConfig
7 | import de.storchp.opentracks.osmplugin.EXTRA_ERROR_TEXT
8 | import de.storchp.opentracks.osmplugin.ShowErrorActivity
9 | import java.io.PrintWriter
10 | import java.io.StringWriter
11 | import java.lang.Exception
12 |
13 | class ExceptionHandler(
14 | private val context: Context,
15 | private val defaultExceptionHandler: Thread.UncaughtExceptionHandler?
16 | ) : Thread.UncaughtExceptionHandler {
17 |
18 | override fun uncaughtException(thread: Thread, exception: Throwable) {
19 | try {
20 | val errorReport = generateErrorReport(formatException(thread, exception))
21 | val intent = Intent(context, ShowErrorActivity::class.java)
22 | intent.putExtra(EXTRA_ERROR_TEXT, errorReport)
23 | intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
24 | context.startActivity(intent)
25 | // Pass exception to OS for graceful handling - OS will report it via ADB
26 | // and close all activities and services.
27 | defaultExceptionHandler?.uncaughtException(thread, exception)
28 | } catch (fatalException: Exception) {
29 | // do not recurse into custom handler if exception is thrown during
30 | // exception handling. Pass this ultimate fatal exception to OS
31 | defaultExceptionHandler?.uncaughtException(thread, fatalException)
32 | }
33 | }
34 |
35 | private fun formatException(thread: Thread, exception: Throwable) =
36 | buildString {
37 | append("Exception in thread \"${thread.name}\": ")
38 |
39 | // print available stacktrace
40 | val writer = StringWriter()
41 | exception.printStackTrace(PrintWriter(writer))
42 | append(writer)
43 | }
44 |
45 | private fun generateErrorReport(stackTrace: String) =
46 | """
47 | ### App information
48 | * ID: ${BuildConfig.APPLICATION_ID}
49 | * Version: ${BuildConfig.VERSION_CODE} ${BuildConfig.VERSION_NAME}
50 | * Build flavor: ${BuildConfig.FLAVOR}
51 |
52 | ### Device information
53 | * Brand: ${Build.BRAND}
54 | * Device: ${Build.DEVICE}
55 | * Model: ${Build.MODEL}
56 | * Id: ${Build.ID}
57 | * Product: ${Build.PRODUCT}
58 |
59 | ### Firmware
60 | * SDK: ${Build.VERSION.SDK_INT}
61 | * Release: ${Build.VERSION.RELEASE}
62 | * Incremental: ${Build.VERSION.INCREMENTAL}
63 |
64 | ### Cause of error
65 | ```java
66 | $stackTrace
67 | ```
68 | """.trimIndent()
69 |
70 | }
71 |
--------------------------------------------------------------------------------
/src/main/kotlin/de/storchp/opentracks/osmplugin/utils/FileUtil.kt:
--------------------------------------------------------------------------------
1 | package de.storchp.opentracks.osmplugin.utils
2 |
3 | import android.content.Context
4 | import android.net.Uri
5 | import android.util.Log
6 | import androidx.documentfile.provider.DocumentFile
7 | import java.io.File
8 | import java.lang.Exception
9 |
10 | object FileUtil {
11 | private val TAG: String = FileUtil::class.java.getSimpleName()
12 |
13 | fun getDocumentFileFromTreeUri(context: Context, uri: Uri) =
14 | try {
15 | DocumentFile.fromTreeUri(context, uri)
16 | } catch (_: Exception) {
17 | Log.w(TAG, "Error getting DocumentFile from Uri: $uri")
18 | null
19 | }
20 |
21 | fun getFilenameFromUri(context: Context, uri: Uri): String? {
22 | if ("file" == uri.scheme) {
23 | val file = File(uri.path!!)
24 | if (file.exists()) {
25 | return file.getName()
26 | }
27 | } else {
28 | val documentFile = getDocumentFileFromTreeUri(context, uri)
29 | if (documentFile != null && documentFile.exists()) {
30 | return documentFile.name
31 | }
32 | }
33 | return null
34 | }
35 |
36 | fun createBinaryDocumentFile(context: Context, destinationDir: Uri, filename: String) =
37 | getDocumentFileFromTreeUri(context, destinationDir)
38 | ?.createFile("application/binary", filename)
39 | ?: throw RuntimeException("Unable to create file: $filename")
40 |
41 | }
42 |
--------------------------------------------------------------------------------
/src/main/kotlin/de/storchp/opentracks/osmplugin/utils/StatisticElement.kt:
--------------------------------------------------------------------------------
1 | package de.storchp.opentracks.osmplugin.utils
2 |
3 | import android.content.Context
4 | import de.storchp.opentracks.osmplugin.R
5 | import de.storchp.opentracks.osmplugin.map.model.TrackStatistics
6 | import java.lang.IllegalArgumentException
7 |
8 | enum class StatisticElement {
9 | CATEGORY {
10 | override fun getText(context: Context, statistics: TrackStatistics): String? {
11 | return statistics.category?.let { context.getString(R.string.stat_category, it) }
12 | }
13 | },
14 | TOTAL_TIME {
15 | override fun getText(context: Context, statistics: TrackStatistics): String? {
16 | return statistics.totalTime?.let {
17 | StringUtils.formatElapsedTimeHoursMinutes(context, it)
18 | }
19 | }
20 | },
21 | MOVING_TIME {
22 | override fun getText(context: Context, statistics: TrackStatistics): String? {
23 | return statistics.movingTime?.let {
24 | StringUtils.formatElapsedTimeHoursMinutes(context, it)
25 | }
26 | }
27 | },
28 | DISTANCE_KM {
29 | override fun getText(context: Context, statistics: TrackStatistics): String {
30 | return StringUtils.formatDistanceInKm(context, statistics.totalDistanceMeter)
31 | }
32 | },
33 | DISTANCE_MI {
34 | override fun getText(context: Context, statistics: TrackStatistics): String {
35 | return StringUtils.formatDistanceInMi(context, statistics.totalDistanceMeter)
36 | }
37 | },
38 | SPEED_KM_H {
39 | override fun getText(context: Context, statistics: TrackStatistics): String? {
40 | return statistics.avgMovingSpeedMeterPerSecond?.let {
41 | StringUtils.formatSpeedInKmPerHour(context, it)
42 | }
43 | }
44 | },
45 | PACE_MIN_KM {
46 | override fun getText(context: Context, statistics: TrackStatistics): String? {
47 | return statistics.avgMovingSpeedMeterPerSecond?.let {
48 | StringUtils.formatPaceMinPerKm(context, it)
49 | }
50 | }
51 | },
52 | SPEED_MI_H {
53 | override fun getText(context: Context, statistics: TrackStatistics): String? {
54 | return statistics.avgMovingSpeedMeterPerSecond?.let {
55 | StringUtils.formatSpeedInMiPerHour(context, it)
56 | }
57 | }
58 | },
59 | PACE_MIN_MI {
60 | override fun getText(context: Context, statistics: TrackStatistics): String? {
61 | return statistics.avgMovingSpeedMeterPerSecond?.let {
62 | StringUtils.formatPaceMinPerMi(context, it)
63 | }
64 | }
65 | },
66 | ELEVATION_GAIN_METER {
67 | override fun getText(context: Context, statistics: TrackStatistics): String? {
68 | return statistics.elevationGainMeter?.let {
69 | StringUtils.formatAltitudeChangeInMeter(context, it)
70 | }
71 | }
72 | },
73 | ELEVATION_GAIN_FEET {
74 | override fun getText(context: Context, statistics: TrackStatistics): String? {
75 | return statistics.elevationGainMeter?.let {
76 | StringUtils.formatAltitudeChangeInFeet(context, it)
77 | }
78 | }
79 | };
80 |
81 | abstract fun getText(context: Context, statistics: TrackStatistics): String?
82 |
83 | }
84 |
85 | fun String.toStatisticElement() =
86 | try {
87 | StatisticElement.valueOf(this)
88 | } catch (_: IllegalArgumentException) {
89 | null
90 | }
--------------------------------------------------------------------------------
/src/main/kotlin/de/storchp/opentracks/osmplugin/utils/UnitConversions.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2008 Google Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License"); you may not
5 | * use this file except in compliance with the License. You may obtain a copy of
6 | * the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12 | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13 | * License for the specific language governing permissions and limitations under
14 | * the License.
15 | */
16 | package de.storchp.opentracks.osmplugin.utils
17 |
18 | /**
19 | * Unit conversion constants.
20 | *
21 | * @author Sandor Dornbush
22 | */
23 | object UnitConversions {
24 | // multiplication factor to convert seconds to milliseconds
25 | const val S_TO_MS: Long = 1000
26 |
27 | // Time
28 | // multiplication factor to convert milliseconds to seconds
29 | const val MS_TO_S: Double = 1.0 / S_TO_MS
30 |
31 | // multiplication factor to convert minutes to seconds
32 | const val MIN_TO_S: Double = 60.0
33 |
34 | // multiplication factor to convert seconds to minutes
35 | const val S_TO_MIN: Double = 1 / MIN_TO_S
36 |
37 | // multiplication factor to convert hours to minutes
38 | const val HR_TO_MIN: Double = 60.0
39 |
40 | // multiplication factor to convert minutes to hours
41 | const val MIN_TO_HR: Double = 1 / HR_TO_MIN
42 |
43 | // multiplication factor to convert kilometers to miles
44 | const val KM_TO_MI: Double = 0.621371192
45 |
46 | // Distance
47 | // multiplication factor to convert miles to feet
48 | const val MI_TO_FT: Double = 5280.0
49 |
50 | // multiplication factor to covert kilometers to meters
51 | const val KM_TO_M: Double = 1000.0
52 |
53 | // multiplication factor to convert meters to kilometers
54 | const val M_TO_KM: Double = 1 / KM_TO_M
55 |
56 | // multiplication factor to convert meters to miles
57 | const val M_TO_MI: Double = M_TO_KM * KM_TO_MI
58 |
59 | // multiplication factor to convert meters to feet
60 | const val M_TO_FT: Double = M_TO_MI * MI_TO_FT
61 |
62 | // multiplication factor to convert meters per second to kilometers per hour
63 | const val MS_TO_KMH: Double = M_TO_KM / (S_TO_MIN * MIN_TO_HR)
64 |
65 | // Others
66 | // multiplication factor to convert degrees to radians
67 | const val DEG_TO_RAD: Double = Math.PI / 180.0
68 | }
69 |
--------------------------------------------------------------------------------
/src/main/res/drawable/baseline_folder_24.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/src/main/res/drawable/baseline_map_24.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/src/main/res/drawable/baseline_marker_end_34.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/src/main/res/drawable/baseline_marker_start_34.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/src/main/res/drawable/baseline_settings_24.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/src/main/res/drawable/baseline_style_24.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/src/main/res/drawable/ic_baseline_fullscreen_48.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/src/main/res/drawable/ic_baseline_fullscreen_exit_48.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/src/main/res/drawable/ic_baseline_share_24.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/src/main/res/drawable/ic_bug_report_24.xml:
--------------------------------------------------------------------------------
1 |
4 |
6 |
7 |
--------------------------------------------------------------------------------
/src/main/res/drawable/ic_compass.xml:
--------------------------------------------------------------------------------
1 |
7 |
9 |
10 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/src/main/res/drawable/ic_launcher_background.xml:
--------------------------------------------------------------------------------
1 |
6 |
11 |
12 |
18 |
19 |
20 |
28 |
29 |
30 |
38 |
39 |
40 |
48 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/src/main/res/drawable/ic_launcher_foreground.xml:
--------------------------------------------------------------------------------
1 |
7 |
12 |
16 |
17 |
23 |
26 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/src/main/res/drawable/ic_launcher_monochrome.xml:
--------------------------------------------------------------------------------
1 |
6 |
10 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/src/main/res/drawable/ic_logo_color_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
9 |
10 |
11 |
15 |
16 |
17 |
21 |
22 |
23 |
27 |
28 |
31 |
32 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/src/main/res/drawable/ic_marker_orange_pushpin_modern.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/src/main/res/drawable/ic_marker_pause_34.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/src/main/res/layout/activity_download.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
9 |
10 |
19 |
20 |
27 |
28 |
--------------------------------------------------------------------------------
/src/main/res/layout/activity_download_map_selection.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
9 |
10 |
20 |
21 |
27 |
28 |
--------------------------------------------------------------------------------
/src/main/res/layout/activity_map_selection.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
11 |
12 |
17 |
18 |
--------------------------------------------------------------------------------
/src/main/res/layout/activity_maps.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
11 |
12 |
--------------------------------------------------------------------------------
/src/main/res/layout/activity_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
10 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/src/main/res/layout/activity_show_error.xml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
8 |
13 |
14 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/main/res/layout/activity_theme_selection.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
11 |
12 |
22 |
23 |
29 |
30 |
--------------------------------------------------------------------------------
/src/main/res/layout/download_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
18 |
19 |
29 |
30 |
41 |
42 |
54 |
55 |
56 |
57 |
58 |
--------------------------------------------------------------------------------
/src/main/res/layout/map_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
14 |
15 |
24 |
25 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/src/main/res/layout/theme_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
14 |
15 |
24 |
25 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/src/main/res/layout/toolbar.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/main/res/layout/view_preference_switch.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/main/res/menu/show_error.xml:
--------------------------------------------------------------------------------
1 |
2 |
22 |
--------------------------------------------------------------------------------
/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/src/main/res/resources.properties:
--------------------------------------------------------------------------------
1 | unqualifiedResLocale=en-US
--------------------------------------------------------------------------------
/src/main/res/values/arrays.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - @string/map_mode_north_top
5 | - @string/map_mode_direction
6 |
7 |
8 | - NORTH
9 | - DIRECTION
10 |
11 |
12 |
13 | - @string/track_color_mode_uni
14 | - @string/track_color_mode_by_track
15 | - @string/track_color_mode_by_speed
16 |
17 |
18 | - UNI
19 | - BY_TRACK
20 | - BY_SPEED
21 |
22 |
23 |
24 | - @string/category
25 | - @string/total_time
26 | - @string/moving_time
27 | - @string/distance_km
28 | - @string/distance_mi
29 | - @string/speed_km_h
30 | - @string/pace_min_km
31 | - @string/speed_mi_h
32 | - @string/pace_min_mi
33 | - @string/elevation_meter
34 | - @string/elevation_feet
35 |
36 |
37 | - CATEGORY
38 | - TOTAL_TIME
39 | - MOVING_TIME
40 | - DISTANCE_KM
41 | - DISTANCE_MI
42 | - SPEED_KM_H
43 | - PACE_MIN_KM
44 | - SPEED_MI_H
45 | - PACE_MIN_MI
46 | - ELEVATION_GAIN_METER
47 | - ELEVATION_GAIN_FEET
48 |
49 |
50 | - CATEGORY
51 | - MOVING_TIME
52 | - DISTANCE_KM
53 | - PACE_MIN_KM
54 |
55 |
56 |
57 | - @string/night_mode_system_value
58 | - @string/night_mode_no_value
59 | - @string/night_mode_yes_value
60 |
61 |
62 | - @string/settings_night_mode_option_system
63 | - @string/settings_night_mode_option_day
64 | - @string/settings_night_mode_option_night
65 |
66 |
67 |
--------------------------------------------------------------------------------
/src/main/res/values/bools.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | false
4 | true
5 | true
6 | false
7 | false
8 |
--------------------------------------------------------------------------------
/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | #FF6D00
5 | #FF000000
6 |
7 | #02B8FC
8 | #FCF702
9 | #AE02FC
10 | #0231FC
11 | #02FCEC
12 | #FF0000
13 | #FFFF00
14 | #00FF00
15 |
16 |
--------------------------------------------------------------------------------
/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 2dp
4 | 6pt
5 | 16dp
6 | 72dp
7 |
8 |
--------------------------------------------------------------------------------
/src/main/res/values/integers.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 10
4 | 10
5 |
--------------------------------------------------------------------------------
/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
19 |
22 |
23 |
24 |
25 |
26 |
35 |
36 |
37 |
41 |
42 |
45 |
46 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/src/main/res/xml/backup_descriptor.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/src/main/res/xml/data_extraction_rules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/main/res/xml/file_paths.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
9 |
12 |
13 |
--------------------------------------------------------------------------------
/src/main/res/xml/network_security_config.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | download.mapsforge.org
5 |
6 |
--------------------------------------------------------------------------------
/src/nightly/ic_launcher-playstore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/src/nightly/ic_launcher-playstore.png
--------------------------------------------------------------------------------
/src/nightly/res/drawable-v24/ic_launcher_foreground.xml:
--------------------------------------------------------------------------------
1 |
7 |
11 |
15 |
16 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/src/nightly/res/drawable/ic_launcher_background.xml:
--------------------------------------------------------------------------------
1 |
6 |
10 |
11 |
13 |
19 |
20 |
21 |
23 |
31 |
32 |
33 |
35 |
43 |
44 |
45 |
47 |
55 |
56 |
57 |
58 |
--------------------------------------------------------------------------------
/src/nightly/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/src/nightly/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/src/nightly/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/src/nightly/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/src/nightly/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/src/nightly/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/src/nightly/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/src/nightly/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/src/nightly/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/src/nightly/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/src/nightly/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/src/nightly/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/src/nightly/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/src/nightly/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/src/nightly/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/src/nightly/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/src/nightly/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/src/nightly/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/src/nightly/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/src/nightly/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/src/nightly/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/src/nightly/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/src/nightly/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | OSM Dashboard (Nightly)
3 |
4 |
--------------------------------------------------------------------------------
/src/offline/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/src/offline/fastlane/metadata/android/ar/short_description.txt:
--------------------------------------------------------------------------------
1 | لوحة تحكم OpenStreetMap لـ OpenTracks بدون إذن الإنترنت
2 |
--------------------------------------------------------------------------------
/src/offline/fastlane/metadata/android/ar/title.txt:
--------------------------------------------------------------------------------
1 | لوحة تحكم OSM غير متصلة بالأنترنت ل OpenTracks
2 |
--------------------------------------------------------------------------------
/src/offline/fastlane/metadata/android/co/short_description.txt:
--------------------------------------------------------------------------------
1 | OpenStreetMap dashboard per OpenTracks senza permessu internet
2 |
--------------------------------------------------------------------------------
/src/offline/fastlane/metadata/android/co/title.txt:
--------------------------------------------------------------------------------
1 | OSM Dashboard fora di linea per OpenTracks
2 |
--------------------------------------------------------------------------------
/src/offline/fastlane/metadata/android/cs-CZ/short_description.txt:
--------------------------------------------------------------------------------
1 | OpenStreetMap nástěnka pro OpenTracks bez přístupu k internetu
2 |
--------------------------------------------------------------------------------
/src/offline/fastlane/metadata/android/cs-CZ/title.txt:
--------------------------------------------------------------------------------
1 | OSM Dashboard Offline pro OpenTracks
2 |
--------------------------------------------------------------------------------
/src/offline/fastlane/metadata/android/de-DE/short_description.txt:
--------------------------------------------------------------------------------
1 | OpenStreetMap Dashboards für OpenTracks ohne Internet-Berechtigung
2 |
--------------------------------------------------------------------------------
/src/offline/fastlane/metadata/android/de-DE/title.txt:
--------------------------------------------------------------------------------
1 | OSM Dashboard Offline für OpenTracks
2 |
--------------------------------------------------------------------------------
/src/offline/fastlane/metadata/android/en-US/images/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/src/offline/fastlane/metadata/android/en-US/images/icon.png
--------------------------------------------------------------------------------
/src/offline/fastlane/metadata/android/en-US/short_description.txt:
--------------------------------------------------------------------------------
1 | OpenStreetMap dashboard for OpenTracks without internet permission
2 |
--------------------------------------------------------------------------------
/src/offline/fastlane/metadata/android/en-US/title.txt:
--------------------------------------------------------------------------------
1 | OSM Dashboard Offline for OpenTracks
2 |
--------------------------------------------------------------------------------
/src/offline/fastlane/metadata/android/sv-SE/short_description.txt:
--------------------------------------------------------------------------------
1 | OpenStreetMap-instrumentpanel för OpenTracks utan interneträttighet
2 |
--------------------------------------------------------------------------------
/src/offline/fastlane/metadata/android/sv-SE/title.txt:
--------------------------------------------------------------------------------
1 | Ej uppkopplad OSM-instrumentpanel för OpenTracks
2 |
--------------------------------------------------------------------------------
/src/offline/ic_launcher-playstore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/src/offline/ic_launcher-playstore.png
--------------------------------------------------------------------------------
/src/offline/res/drawable-v24/ic_launcher_foreground.xml:
--------------------------------------------------------------------------------
1 |
7 |
11 |
15 |
16 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/src/offline/res/drawable/ic_launcher_background.xml:
--------------------------------------------------------------------------------
1 |
6 |
10 |
11 |
13 |
19 |
20 |
21 |
23 |
31 |
32 |
33 |
35 |
43 |
44 |
45 |
47 |
55 |
56 |
57 |
58 |
--------------------------------------------------------------------------------
/src/offline/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/src/offline/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/src/offline/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/src/offline/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/src/offline/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/src/offline/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/src/offline/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/src/offline/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/src/offline/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/src/offline/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/src/offline/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/src/offline/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/src/offline/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/src/offline/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/src/offline/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/src/offline/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/src/offline/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/src/offline/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/src/offline/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/src/offline/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/src/offline/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenTracksApp/OSMDashboard/99bb5d531d80e49387246f467c7d8b9918e40f20/src/offline/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/src/offline/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | OSM Dashboard (Offline)
3 |
4 |
--------------------------------------------------------------------------------
/src/test/java/android/util/Log.java:
--------------------------------------------------------------------------------
1 | package android.util;
2 |
3 | /**
4 | * Mock implementation for android.util.Log
5 | *
6 | * @noinspection unused
7 | */
8 | public class Log {
9 | public static int d(String tag, String msg) {
10 | System.out.println("DEBUG: " + tag + ": " + msg);
11 | return 0;
12 | }
13 |
14 | public static int i(String tag, String msg) {
15 | System.out.println("INFO: " + tag + ": " + msg);
16 | return 0;
17 | }
18 |
19 | public static int w(String tag, String msg) {
20 | System.out.println("WARN: " + tag + ": " + msg);
21 | return 0;
22 | }
23 |
24 | public static int e(String tag, String msg) {
25 | System.out.println("ERROR: " + tag + ": " + msg);
26 | return 0;
27 | }
28 |
29 | public static int e(String tag, String msg, Throwable tr) {
30 | System.out.println("ERROR: " + tag + ": " + msg);
31 | System.out.println(tr.toString());
32 | return 0;
33 | }
34 |
35 | }
--------------------------------------------------------------------------------
/src/test/kotlin/de/storchp/opentracks/osmplugin/map/model/TrackStatisticsTest.kt:
--------------------------------------------------------------------------------
1 | package de.storchp.opentracks.osmplugin.map.model
2 |
3 | import org.assertj.core.api.Assertions.assertThat
4 | import org.junit.jupiter.api.Test
5 | import java.time.Instant
6 | import kotlin.time.Duration.Companion.seconds
7 |
8 | class TrackStatisticsTest {
9 |
10 | @Test
11 | fun createSingleStatistic() {
12 | val stats = TrackStatistics(listOf(track1))
13 |
14 | assertThat(stats.category).isEqualTo(track1.category)
15 | assertThat(stats.startTime).isEqualTo(track1.startTime)
16 | assertThat(stats.stopTime).isEqualTo(track1.stopTime)
17 | assertThat(stats.totalDistanceMeter).isEqualTo(track1.totalDistanceMeter)
18 | assertThat(stats.movingTime).isEqualTo(track1.movingTime)
19 | assertThat(stats.avgSpeedMeterPerSecond).isEqualTo(track1.avgSpeedMeterPerSecond)
20 | assertThat(stats.avgMovingSpeedMeterPerSecond).isEqualTo(track1.avgMovingSpeedMeterPerSecond)
21 | assertThat(stats.maxSpeedMeterPerSecond).isEqualTo(track1.maxSpeedMeterPerSecond)
22 | assertThat(stats.minElevationMeter).isEqualTo(track1.minElevationMeter)
23 | assertThat(stats.maxElevationMeter).isEqualTo(track1.maxElevationMeter)
24 | assertThat(stats.elevationGainMeter).isEqualTo(track1.elevationGainMeter)
25 | }
26 |
27 | @Test
28 | fun createCombinedStatistic() {
29 | val stats = TrackStatistics(listOf(track1, track2))
30 |
31 | assertThat(stats.category).isEqualTo("mixed")
32 | assertThat(stats.startTime).isEqualTo(Instant.parse("1970-01-01T00:10:00Z"))
33 | assertThat(stats.stopTime).isEqualTo(Instant.parse("1970-01-01T00:35:00Z"))
34 | assertThat(stats.totalDistanceMeter).isEqualTo(1100.0)
35 | assertThat(stats.movingTime).isEqualTo(1500.seconds)
36 | assertThat(stats.avgSpeedMeterPerSecond).isEqualTo(5.0)
37 | assertThat(stats.avgMovingSpeedMeterPerSecond).isEqualTo(3.0)
38 | assertThat(stats.maxSpeedMeterPerSecond).isEqualTo(7.0)
39 | assertThat(stats.minElevationMeter).isEqualTo(10.0)
40 | assertThat(stats.maxElevationMeter).isEqualTo(40.0)
41 | assertThat(stats.elevationGainMeter).isEqualTo(42.0)
42 | }
43 | }
44 |
45 | private val track1 = Track(
46 | id = 1,
47 | category = "walking",
48 | startTime = Instant.parse("1970-01-01T00:10:00Z"),
49 | stopTime = Instant.parse("1970-01-01T00:20:00Z"),
50 | totalDistanceMeter = 100.0,
51 | totalTime = 600.seconds,
52 | movingTime = 500.seconds,
53 | avgSpeedMeterPerSecond = 4.0,
54 | avgMovingSpeedMeterPerSecond = 2.0,
55 | maxSpeedMeterPerSecond = 5.0,
56 | minElevationMeter = 10.0,
57 | maxElevationMeter = 20.0,
58 | elevationGainMeter = 10.0,
59 | )
60 |
61 | private val track2 = Track(
62 | id = 2,
63 | category = "running",
64 | startTime = Instant.parse("1970-01-01T00:15:00Z"),
65 | stopTime = Instant.parse("1970-01-01T00:35:00Z"),
66 | totalDistanceMeter = 1000.0,
67 | totalTime = 1200.seconds,
68 | movingTime = 1000.seconds,
69 | avgSpeedMeterPerSecond = 6.0,
70 | avgMovingSpeedMeterPerSecond = 4.0,
71 | maxSpeedMeterPerSecond = 7.0,
72 | minElevationMeter = 12.0,
73 | maxElevationMeter = 40.0,
74 | elevationGainMeter = 32.0,
75 | )
76 |
--------------------------------------------------------------------------------
/src/test/kotlin/de/storchp/opentracks/osmplugin/map/reader/GeoUriReaderTest.kt:
--------------------------------------------------------------------------------
1 | package de.storchp.opentracks.osmplugin.map.reader
2 |
3 | import org.assertj.core.api.Assertions.assertThat
4 | import org.junit.jupiter.api.Test
5 | import org.oscim.core.GeoPoint
6 |
7 | internal class GeoUriReaderTest {
8 |
9 | @Test
10 | fun fromGeoUriWithName() {
11 | val waypoint = fromGeoUri("geo:0,0?q=50.123,-5.456(Marker 0)")
12 | assertThat(waypoint.latLong).isEqualTo(GeoPoint(50.123, -5.456))
13 | assertThat(waypoint.name).isEqualTo("Marker 0")
14 | }
15 |
16 | @Test
17 | fun fromGeoUriWithoutName() {
18 | val waypoint = fromGeoUri("geo:0,0?q=50.123,-5.456")
19 | assertThat(waypoint.latLong).isEqualTo(GeoPoint(50.123, -5.456))
20 | assertThat(waypoint.name).isNull()
21 | }
22 |
23 | @Test
24 | fun fromGeoUriWithoutQueryPart() {
25 | val waypoint = fromGeoUri("geo:50.123,-5.456")
26 | assertThat(waypoint.latLong).isEqualTo(GeoPoint(50.123, -5.456))
27 | assertThat(waypoint.name).isNull()
28 | }
29 | }
--------------------------------------------------------------------------------
/src/test/kotlin/de/storchp/opentracks/osmplugin/utils/MapUtilsTest.kt:
--------------------------------------------------------------------------------
1 | package de.storchp.opentracks.osmplugin.utils
2 |
3 | import de.storchp.opentracks.osmplugin.map.MapUtils
4 | import org.assertj.core.api.Assertions.assertThat
5 | import org.junit.jupiter.params.ParameterizedTest
6 | import org.junit.jupiter.params.provider.CsvSource
7 |
8 | internal class MapUtilsTest {
9 | @ParameterizedTest
10 | @CsvSource(
11 | "1.0, 1.0, true",
12 | "-1.0, -1.0, true",
13 | "1.0, 0.0, true",
14 | "0.0, 0.0, false",
15 | "91.0, 1.0, false",
16 | "-91.0, 1.0, false",
17 | "1.0, 181.0, false",
18 | "1.0, -181.0, false"
19 | )
20 | fun isValid(latitude: Double, longitude: Double, valid: Boolean) {
21 | assertThat(MapUtils.isValid(latitude, longitude)).isEqualTo(valid)
22 | }
23 | }
--------------------------------------------------------------------------------
/src/test/resources/route-noelevation.gpx:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
8 |
9 |
10 | biesdorf
11 | Generated from track biesdorf
12 |
13 | RPT001
14 |
15 |
16 | RPT002
17 |
18 |
19 | RPT003
20 |
21 |
22 | RPT004
23 |
24 | RPT015
25 |
26 | RPT016
27 |
28 |
29 | RPT017
30 |
31 |
32 | RPT018
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/src/test/resources/route.gpx:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
8 |
9 |
10 | lenitzsee-zusatz-
11 | Generated from track lenitzsee-zusatz-
12 |
13 | 0.000
14 | RPT001
15 |
16 |
17 | 0.000
18 | RPT002
19 |
20 |
21 | 0.000
22 | RPT003
23 |
24 |
25 | 0.000
26 | RPT004
27 |
28 |
29 | 0.000
30 | RPT005
31 |
32 |
33 | 0.000
34 | RPT006
35 |
36 |
37 | 0.000
38 | RPT007
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------