├── app ├── listings │ ├── play │ │ ├── default-language.txt │ │ ├── listings │ │ │ └── en-US │ │ │ │ ├── title.txt │ │ │ │ ├── default-language.txt │ │ │ │ ├── short-description.txt │ │ │ │ ├── graphics │ │ │ │ ├── icon │ │ │ │ │ └── ic_launcher.png │ │ │ │ └── phone-screenshots │ │ │ │ │ ├── 1_start.png │ │ │ │ │ ├── 3_history.png │ │ │ │ │ ├── 6_accounts.png │ │ │ │ │ ├── 5_detail_map.png │ │ │ │ │ ├── 7_start_advanced.png │ │ │ │ │ ├── 8_start_intervall.png │ │ │ │ │ ├── 2_recording_advanced.png │ │ │ │ │ └── 4_detail_laps_advanced.png │ │ │ │ └── full-description.txt │ │ ├── contact-email.txt │ │ ├── release-notes │ │ │ └── en-US │ │ │ │ └── production.txt │ │ └── privacy.html │ └── README.md ├── res │ ├── resources.properties │ ├── mipmap-hdpi │ │ └── ic_launcher.png │ ├── mipmap-mdpi │ │ └── ic_launcher.png │ ├── mipmap-xhdpi │ │ └── ic_launcher.png │ ├── mipmap-xxhdpi │ │ └── ic_launcher.png │ ├── mipmap-xxxhdpi │ │ └── ic_launcher.png │ ├── drawable-hdpi │ │ ├── ic_stat_notify.png │ │ ├── service_strava.png │ │ ├── service_dropbox.png │ │ ├── service_runalyze.png │ │ ├── ic_tab_main_white_24dp.png │ │ ├── title_spinner_normal.9.png │ │ ├── title_spinner_disabled.9.png │ │ ├── title_spinner_pressed.9.png │ │ ├── title_spinner_selected.9.png │ │ ├── ic_tab_history_white_24dp.png │ │ ├── ic_tab_main_seccolor_24dp.png │ │ ├── ic_tab_settings_white_24dp.png │ │ ├── ic_tab_history_seccolor_24dp.png │ │ ├── ic_tab_settings_seccolor_24dp.png │ │ └── title_spinner_disabled_focused.9.png │ ├── drawable-ldpi │ │ └── ic_stat_notify.png │ ├── drawable-mdpi │ │ ├── ic_stat_notify.png │ │ ├── tab_selected_holo.9.png │ │ ├── tab_unselected_holo.9.png │ │ ├── tab_selected_focused_holo.9.png │ │ ├── tab_selected_pressed_holo.9.png │ │ ├── tab_unselected_focused_holo.9.png │ │ └── tab_unselected_pressed_holo.9.png │ ├── drawable-xxhdpi │ │ ├── ic_map_marker_end.png │ │ ├── ic_map_marker_lap.png │ │ ├── ic_map_marker_pause.png │ │ ├── ic_map_marker_resume.png │ │ └── ic_map_marker_start.png │ ├── drawable-nodpi │ │ └── ic_icon_runnerup30x30.png │ ├── values │ │ ├── fonts.xml │ │ ├── dimens.xml │ │ ├── mapbox.xml │ │ ├── strings.xml │ │ ├── title_spinner.xml │ │ └── number_picker.xml │ ├── values-v21 │ │ └── fonts.xml │ ├── xml │ │ ├── backup_descriptor.xml │ │ ├── data_extraction_rules.xml │ │ ├── settings_map.xml │ │ ├── settings_controls.xml │ │ └── settings_units.xml │ ├── color │ │ ├── bottom_tabs.xml │ │ ├── switch_thumb.xml │ │ └── btn_text_color.xml │ ├── layout │ │ ├── actionbar_spinner.xml │ │ ├── settings_activity.xml │ │ ├── actionbar_dropdown_spinner.xml │ │ ├── start_fab.xml │ │ ├── whatsnew.xml │ │ ├── manage_workouts_list_row.xml │ │ ├── account_list.xml │ │ ├── manage_workouts_list_category.xml │ │ ├── settings_wrapper.xml │ │ └── advanced_workout_row.xml │ ├── drawable │ │ ├── circle_40dp.xml │ │ ├── step_recovery.xml │ │ ├── ic_start_white_24dp.xml │ │ ├── step_active.xml │ │ ├── ic_add_white_24dp.xml │ │ ├── ic_expand_down_white_24dp.xml │ │ ├── ic_expand_up_white_24dp.xml │ │ ├── step_cooldown.xml │ │ ├── step_resting.xml │ │ ├── step_warmup.xml │ │ ├── ic_heartrate_white_24dp.xml │ │ ├── sport_orienteering.xml │ │ ├── service_file.xml │ │ ├── ic_watch_white_24dp.xml │ │ ├── switch_upload.xml │ │ ├── ic_gps_3.xml │ │ ├── ic_gps_2.xml │ │ ├── ic_gps_1.xml │ │ ├── ic_gps_0.xml │ │ ├── step_repeat.xml │ │ ├── sport_walking.xml │ │ ├── sport_running.xml │ │ ├── ic_tab_main_24dp.xml │ │ ├── ic_tab_history_24dp.xml │ │ ├── ic_tab_settings_24dp.xml │ │ ├── service_endurain.xml │ │ ├── sport_other.xml │ │ ├── btn_blue.xml │ │ ├── btn_green.xml │ │ ├── btn_red.xml │ │ └── title_spinner.xml │ ├── menu │ │ ├── manual_menu.xml │ │ ├── hrzonessettings_menu.xml │ │ ├── account_menu.xml │ │ └── detail_menu.xml │ ├── mipmap-anydpi-v26 │ │ └── ic_launcher.xml │ ├── drawable-v21 │ │ ├── ic_tab_history_24dp.xml │ │ └── ic_tab_settings_24dp.xml │ ├── drawable-v24 │ │ └── ic_launcher_background.xml │ └── values-ru-rRU │ │ └── cues.xml ├── assets │ ├── Strava.data │ ├── RunKeeper.data │ ├── RunningAHEAD.data │ ├── egm96-delta.dat │ ├── about.html │ └── bundled │ │ ├── app_workouts │ │ └── 4x4.json │ │ └── shared_prefs │ │ └── 100m_audio_cues.xml ├── .settings │ └── org.eclipse.jdt.ui.prefs └── src │ ├── main │ ├── org │ │ ├── runnerup │ │ │ ├── notification │ │ │ │ ├── NotificationState.java │ │ │ │ ├── NotificationDisplayStrategy.java │ │ │ │ ├── NotificationManagerDisplayStrategy.java │ │ │ │ └── ForegroundNotificationDisplayStrategy.java │ │ │ ├── tracker │ │ │ │ ├── GpsInformation.java │ │ │ │ └── WorkoutObserver.java │ │ │ ├── view │ │ │ │ ├── SettingsMapFragment.java │ │ │ │ ├── SettingsGraphFragment.java │ │ │ │ ├── SettingsUnitsFragment.java │ │ │ │ ├── SettingsWorkoutFragment.java │ │ │ │ ├── SettingsControlsFragment.java │ │ │ │ └── SettingsFragment.java │ │ │ ├── util │ │ │ │ ├── NetworkUtils.java │ │ │ │ ├── TickListener.java │ │ │ │ └── Bitfield.java │ │ │ ├── workout │ │ │ │ ├── SpeedUnit.java │ │ │ │ ├── feedback │ │ │ │ │ ├── HRMStateChangeFeedback.java │ │ │ │ │ ├── UtterancePrio.java │ │ │ │ │ └── VibrationFeedback.java │ │ │ │ ├── TickComponent.java │ │ │ │ ├── WorkoutStepListener.java │ │ │ │ ├── TriggerSuppression.java │ │ │ │ ├── HRMStateTrigger.java │ │ │ │ ├── Scope.java │ │ │ │ ├── Event.java │ │ │ │ ├── Feedback.java │ │ │ │ ├── WorkoutInfo.java │ │ │ │ └── Range.java │ │ │ ├── export │ │ │ │ ├── util │ │ │ │ │ ├── Writable.java │ │ │ │ │ └── StringWritable.java │ │ │ │ └── oauth2client │ │ │ │ │ └── OAuth2Server.java │ │ │ ├── db │ │ │ │ └── entities │ │ │ │ │ └── DBEntity.java │ │ │ └── widget │ │ │ │ └── SpinnerInterface.java │ │ └── matthiaszimmermann │ │ │ └── location │ │ │ └── egm96 │ │ │ └── Cubic.java │ └── com │ │ └── goebl │ │ └── simplify │ │ ├── Point.java │ │ └── PointExtractor.java │ ├── mapbox │ └── org │ │ └── runnerup │ │ └── util │ │ └── MapViewWrapper.java │ ├── nomap │ └── org │ │ └── runnerup │ │ └── util │ │ ├── MapViewWrapper.java │ │ └── MapWrapper.java │ ├── nonplay │ └── org │ │ └── runnerup │ │ └── util │ │ └── GoogleApiHelper.java │ ├── play │ └── org │ │ └── runnerup │ │ └── util │ │ └── GoogleApiHelper.java │ └── osmdroid │ └── org │ └── runnerup │ └── util │ └── MapViewWrapper.java ├── fastlane ├── metadata │ └── android │ │ ├── en-US │ │ ├── title.txt │ │ ├── changelogs │ │ │ ├── 15000327.txt │ │ │ ├── 15000324.txt │ │ │ ├── 15000326.txt │ │ │ ├── 21000356.txt │ │ │ ├── 15000323.txt │ │ │ ├── 21000340.txt │ │ │ ├── 21000335.txt │ │ │ ├── 21000331.txt │ │ │ └── 21000337.txt │ │ ├── short_description.txt │ │ ├── images │ │ │ ├── icon.png │ │ │ └── phoneScreenshots │ │ │ │ ├── 1_start.png │ │ │ │ ├── 3_history.png │ │ │ │ ├── 6_accounts.png │ │ │ │ ├── 5_detail_map.png │ │ │ │ ├── 7_start_advanced.png │ │ │ │ ├── 8_start_intervall.png │ │ │ │ ├── 2_recording_advanced.png │ │ │ │ └── 4_detail_laps_advanced.png │ │ └── full_description.txt │ │ ├── zh-CN │ │ └── short_description.txt │ │ ├── ja │ │ └── short_description.txt │ │ ├── cs │ │ └── short_description.txt │ │ ├── he │ │ └── short_description.txt │ │ ├── it │ │ └── short_description.txt │ │ ├── de │ │ └── short_description.txt │ │ ├── fr │ │ └── short_description.txt │ │ ├── pl │ │ └── short_description.txt │ │ ├── ru │ │ └── short_description.txt │ │ ├── tr │ │ └── short_description.txt │ │ ├── pt │ │ └── short_description.txt │ │ ├── ro │ │ └── short_description.txt │ │ ├── uk │ │ └── short_description.txt │ │ ├── ar │ │ └── short_description.txt │ │ ├── pt-BR │ │ └── short_description.txt │ │ └── es │ │ └── short_description.txt └── README.md ├── CONTRIBUTING.md ├── get_it_on_f-droid.png ├── settings.gradle ├── .gitmodules ├── common ├── src │ └── main │ │ ├── res │ │ ├── drawable-mdpi │ │ │ ├── ic_av_stop.png │ │ │ ├── ic_av_newlap.png │ │ │ ├── ic_av_pause.png │ │ │ └── ic_av_play_arrow.png │ │ ├── values-tr │ │ │ └── array.xml │ │ ├── drawable │ │ │ └── countdown_background.xml │ │ ├── values-cs │ │ │ └── array.xml │ │ ├── values-fa │ │ │ └── array.xml │ │ ├── values-ar │ │ │ └── strings.xml │ │ ├── values-bs │ │ │ └── array.xml │ │ ├── values-fi │ │ │ └── array.xml │ │ ├── values-nb-rNO │ │ │ └── array.xml │ │ ├── values-in │ │ │ └── array.xml │ │ ├── values-mn-rMN │ │ │ └── array.xml │ │ ├── values-zh │ │ │ └── array.xml │ │ ├── values-ja │ │ │ └── array.xml │ │ ├── values-iw │ │ │ └── array.xml │ │ ├── values-sv │ │ │ └── array.xml │ │ ├── values-nl │ │ │ └── array.xml │ │ ├── values-uk │ │ │ └── array.xml │ │ ├── values-hu │ │ │ └── array.xml │ │ ├── values-nl-rNL │ │ │ └── array.xml │ │ ├── values-ro │ │ │ └── array.xml │ │ ├── values-it │ │ │ └── array.xml │ │ ├── values-ru │ │ │ └── array.xml │ │ ├── values-ca │ │ │ └── array.xml │ │ ├── values-de │ │ │ └── array.xml │ │ ├── values-fr │ │ │ └── array.xml │ │ ├── values-pl │ │ │ └── array.xml │ │ ├── values-es │ │ │ └── array.xml │ │ ├── values-lt │ │ │ └── array.xml │ │ ├── values-pt │ │ │ └── array.xml │ │ ├── values-pt-rBR │ │ │ └── array.xml │ │ └── values-nl-rBE │ │ │ └── strings.xml │ │ └── AndroidManifest.xml ├── lint.xml └── lint-baseline.xml ├── wear ├── src │ └── main │ │ ├── res │ │ ├── drawable-nodpi │ │ │ └── ic_launcher.png │ │ ├── drawable-mdpi │ │ │ ├── ic_av_location.png │ │ │ └── ic_av_empty_location.png │ │ ├── values │ │ │ └── dimen.xml │ │ ├── color │ │ │ └── action_button.xml │ │ ├── drawable │ │ │ ├── dot.xml │ │ │ ├── searching_animation.xml │ │ │ └── border.xml │ │ └── layout │ │ │ ├── countdown.xml │ │ │ └── card1.xml │ │ └── java │ │ └── org │ │ └── runnerup │ │ └── view │ │ └── StoppedFragment.java ├── lint-baseline.xml ├── proguard.txt └── lint.xml ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── .gitattributes ├── hrdevice ├── res │ └── values │ │ └── strings.xml └── AndroidManifest.xml ├── .gitignore ├── release.properties.sample ├── gradle.properties ├── Documentation └── workout.txt ├── CREDITS.md ├── .tx └── config ├── .travis.yml ├── Project_Default.xml └── Dockerfile /app/listings/play/default-language.txt: -------------------------------------------------------------------------------- 1 | en-US -------------------------------------------------------------------------------- /app/listings/play/listings/en-US/title.txt: -------------------------------------------------------------------------------- 1 | RunnerUp -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/title.txt: -------------------------------------------------------------------------------- 1 | RunnerUp -------------------------------------------------------------------------------- /app/listings/play/listings/en-US/default-language.txt: -------------------------------------------------------------------------------- 1 | en-US -------------------------------------------------------------------------------- /app/listings/play/contact-email.txt: -------------------------------------------------------------------------------- 1 | runnerup.android@gmail.com -------------------------------------------------------------------------------- /app/res/resources.properties: -------------------------------------------------------------------------------- 1 | unqualifiedResLocale=en-US 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/short_description.txt: -------------------------------------------------------------------------------- 1 | 使用 GPS 跟踪您的体育活动 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/ja/short_description.txt: -------------------------------------------------------------------------------- 1 | GPSを使用してあなたのスポーツ活動を追跡 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/15000327.txt: -------------------------------------------------------------------------------- 1 | #1145: Cadence exception -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/15000324.txt: -------------------------------------------------------------------------------- 1 | BLUETOOTH_SCAN required for BLE -------------------------------------------------------------------------------- /fastlane/metadata/android/cs/short_description.txt: -------------------------------------------------------------------------------- 1 | Sledování sportovních aktivit pomocí GPS 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/he/short_description.txt: -------------------------------------------------------------------------------- 1 | מעקב אחר הפעילות הספורטיבית באמצעות GPS 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/it/short_description.txt: -------------------------------------------------------------------------------- 1 | Traccia le tue attività sportive con il GPS 2 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | Please see the [wiki](https://github.com/jonasoreland/runnerup/wiki/CONTRIBUTING) 2 | -------------------------------------------------------------------------------- /app/assets/Strava.data: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/assets/Strava.data -------------------------------------------------------------------------------- /fastlane/metadata/android/de/short_description.txt: -------------------------------------------------------------------------------- 1 | Sportliche Aktivitäten mittels GPS aufzeichnen 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/fr/short_description.txt: -------------------------------------------------------------------------------- 1 | Suivez vos activités sportives à l'aide du GPS 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/pl/short_description.txt: -------------------------------------------------------------------------------- 1 | Śledzenie aktywności sportowej za pomocą GPS 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/ru/short_description.txt: -------------------------------------------------------------------------------- 1 | Отслеживайте свои занятия спортом с помощью GPS 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/tr/short_description.txt: -------------------------------------------------------------------------------- 1 | GPS kullanarak spor etkinliklerinizi izleyin 2 | -------------------------------------------------------------------------------- /get_it_on_f-droid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/get_it_on_f-droid.png -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':common' 2 | include ':hrdevice' 3 | include ':app' 4 | include ':wear' 5 | -------------------------------------------------------------------------------- /app/assets/RunKeeper.data: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/assets/RunKeeper.data -------------------------------------------------------------------------------- /fastlane/metadata/android/pt/short_description.txt: -------------------------------------------------------------------------------- 1 | Rastreie as suas atividades desportivas usando GPS 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/ro/short_description.txt: -------------------------------------------------------------------------------- 1 | Urmăriți-vă activitățile sportive cu ajutorul GPS 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/uk/short_description.txt: -------------------------------------------------------------------------------- 1 | Відстежуйте свої спортивні заняття за допомогою GPS 2 | -------------------------------------------------------------------------------- /app/assets/RunningAHEAD.data: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/assets/RunningAHEAD.data -------------------------------------------------------------------------------- /app/assets/egm96-delta.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/assets/egm96-delta.dat -------------------------------------------------------------------------------- /fastlane/metadata/android/ar/short_description.txt: -------------------------------------------------------------------------------- 1 | تتبع نشاطاتك الرياضية باستخدام خدمة تحديد المواقع (GPS) 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/15000326.txt: -------------------------------------------------------------------------------- 1 | #1139: Timers not updated when device was in deep sleep -------------------------------------------------------------------------------- /fastlane/metadata/android/pt-BR/short_description.txt: -------------------------------------------------------------------------------- 1 | Rastreie as suas atividades esportivas usando o GPS 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/es/short_description.txt: -------------------------------------------------------------------------------- 1 | Realiza un seguimiento de tus actividades deportivas usando GPS 2 | -------------------------------------------------------------------------------- /app/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/21000356.txt: -------------------------------------------------------------------------------- 1 | #1211 Resurrect WearOS companion app 2 | #1215 Target Android 15 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/short_description.txt: -------------------------------------------------------------------------------- 1 | RunnerUp - an open source GPS tracker with advanced workout and audio cues. -------------------------------------------------------------------------------- /app/listings/play/listings/en-US/short-description.txt: -------------------------------------------------------------------------------- 1 | RunnerUp - an open source GPS tracker with advanced workout and audio cues. -------------------------------------------------------------------------------- /app/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "ANT-Android-SDKs"] 2 | path = ANT-Android-SDKs 3 | url = https://github.com/ant-wireless/ANT-Android-SDKs 4 | -------------------------------------------------------------------------------- /app/.settings/org.eclipse.jdt.ui.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | formatter_profile=_Android 3 | formatter_settings_version=12 4 | -------------------------------------------------------------------------------- /app/res/drawable-hdpi/ic_stat_notify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/res/drawable-hdpi/ic_stat_notify.png -------------------------------------------------------------------------------- /app/res/drawable-hdpi/service_strava.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/res/drawable-hdpi/service_strava.png -------------------------------------------------------------------------------- /app/res/drawable-ldpi/ic_stat_notify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/res/drawable-ldpi/ic_stat_notify.png -------------------------------------------------------------------------------- /app/res/drawable-mdpi/ic_stat_notify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/res/drawable-mdpi/ic_stat_notify.png -------------------------------------------------------------------------------- /app/res/drawable-hdpi/service_dropbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/res/drawable-hdpi/service_dropbox.png -------------------------------------------------------------------------------- /app/res/drawable-hdpi/service_runalyze.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/res/drawable-hdpi/service_runalyze.png -------------------------------------------------------------------------------- /app/res/drawable-mdpi/tab_selected_holo.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/res/drawable-mdpi/tab_selected_holo.9.png -------------------------------------------------------------------------------- /app/res/drawable-xxhdpi/ic_map_marker_end.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/res/drawable-xxhdpi/ic_map_marker_end.png -------------------------------------------------------------------------------- /app/res/drawable-xxhdpi/ic_map_marker_lap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/res/drawable-xxhdpi/ic_map_marker_lap.png -------------------------------------------------------------------------------- /fastlane/README.md: -------------------------------------------------------------------------------- 1 | This directory contains the description for F-Droid. 2 | 3 | Also see the Play description (in GPP format) in app/listings/ 4 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/15000323.txt: -------------------------------------------------------------------------------- 1 | Target Android 13 2 | Option to ignore time in GPS points 3 | ANT+ HR were not detected 4 | -------------------------------------------------------------------------------- /app/res/drawable-hdpi/ic_tab_main_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/res/drawable-hdpi/ic_tab_main_white_24dp.png -------------------------------------------------------------------------------- /app/res/drawable-hdpi/title_spinner_normal.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/res/drawable-hdpi/title_spinner_normal.9.png -------------------------------------------------------------------------------- /app/res/drawable-mdpi/tab_unselected_holo.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/res/drawable-mdpi/tab_unselected_holo.9.png -------------------------------------------------------------------------------- /app/res/drawable-nodpi/ic_icon_runnerup30x30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/res/drawable-nodpi/ic_icon_runnerup30x30.png -------------------------------------------------------------------------------- /app/res/drawable-xxhdpi/ic_map_marker_pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/res/drawable-xxhdpi/ic_map_marker_pause.png -------------------------------------------------------------------------------- /app/res/drawable-xxhdpi/ic_map_marker_resume.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/res/drawable-xxhdpi/ic_map_marker_resume.png -------------------------------------------------------------------------------- /app/res/drawable-xxhdpi/ic_map_marker_start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/res/drawable-xxhdpi/ic_map_marker_start.png -------------------------------------------------------------------------------- /common/src/main/res/drawable-mdpi/ic_av_stop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/common/src/main/res/drawable-mdpi/ic_av_stop.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/fastlane/metadata/android/en-US/images/icon.png -------------------------------------------------------------------------------- /wear/src/main/res/drawable-nodpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/wear/src/main/res/drawable-nodpi/ic_launcher.png -------------------------------------------------------------------------------- /app/res/drawable-hdpi/title_spinner_disabled.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/res/drawable-hdpi/title_spinner_disabled.9.png -------------------------------------------------------------------------------- /app/res/drawable-hdpi/title_spinner_pressed.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/res/drawable-hdpi/title_spinner_pressed.9.png -------------------------------------------------------------------------------- /app/res/drawable-hdpi/title_spinner_selected.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/res/drawable-hdpi/title_spinner_selected.9.png -------------------------------------------------------------------------------- /common/src/main/res/drawable-mdpi/ic_av_newlap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/common/src/main/res/drawable-mdpi/ic_av_newlap.png -------------------------------------------------------------------------------- /common/src/main/res/drawable-mdpi/ic_av_pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/common/src/main/res/drawable-mdpi/ic_av_pause.png -------------------------------------------------------------------------------- /wear/src/main/res/drawable-mdpi/ic_av_location.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/wear/src/main/res/drawable-mdpi/ic_av_location.png -------------------------------------------------------------------------------- /app/res/drawable-hdpi/ic_tab_history_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/res/drawable-hdpi/ic_tab_history_white_24dp.png -------------------------------------------------------------------------------- /app/res/drawable-hdpi/ic_tab_main_seccolor_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/res/drawable-hdpi/ic_tab_main_seccolor_24dp.png -------------------------------------------------------------------------------- /app/res/drawable-hdpi/ic_tab_settings_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/res/drawable-hdpi/ic_tab_settings_white_24dp.png -------------------------------------------------------------------------------- /app/res/drawable-mdpi/tab_selected_focused_holo.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/res/drawable-mdpi/tab_selected_focused_holo.9.png -------------------------------------------------------------------------------- /app/res/drawable-mdpi/tab_selected_pressed_holo.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/res/drawable-mdpi/tab_selected_pressed_holo.9.png -------------------------------------------------------------------------------- /app/res/values/fonts.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | sans-serif 4 | 5 | -------------------------------------------------------------------------------- /app/res/drawable-hdpi/ic_tab_history_seccolor_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/res/drawable-hdpi/ic_tab_history_seccolor_24dp.png -------------------------------------------------------------------------------- /app/res/drawable-hdpi/ic_tab_settings_seccolor_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/res/drawable-hdpi/ic_tab_settings_seccolor_24dp.png -------------------------------------------------------------------------------- /app/res/drawable-mdpi/tab_unselected_focused_holo.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/res/drawable-mdpi/tab_unselected_focused_holo.9.png -------------------------------------------------------------------------------- /app/res/drawable-mdpi/tab_unselected_pressed_holo.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/res/drawable-mdpi/tab_unselected_pressed_holo.9.png -------------------------------------------------------------------------------- /common/src/main/res/drawable-mdpi/ic_av_play_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/common/src/main/res/drawable-mdpi/ic_av_play_arrow.png -------------------------------------------------------------------------------- /app/res/drawable-hdpi/title_spinner_disabled_focused.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/res/drawable-hdpi/title_spinner_disabled_focused.9.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/21000340.txt: -------------------------------------------------------------------------------- 1 | #1193 Endurain upload support 2 | #1192 Audio coundown feedback 3 | #1190 Buttons in notifications in Android 14 4 | -------------------------------------------------------------------------------- /wear/src/main/res/drawable-mdpi/ic_av_empty_location.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/wear/src/main/res/drawable-mdpi/ic_av_empty_location.png -------------------------------------------------------------------------------- /app/res/values-v21/fonts.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/res/xml/backup_descriptor.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/res/xml/data_extraction_rules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:e2b82129ab64751fd40437007bd2f7f2afb3c6e41a9198e628650b22d5824a14 3 | size 49896 4 | -------------------------------------------------------------------------------- /app/listings/play/listings/en-US/graphics/icon/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/listings/play/listings/en-US/graphics/icon/ic_launcher.png -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | assets/*.data binary 2 | *.xml text eol=lf 3 | gradlew text eol=lf 4 | gradlew.bat text eol=crlf 5 | *.jar filter=lfs diff=lfs merge=lfs -text 6 | *.properties eol=lf 7 | -------------------------------------------------------------------------------- /app/listings/README.md: -------------------------------------------------------------------------------- 1 | play/ contains the Play store listing in Gradle Play Publisher (GPP, previously called Triple-T) format. 2 | 3 | Also see the F-Droid description in fastlane/ 4 | -------------------------------------------------------------------------------- /common/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/1_start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/fastlane/metadata/android/en-US/images/phoneScreenshots/1_start.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/3_history.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/fastlane/metadata/android/en-US/images/phoneScreenshots/3_history.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/6_accounts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/fastlane/metadata/android/en-US/images/phoneScreenshots/6_accounts.png -------------------------------------------------------------------------------- /app/listings/play/listings/en-US/graphics/phone-screenshots/1_start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/listings/play/listings/en-US/graphics/phone-screenshots/1_start.png -------------------------------------------------------------------------------- /app/listings/play/listings/en-US/graphics/phone-screenshots/3_history.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/listings/play/listings/en-US/graphics/phone-screenshots/3_history.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/21000335.txt: -------------------------------------------------------------------------------- 1 | Target Android 14 2 | Library updates and internal cleanup 3 | Translation updates for pt 4 | #1176 Remove old Wear support, to allow Play update -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/5_detail_map.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/fastlane/metadata/android/en-US/images/phoneScreenshots/5_detail_map.png -------------------------------------------------------------------------------- /app/listings/play/listings/en-US/graphics/phone-screenshots/6_accounts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/listings/play/listings/en-US/graphics/phone-screenshots/6_accounts.png -------------------------------------------------------------------------------- /app/listings/play/listings/en-US/graphics/phone-screenshots/5_detail_map.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/listings/play/listings/en-US/graphics/phone-screenshots/5_detail_map.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/7_start_advanced.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/fastlane/metadata/android/en-US/images/phoneScreenshots/7_start_advanced.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/8_start_intervall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/fastlane/metadata/android/en-US/images/phoneScreenshots/8_start_intervall.png -------------------------------------------------------------------------------- /app/listings/play/listings/en-US/graphics/phone-screenshots/7_start_advanced.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/listings/play/listings/en-US/graphics/phone-screenshots/7_start_advanced.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/2_recording_advanced.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/fastlane/metadata/android/en-US/images/phoneScreenshots/2_recording_advanced.png -------------------------------------------------------------------------------- /wear/src/main/res/values/dimen.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 32dp 4 | 32dp 5 | 6 | -------------------------------------------------------------------------------- /app/listings/play/listings/en-US/graphics/phone-screenshots/8_start_intervall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/listings/play/listings/en-US/graphics/phone-screenshots/8_start_intervall.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/4_detail_laps_advanced.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/fastlane/metadata/android/en-US/images/phoneScreenshots/4_detail_laps_advanced.png -------------------------------------------------------------------------------- /app/listings/play/listings/en-US/graphics/phone-screenshots/2_recording_advanced.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/listings/play/listings/en-US/graphics/phone-screenshots/2_recording_advanced.png -------------------------------------------------------------------------------- /app/listings/play/listings/en-US/graphics/phone-screenshots/4_detail_laps_advanced.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonasoreland/runnerup/HEAD/app/listings/play/listings/en-US/graphics/phone-screenshots/4_detail_laps_advanced.png -------------------------------------------------------------------------------- /wear/lint-baseline.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/org/runnerup/notification/NotificationState.java: -------------------------------------------------------------------------------- 1 | package org.runnerup.notification; 2 | 3 | import android.app.Notification; 4 | 5 | public interface NotificationState { 6 | Notification createNotification(); 7 | } 8 | -------------------------------------------------------------------------------- /app/src/main/org/runnerup/tracker/GpsInformation.java: -------------------------------------------------------------------------------- 1 | package org.runnerup.tracker; 2 | 3 | public interface GpsInformation { 4 | float getGpsAccuracy(); 5 | 6 | int getSatellitesAvailable(); 7 | 8 | int getSatellitesFixed(); 9 | } 10 | -------------------------------------------------------------------------------- /wear/proguard.txt: -------------------------------------------------------------------------------- 1 | #Suppress warnings for proguard, for all irrelevant warnings 2 | 3 | #PlayServices related? 4 | -dontnote com.google.protobuf.zz* 5 | -dontnote com.google.android.gms.dynamic.IObjectWrapper 6 | -dontwarn com.google.android.wearable.** 7 | -------------------------------------------------------------------------------- /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 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/21000331.txt: -------------------------------------------------------------------------------- 1 | Prepare for Android 14 2 | Library updates and internal cleanup 3 | Update ANT+ library (finally with Android 13 fixes) 4 | Translation updates for iw, nl, zh, es, de 5 | Set time from system clock correction -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/21000337.txt: -------------------------------------------------------------------------------- 1 | Target Android 14 2 | Library updates and internal cleanup 3 | Translation updates for pt 4 | #1176 Remove old Wear support, to allow Play update 5 | Remove e-NL locale, interfered with default English in Android 14 -------------------------------------------------------------------------------- /app/res/color/bottom_tabs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/res/color/switch_thumb.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /hrdevice/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | HRDevice 3 | 4 | pref_bt_paired_ble 5 | pref_bt_experimental 6 | pref_bt_mock 7 | 8 | -------------------------------------------------------------------------------- /app/res/layout/actionbar_spinner.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/res/layout/settings_activity.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/org/runnerup/notification/NotificationDisplayStrategy.java: -------------------------------------------------------------------------------- 1 | package org.runnerup.notification; 2 | 3 | import android.app.Notification; 4 | 5 | interface NotificationDisplayStrategy { 6 | void notify(int notificationId, Notification notification); 7 | 8 | void cancel(int notificationId); 9 | } 10 | -------------------------------------------------------------------------------- /app/res/drawable/circle_40dp.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 8 | 9 | 12 | -------------------------------------------------------------------------------- /app/res/layout/actionbar_dropdown_spinner.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/listings/play/release-notes/en-US/production.txt: -------------------------------------------------------------------------------- 1 | The major feature in 2.0 is a refreshed user interface using material design as well as many smaller cleanups and corrections. 2 | 3 | For details, see the change log in the app or at GitHub: https://htmlpreview.github.io/?https://raw.githubusercontent.com/jonasoreland/runnerup/blob/HEAD/app/assets/changes.html -------------------------------------------------------------------------------- /app/res/drawable/step_recovery.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/res/drawable/ic_start_white_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/res/menu/manual_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 9 | -------------------------------------------------------------------------------- /app/res/drawable/step_active.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /common/lint.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/res/drawable/ic_add_white_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/res/drawable/ic_expand_down_white_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/res/drawable/ic_expand_up_white_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 88dp 4 | 16dp 5 | 6 | 20dp 7 | 44dp 8 | 24dp 9 | 8dp 10 | -------------------------------------------------------------------------------- /app/res/drawable/step_cooldown.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/res/drawable/step_resting.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/res/drawable/step_warmup.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/mapbox/org/runnerup/util/MapViewWrapper.java: -------------------------------------------------------------------------------- 1 | package org.runnerup.util; 2 | 3 | import android.content.Context; 4 | import android.util.AttributeSet; 5 | 6 | public class MapViewWrapper extends com.mapbox.mapboxsdk.maps.MapView { 7 | 8 | public MapViewWrapper(Context context) { 9 | super(context); 10 | } 11 | 12 | public MapViewWrapper(Context context, AttributeSet attributeSet) { 13 | super(context, attributeSet); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/org/runnerup/view/SettingsMapFragment.java: -------------------------------------------------------------------------------- 1 | package org.runnerup.view; 2 | 3 | import android.os.Bundle; 4 | import androidx.preference.PreferenceFragmentCompat; 5 | import org.runnerup.R; 6 | 7 | public class SettingsMapFragment extends PreferenceFragmentCompat { 8 | 9 | @Override 10 | public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { 11 | setPreferencesFromResource(R.xml.settings_map, rootKey); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /app/src/nomap/org/runnerup/util/MapViewWrapper.java: -------------------------------------------------------------------------------- 1 | package org.runnerup.util; 2 | 3 | import android.content.Context; 4 | import android.util.AttributeSet; 5 | import android.view.View; 6 | 7 | public class MapViewWrapper extends View { 8 | 9 | public MapViewWrapper(final Context context) { 10 | super(context); 11 | } 12 | 13 | public MapViewWrapper(final Context context, final AttributeSet attrs) { 14 | super(context, attrs); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/org/runnerup/view/SettingsGraphFragment.java: -------------------------------------------------------------------------------- 1 | package org.runnerup.view; 2 | 3 | import android.os.Bundle; 4 | import androidx.preference.PreferenceFragmentCompat; 5 | import org.runnerup.R; 6 | 7 | public class SettingsGraphFragment extends PreferenceFragmentCompat { 8 | 9 | @Override 10 | public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { 11 | setPreferencesFromResource(R.xml.settings_graph, rootKey); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/org/runnerup/view/SettingsUnitsFragment.java: -------------------------------------------------------------------------------- 1 | package org.runnerup.view; 2 | 3 | import android.os.Bundle; 4 | import androidx.preference.PreferenceFragmentCompat; 5 | import org.runnerup.R; 6 | 7 | public class SettingsUnitsFragment extends PreferenceFragmentCompat { 8 | 9 | @Override 10 | public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { 11 | setPreferencesFromResource(R.xml.settings_units, rootKey); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/org/runnerup/view/SettingsWorkoutFragment.java: -------------------------------------------------------------------------------- 1 | package org.runnerup.view; 2 | 3 | import android.os.Bundle; 4 | import androidx.preference.PreferenceFragmentCompat; 5 | import org.runnerup.R; 6 | 7 | public class SettingsWorkoutFragment extends PreferenceFragmentCompat { 8 | 9 | @Override 10 | public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { 11 | setPreferencesFromResource(R.xml.settings_workout, rootKey); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Local configuration file (sdk path, etc) 2 | local.properties 3 | 4 | # Gedit temp files 5 | *~ 6 | 7 | # gradle files 8 | .gradle/ 9 | .idea/ 10 | build/ 11 | gen/ 12 | 13 | #app bundle files 14 | *.aab 15 | 16 | # Intellij files (Android Studio) 17 | *.iml 18 | 19 | # NetBeans IDE project files 20 | /.nb-gradle/private/ 21 | 22 | # Release signing property file 23 | release.properties 24 | /mapbox.properties 25 | /runalyze.properties 26 | /dropbox.properties 27 | -------------------------------------------------------------------------------- /app/src/main/org/runnerup/view/SettingsControlsFragment.java: -------------------------------------------------------------------------------- 1 | package org.runnerup.view; 2 | 3 | import android.os.Bundle; 4 | import androidx.preference.PreferenceFragmentCompat; 5 | import org.runnerup.R; 6 | 7 | public class SettingsControlsFragment extends PreferenceFragmentCompat { 8 | 9 | @Override 10 | public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { 11 | setPreferencesFromResource(R.xml.settings_controls, rootKey); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /common/lint-baseline.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /common/src/main/res/values-tr/array.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Süre 7 | Mesafe 8 | 9 | 10 | Erkek 11 | Kadın 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/res/drawable/ic_heartrate_white_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/res/drawable/sport_orienteering.xml: -------------------------------------------------------------------------------- 1 | 6 | 11 | 14 | 15 | -------------------------------------------------------------------------------- /app/res/drawable/service_file.xml: -------------------------------------------------------------------------------- 1 | 6 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/org/runnerup/util/NetworkUtils.java: -------------------------------------------------------------------------------- 1 | package org.runnerup.util; 2 | 3 | import android.content.Context; 4 | import android.net.ConnectivityManager; 5 | import android.net.NetworkInfo; 6 | 7 | public class NetworkUtils { 8 | public static boolean isNetworkAvailable(Context context) { 9 | ConnectivityManager cm = 10 | (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 11 | NetworkInfo netInfo = cm.getActiveNetworkInfo(); 12 | return netInfo != null && netInfo.isConnectedOrConnecting(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /app/res/drawable/ic_watch_white_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/res/layout/start_fab.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /release.properties.sample: -------------------------------------------------------------------------------- 1 | # Sample release.properties. 2 | # Specifies the details of the keystore and key that will sign a release build 3 | # 4 | # Make a copy of this file as 'release.properties' and it will be used to sign release builds. 5 | # 'release.properties' will not be added to the repository 6 | 7 | # Path of keystore, either absolute or relative to the project's top directory 8 | keyStore=/path/to/keystore.jks 9 | keyStorePassword=my_keystore_password 10 | # The name of the alias in the keystore that you wish to use for signing 11 | keyAlias=runnerup 12 | keyAliasPassword=my_key_alias_password -------------------------------------------------------------------------------- /app/res/drawable/switch_upload.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/listings/play/privacy.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |

