├── .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 | image/svg+xml 43 | 45 | 48 | 55 | 59 | 63 | 64 | 69 | 70 | -------------------------------------------------------------------------------- /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 | 17 | 19 | 42 | 44 | 45 | 47 | image/svg+xml 48 | 50 | 51 | 52 | 53 | 54 | 59 | 63 | 70 | 74 | 78 | 79 | 84 | 85 | 90 | 91 | 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 | 6 | 7 | 13 | 14 | 20 | 21 | 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 | 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 | --------------------------------------------------------------------------------