RunnerUp records location (GPS) when an activity is started, as well steps (for cadence). 4 |
The recording is done also when the app is in background (a notification is always shown when location is enabled) 5 |
6 |
A user can export this information to accounts (files or web services), the information is not shared in any other way. 7 |
8 |

9 |

The external accounts have separate privacy policies.

10 |

Note that usage of the map has a separate policy: MapBox privacy policy

11 | 12 | 13 | -------------------------------------------------------------------------------- /app/res/drawable-v21/ic_tab_history_24dp.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /hrdevice/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/res/drawable/ic_gps_3.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 15 | 16 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # R8 is not displaying warnings for configuration issues, proguard may be required 2 | # Build with ./gradlew app:minifyLatestReleaseWithProguard 3 | #android.enableR8=false 4 | android.enableJetifier=true 5 | android.useAndroidX=true 6 | org.gradle.caching = true 7 | org.gradle.parallel = true 8 | org.gradle.configureondemand = true 9 | org.gradle.vfs.watch = true 10 | org.gradle.unsafe.configuration-cache=true 11 | android.nonTransitiveRClass=true 12 | android.nonFinalResIds=true 13 | # org.runnerup.free=true 14 | # org.gradle.jvmargs=-Xmx4096M 15 | # org.runnerup.hr.disableAntPlus=true 16 | # org.runnerup.wear.disable=true 17 | 18 | # Disable map (i.e. neither MapBox nor osmdroid is used) 19 | # org.runnerup.nomap=true 20 | -------------------------------------------------------------------------------- /app/src/main/org/runnerup/workout/SpeedUnit.java: -------------------------------------------------------------------------------- 1 | package org.runnerup.workout; 2 | 3 | import org.runnerup.common.util.Constants; 4 | 5 | public enum SpeedUnit { 6 | SPEED(Constants.SPEED_UNIT.SPEED, org.runnerup.common.R.string.speed), 7 | PACE(Constants.SPEED_UNIT.PACE, org.runnerup.common.R.string.pace); 8 | 9 | final String value; 10 | final int textId; 11 | 12 | SpeedUnit(String val, int textId) { 13 | this.value = val; 14 | this.textId = textId; 15 | } 16 | 17 | public String getValue() { 18 | return value; 19 | } 20 | 21 | public int getTextId() { 22 | return textId; 23 | } 24 | 25 | public boolean equal(SpeedUnit what) { 26 | return !(what == null || !what.value.equals(this.value)); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /app/res/drawable/ic_gps_2.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 16 | 17 | -------------------------------------------------------------------------------- /app/res/drawable/ic_gps_1.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 13 | 17 | 18 | -------------------------------------------------------------------------------- /app/res/drawable-v24/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /app/src/main/org/runnerup/notification/NotificationManagerDisplayStrategy.java: -------------------------------------------------------------------------------- 1 | package org.runnerup.notification; 2 | 3 | import android.app.Notification; 4 | import android.app.NotificationManager; 5 | 6 | public class NotificationManagerDisplayStrategy implements NotificationDisplayStrategy { 7 | private final NotificationManager notificationManager; 8 | 9 | public NotificationManagerDisplayStrategy(NotificationManager notificationManager) { 10 | this.notificationManager = notificationManager; 11 | } 12 | 13 | @Override 14 | public void notify(int notificationId, Notification notification) { 15 | notificationManager.notify(notificationId, notification); 16 | } 17 | 18 | @Override 19 | public void cancel(int notificationId) { 20 | notificationManager.cancel(notificationId); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/res/drawable/ic_gps_0.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 14 | 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/org/runnerup/workout/feedback/HRMStateChangeFeedback.java: -------------------------------------------------------------------------------- 1 | package org.runnerup.workout.feedback; 2 | 3 | import android.content.Context; 4 | import org.runnerup.workout.HRMStateTrigger; 5 | import org.runnerup.workout.Scope; 6 | import org.runnerup.workout.Workout; 7 | 8 | public class HRMStateChangeFeedback extends AudioFeedback { 9 | public HRMStateChangeFeedback(HRMStateTrigger trigger) { 10 | // Set temporary id, overridden in getCue() 11 | super(org.runnerup.common.R.string.cue_hrm_connection_lost); 12 | } 13 | 14 | String getCue(Workout w, Context ctx) { 15 | return (formatter.getCueString( 16 | (w.getHeartRate(Scope.CURRENT) == 0) 17 | ? org.runnerup.common.R.string.cue_hrm_connection_lost 18 | : org.runnerup.common.R.string.cue_hrm_connection_restored)); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Documentation/workout.txt: -------------------------------------------------------------------------------- 1 | = name + 2 | 3 | = ? ? * ? 4 | 5 | = running | cycling 6 | 7 | = active | resting | recovery | warmup | cooldown 8 | 9 | = time | distance | pace | speed 10 | 11 | = workout | activity | lap 12 | 13 | = value 14 | 15 | = pace | speed | heart rate | heart rate zone 16 | 17 | = [ | ] + 18 | 19 | = first interval 20 | 21 | = 22 | 23 | = started | completed | paused | resumed 24 | 25 | =