forked from upstream-mirrors/OpenTracks
Compare commits
102 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| bfbe868487 | |||
| 1c29f23c1d | |||
| f081a57348 | |||
| a5cdf21322 | |||
| 6d0f1ba773 | |||
| eb541f29f1 | |||
| 1e905f4f31 | |||
| 63b7aecdb7 | |||
| 797f7b74d5 | |||
| f2d276c246 | |||
| 02b273c102 | |||
| 42490114e5 | |||
| 3a1e2b358b | |||
| c68a52b5fb | |||
| 40cc2e73c9 | |||
| c1b59e8c18 | |||
| aa411c2c76 | |||
| 77f03dcc28 | |||
| 54fa2903ed | |||
| 3840f57317 | |||
| 87e0980695 | |||
| af8d9c08ab | |||
| c9231a7640 | |||
| acb2044a43 | |||
| c07d6124f9 | |||
| 8991d7bf0d | |||
| c289fd174d | |||
| 5899235b2b | |||
| 3cb04a1ca0 | |||
| 9fb5cf33ca | |||
| a20cc17215 | |||
| 0edb72aaed | |||
| 1f83b71336 | |||
| 4c8e87614f | |||
| 6bb85227ac | |||
| 5045b9a222 | |||
| 5c72855ec5 | |||
| 90f0d438d2 | |||
| eb9d483d3e | |||
| 6f7a3e7069 | |||
| 690914e176 | |||
| 4856f5d213 | |||
| 221f711f1d | |||
| 7485b5555e | |||
| a6717be586 | |||
| 690034d667 | |||
| 924be9b707 | |||
| de7e6ccfb2 | |||
| aefb13dda7 | |||
| bbe3eda989 | |||
| d2dc3140ec | |||
| f635697cc8 | |||
| de351f329e | |||
| 84c2c8e962 | |||
| c9519d9bd3 | |||
| 191a6e836a | |||
| 42f6dea112 | |||
| 8fb5356043 | |||
| 1f4251a68a | |||
| 6d7cedbaf9 | |||
| bc37f90c2e | |||
| c7ccdc0bb2 | |||
| ec98a67f44 | |||
| e65b8989d3 | |||
| 8656681e1d | |||
| afbd3aa997 | |||
| f16b6d9fe7 | |||
| 8973ff77bf | |||
| 2c9e8c7465 | |||
| b319ce805d | |||
| 2c1bad8c2c | |||
| ed10868716 | |||
| 6749f484e8 | |||
| 32891fbf94 | |||
| 1d7c71ec8d | |||
| d106993f2d | |||
| 7ebd532edb | |||
| 823dc1c12b | |||
| 26490f5a66 | |||
| d299dbdf06 | |||
| b5555e302f | |||
| 3030b4dfd9 | |||
| a5431b1cf5 | |||
| 9314221647 | |||
| 9bb9d5c283 | |||
| 1095a1442f | |||
| d373fdaaeb | |||
| 5278ba4d35 | |||
| 9b71b7f88c | |||
| bc96c2c05b | |||
| e655762c72 | |||
| 71c385a1a9 | |||
| b947a727e7 | |||
| 470f23afa8 | |||
| 0a1f9dfe41 | |||
| 6fcd19bf2e | |||
| 32d9705a4c | |||
| 2ac66c08f2 | |||
| 3b776407fa | |||
| 399f90a8f0 | |||
| b2c2047ca2 | |||
| 838671e2ce |
@@ -13,7 +13,7 @@ jobs:
|
||||
uses: actions/checkout@v2.3.4
|
||||
|
||||
- name: run tests
|
||||
uses: reactivecircus/android-emulator-runner@v2.17.0
|
||||
uses: reactivecircus/android-emulator-runner@v2.19.0
|
||||
with:
|
||||
api-level: ${{ matrix.api-level }}
|
||||
target: ${{ matrix.target }}
|
||||
|
||||
+9
-9
@@ -6,7 +6,7 @@ buildscript {
|
||||
mavenCentral()
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:4.2.1'
|
||||
classpath 'com.android.tools.build:gradle:4.2.2'
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,8 +55,8 @@ android {
|
||||
|
||||
defaultConfig {
|
||||
applicationId "de.dennisguse.opentracks"
|
||||
versionCode 4151
|
||||
versionName "v3.18.4"
|
||||
versionCode 4253
|
||||
versionName "v3.18.6"
|
||||
|
||||
buildConfigField "String", "VERSION_NAME_FULL", "\"${getVersionName()}\""
|
||||
|
||||
@@ -90,18 +90,18 @@ android {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0-alpha06'
|
||||
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
|
||||
|
||||
implementation 'androidx.appcompat:appcompat:1.3.0'
|
||||
implementation 'androidx.preference:preference:1.1.1'
|
||||
implementation 'androidx.documentfile:documentfile:1.0.1'
|
||||
implementation 'com.google.android.material:material:1.3.0'
|
||||
implementation 'com.google.android.material:material:1.4.0'
|
||||
implementation 'com.android.support.constraint:constraint-layout:2.0.4'
|
||||
|
||||
androidTestImplementation 'androidx.test:core:1.3.0'
|
||||
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
|
||||
androidTestImplementation 'androidx.test:rules:1.3.0'
|
||||
androidTestImplementation 'androidx.test:runner:1.3.0'
|
||||
androidTestImplementation 'androidx.test:core:1.4.0'
|
||||
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
|
||||
androidTestImplementation 'androidx.test:rules:1.4.0'
|
||||
androidTestImplementation 'androidx.test:runner:1.4.0'
|
||||
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
|
||||
androidTestImplementation 'org.mockito:mockito-android:3.10.0'
|
||||
}
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
v3. 18. 5: OpenTracks
|
||||
|
||||
التغييرات:
|
||||
- سرعة الإعلان الصوتي شكلي
|
||||
- API <26: رمز المشغل يحذف الخلفية
|
||||
|
||||
بوجفيكسيس:
|
||||
- تسجيل واجهة المستخدم: إظهار القيم الصحيحة
|
||||
- تسجيل واجهة المستخدم: عرض (مرة أخرى) الارتفاع في EGM2008
|
||||
|
||||
المطور:
|
||||
- أذونات Android12 (BLUETOOTH_CONNECT)
|
||||
@@ -0,0 +1 @@
|
||||
تعقب الرياضة التي تحترم تماما خصوصيتك.
|
||||
@@ -0,0 +1 @@
|
||||
OpenTracks
|
||||
@@ -0,0 +1,12 @@
|
||||
v3.18.5: OpenTracks
|
||||
|
||||
Промени:
|
||||
- Конфигуриране на скоростта на гласовите съобщения
|
||||
- API <26: Иконата за стартиране пропуска фона
|
||||
|
||||
Поправки на грешки:
|
||||
- Потребителски интерфейс за запис: показва правилните стойности
|
||||
- Потребителски интерфейс за запис: показва (отново) надморската височина в EGM2008
|
||||
|
||||
Разработчик:
|
||||
- Разрешения за Android12 (BLUETOOTH_CONNECT)
|
||||
@@ -0,0 +1,11 @@
|
||||
OpenTracks е приложение за проследяване на спортни събития, което напълно зачита неприкосновеността на личния ви живот.
|
||||
|
||||
Характеристики:
|
||||
* Спортно проследяване: проследявайте своите спортни дейности и дейности на открито
|
||||
* Снимки и маркери: отбелязвайте интересни места, докато проследявате
|
||||
* Увеличаване и намаляване на надморската височина: чрез барометричен сензор
|
||||
* Надморска височина, показана в EGM2008 (над средното морско равнище); експортирана като WGS84
|
||||
* Гласови съобщения
|
||||
* Поддържа Bluetooth LE сензори: сърдечен ритъм, скорост и разстояние (колоездене), каданс (колоездене) и електромер (колоездене)
|
||||
* Експортиране на данни: експортирайте трасетата като KMZ (включително снимки), KML или GPX
|
||||
* Без достъп до интернет: Не се използва интернет
|
||||
@@ -0,0 +1 @@
|
||||
Спортно проследяване, което напълно зачита поверителността на личните ви данни.
|
||||
@@ -0,0 +1 @@
|
||||
OpenTracks
|
||||
@@ -0,0 +1,12 @@
|
||||
v3.18.5: OpenTracks
|
||||
|
||||
Změny:
|
||||
- Nastavitelná rychlost hlasového hlášení
|
||||
- API <26: Ikona spouštěče vynechává pozadí
|
||||
|
||||
Opravy chyb:
|
||||
- Uživatelské rozhraní nahrávání: zobrazuje správné hodnoty
|
||||
- Uživatelské rozhraní nahrávání: zobrazuje (znovu) nadmořskou výšku v EGM2008
|
||||
|
||||
Vývojáři: Změny v nastaveních: - Zlepšena funkce pro nahrávání a nahrávání letů v letadle:
|
||||
- Oprávnění Android12 (BLUETOOTH_CONNECT)
|
||||
@@ -0,0 +1,11 @@
|
||||
OpenTracks je aplikace pro sledování sportu, která zcela respektuje vaše soukromí.
|
||||
|
||||
Funkce:
|
||||
* Sledování sportu: sledujte své sportovní a outdoorové aktivity.
|
||||
* Fotografie a značky: označte zajímavá místa při sledování
|
||||
* Zvyšování a snižování nadmořské výšky: pomocí barometrického senzoru.
|
||||
* Nadmořská výška se zobrazuje v EGM2008 (nad průměrnou hladinou moře); exportuje se jako WGS84
|
||||
* Hlasová hlášení
|
||||
* Podporuje snímače Bluetooth LE: srdeční tep, rychlost a vzdálenost (cyklistika), kadence (cyklistika) a měřič výkonu (cyklistika).
|
||||
* Export dat: export tras ve formátu KMZ (včetně fotografií), KML nebo GPX.
|
||||
* Bez přístupu k internetu: Internet se nepoužívá
|
||||
@@ -0,0 +1 @@
|
||||
Sportovní tracker, který zcela respektuje vaše soukromí.
|
||||
@@ -0,0 +1 @@
|
||||
OpenTracks
|
||||
@@ -0,0 +1,12 @@
|
||||
v3.18.5: OpenTracks
|
||||
|
||||
Ændringer:
|
||||
- Ændringer: Stemmemeddelelseshastighed kan konfigureres
|
||||
- API <26: Ikonet i startopsætningen udelader baggrund
|
||||
|
||||
Fejlrettelser:
|
||||
- Optagelse UI: Vis korrekte værdier
|
||||
- Optagelse UI: viser (igen) højde i EGM2008
|
||||
|
||||
Udvikler:
|
||||
- Android12-tilladelser (BLUETOOTH_CONNECT)
|
||||
@@ -0,0 +1,11 @@
|
||||
OpenTracks er et program til sporing af sport, der fuldt ud respekterer dit privatliv.
|
||||
|
||||
Funktioner:
|
||||
* Sport tracking: Spor dine sports- og udendørsaktiviteter
|
||||
* Billeder og markører: Markér interessante steder under sporing
|
||||
* Højdeforøgelse og -tab: via barometrisk sensor
|
||||
* Højde vist i EGM2008 (over middelhavets overflade); eksporteret som WGS84
|
||||
* Stemmemeddelelser
|
||||
* Understøtter Bluetooth LE-sensorer: puls, hastighed og distance (cykling), kadence (cykling) og effektmåler (cykling)
|
||||
* Eksport af data: Eksportér spor enten som KMZ (inkl. fotos), KML eller GPX
|
||||
* Ingen internetadgang: Internet bruges ikke
|
||||
@@ -0,0 +1 @@
|
||||
En sportstracker, der respekterer dit privatliv fuldt ud.
|
||||
@@ -0,0 +1 @@
|
||||
OpenTracks
|
||||
@@ -0,0 +1,12 @@
|
||||
v3.18.5: OpenTracks
|
||||
|
||||
Changes:
|
||||
- Voice announcement speed configurable
|
||||
- API <26: Launcher icon omits background
|
||||
|
||||
Bugfixes:
|
||||
- Recording UI: show correct values
|
||||
- Recording UI: show (again) altitude in EGM2008
|
||||
|
||||
Developer:
|
||||
- Android12 permissions (BLUETOOTH_CONNECT)
|
||||
@@ -0,0 +1,16 @@
|
||||
v3.18.6: OpenTracks
|
||||
|
||||
Changes:
|
||||
- "Show on map"-functionality via KML instead of KMZ
|
||||
- Voice announcement do not include app name
|
||||
- While recording: elevation gain/loss is updated every second
|
||||
- Store descriptions translated
|
||||
|
||||
Bufixes:
|
||||
- Fixed invalid voice announcement translations
|
||||
|
||||
Developer:
|
||||
- Android12 permissions (BLUETOOTH_SCAN)
|
||||
- Android12 permissions (ACCESS_COARSE_LOCATION)
|
||||
- Asserting for TrackPoints (testing)
|
||||
- Removed unused translations
|
||||
@@ -0,0 +1,12 @@
|
||||
v3.18.5: OpenTracks
|
||||
|
||||
Ŝanĝoj:
|
||||
- Voĉo anonco rapido configurable
|
||||
- API <26: Launcher ikono forgesas fono
|
||||
|
||||
Bugfixes:
|
||||
- Registranta#? UI: montri ĝentilan valoroj
|
||||
- Registranta#? UI: montri (denove) alteco en EGM2008
|
||||
|
||||
Ellaboranto:
|
||||
- Android12 permesoj (BLUETOOTH_CONNECT)
|
||||
@@ -0,0 +1,11 @@
|
||||
OpenTracks estas sporto spuranta aplikon kiu tute respektas vian privatecon.
|
||||
|
||||
Karakterizaĵoj:
|
||||
* Sporto spurado: spuri via sporto kaj subĉielaj aktivecoj
|
||||
* Fotoj kaj signoj: mark interesaj lokoj dum spurado
|
||||
* Altitudo akiro kaj perdo: tra barometric sentilo
|
||||
* Altitudo montrita en EGM2008 (supre signifas marnivelo); eksportita kiel WGS84
|
||||
* # Vo? o anoncoj
|
||||
* Elportas Bluetooth LE sentiloj: koro imposto, rapido kaj distanco (biciklado), kadenco (biciklado), kaj potenco metro (biciklado)
|
||||
* Eksportado datumoj: eksporti vojetoj aŭ kiel KMZ (incl. fotoj), KML, aŭ GPX
|
||||
* Neniu aliro al Interreto: Internet ne estas uzita
|
||||
@@ -0,0 +1 @@
|
||||
Sporto spuristo ke tute respektas vian privatecon.
|
||||
@@ -0,0 +1 @@
|
||||
OpenTracks
|
||||
@@ -0,0 +1,12 @@
|
||||
v3.18.5: OpenTracks
|
||||
|
||||
Cambios:
|
||||
- Velocidad de los anuncios de voz configurable
|
||||
- API <26: El icono del lanzador omite el fondo
|
||||
|
||||
Corrección de errores:
|
||||
- Recording UI: mostrar valores correctos
|
||||
- UI de grabación: mostrar (de nuevo) la altitud en EGM2008
|
||||
|
||||
Desarrollador:
|
||||
- Permisos Android12 (BLUETOOTH_CONNECT)
|
||||
@@ -1 +1 @@
|
||||
OpenTracks es un tracker deportivo que respeta tu privacidad.
|
||||
OpenTracks es un tracker deportivo que respeta tu privacidad.
|
||||
|
||||
@@ -1 +1 @@
|
||||
OpenTracks
|
||||
OpenTracks
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
v3.18.5: OpenTracks
|
||||
|
||||
Muudatused:
|
||||
- Häälteavituse kiirus konfigureeritav
|
||||
- API <26: Käivitaja ikoon jätab tausta välja.
|
||||
|
||||
Vigade parandused:
|
||||
- Salvestamise UI: näitab õigeid väärtusi
|
||||
- Recording UI: näitab (uuesti) kõrgust EGM2008-s.
|
||||
|
||||
Arendaja:
|
||||
- Android12 õigused (BLUETOOTH_CONNECT)
|
||||
@@ -0,0 +1,11 @@
|
||||
OpenTracks on spordi jälgimise rakendus, mis austab täielikult teie privaatsust.
|
||||
|
||||
Omadused:
|
||||
* Spordi jälgimine: jälgige oma spordi- ja vabaõhutegevust.
|
||||
* Fotod ja markerid: märkige jälgimise ajal huvipakkuvad kohad.
|
||||
* Kõrguse suurenemine ja vähenemine: baromeetrilise anduri abil
|
||||
* Kõrgus näitab EGM2008 (üle keskmise merepinna); eksporditakse WGS84 kujul.
|
||||
* Häälteated
|
||||
* Toetab Bluetooth LE andureid: südame löögisagedus, kiirus ja distants (jalgrattasõit), takistus (jalgrattasõit) ja jõumõõtja (jalgrattasõit).
|
||||
* Andmete eksport: eksportida rajad kas KMZ (sh fotod), KML või GPX kujul.
|
||||
* Interneti-ühendus puudub: Internetti ei kasutata
|
||||
@@ -0,0 +1 @@
|
||||
Spordijälgija, mis austab täielikult teie privaatsust.
|
||||
@@ -0,0 +1 @@
|
||||
OpenTracks
|
||||
@@ -0,0 +1,12 @@
|
||||
v3.18.5: OpenTracks
|
||||
|
||||
Aldaketak:
|
||||
- Ahots iragarkia abiadura konfiguragarria
|
||||
- API <26: Launcher ikonoa alde batera uzten ditu aurrekariak
|
||||
|
||||
Bugfixes:
|
||||
- Grabaketa UI: erakutsi zuzena balioak
|
||||
- Grabaketa UI: erakutsi (berriro) altitude EGM2008
|
||||
|
||||
Sustatzailearen:
|
||||
- Android12 baimenak (BLUETOOTH_CONNECT)
|
||||
@@ -0,0 +1,11 @@
|
||||
OpenTracks kirol bat da, jarraipenerako aplikazio hori guztiz zure pribatutasuna errespetatzen.
|
||||
|
||||
Ezaugarri:
|
||||
* Kirol jarraipena: track zure kirol eta kanpoko ekintzak
|
||||
* Argazkiak eta markatzaileak: mark interesgarria municipios bitartean jarraipena
|
||||
* Altitudea irabazia eta galera: via barometric-sentsore
|
||||
* Altitudea erakutsi EGM2008 (goian esan nahi itsasoaren maila); gisa esportatuko WGS84
|
||||
* Ahots deialdiak
|
||||
* Onartzen Bluetooth LE sentsoreak: bihotz-tasa, abiadura eta distantzia (txirrindularitza), kadentzia (txirrindularitza), eta potentzia metro (txirrindularitza)
|
||||
* Datuak esportatu: export ibilbideak bai KMZ (incl. argazkiak), KML, edo GPX
|
||||
* Ez da Interneterako sarbidea: Internet ez da erabiltzen
|
||||
@@ -0,0 +1 @@
|
||||
Kirol bat tracker hori erabat zure pribatutasuna errespetatzen.
|
||||
@@ -0,0 +1 @@
|
||||
OpenTracks
|
||||
@@ -0,0 +1,12 @@
|
||||
v3.18.5: OpenTracks
|
||||
|
||||
Muutokset:
|
||||
- Ääni-ilmoituksen nopeus konfiguroitavissa
|
||||
- API <26: Käynnistimen kuvake jättää taustan pois.
|
||||
|
||||
Virheenkorjaukset:
|
||||
- Tallennuksen käyttöliittymä: näyttää oikeat arvot
|
||||
- Tallennuksen käyttöliittymä: näytä (uudelleen) korkeus EGM2008:ssa.
|
||||
|
||||
Kehittäjä:
|
||||
- Android12-oikeudet (BLUETOOTH_CONNECT)
|
||||
@@ -0,0 +1,11 @@
|
||||
OpenTracks on urheiluseurantasovellus, joka kunnioittaa täysin yksityisyyttäsi.
|
||||
|
||||
Ominaisuudet:
|
||||
* Urheilun seuranta: seuraa urheilua ja ulkoilua.
|
||||
* Kuvat ja merkit: merkitse mielenkiintoiset paikat seurannan aikana.
|
||||
* Korkeuden nousu ja lasku: barometrisen anturin avulla.
|
||||
* Korkeus näytetään EGM2008:na (keskimääräisen merenpinnan yläpuolella); viedään WGS84-muodossa.
|
||||
* Ääni-ilmoitukset
|
||||
* Tukee Bluetooth LE -antureita: syke, nopeus ja etäisyys (pyöräily), askeltiheys (pyöräily) ja tehomittari (pyöräily).
|
||||
* Tietojen vienti: vie radat joko KMZ- (sis. valokuvat), KML- tai GPX-muodossa.
|
||||
* Ei Internet-yhteyttä: Internetiä ei käytetä
|
||||
@@ -0,0 +1 @@
|
||||
Urheilun seurantalaite, joka kunnioittaa täysin yksityisyyttäsi.
|
||||
@@ -0,0 +1 @@
|
||||
OpenTracks
|
||||
@@ -0,0 +1,12 @@
|
||||
v3.18.5 : OpenTracks
|
||||
|
||||
Changements :
|
||||
- Vitesse d'annonce vocale configurable
|
||||
- API <26 : l'icône du lanceur n'a pas d'arrière-plan
|
||||
|
||||
Corrections de bugs :
|
||||
- Interface utilisateur d'enregistrement : afficher les valeurs correctes
|
||||
- Interface utilisateur d'enregistrement : afficher (à nouveau) l'altitude dans EGM2008
|
||||
|
||||
Développeur :
|
||||
- Autorisations Android12 (BLUETOOTH_CONNECT)
|
||||
@@ -4,6 +4,8 @@ Fonctionnalités :
|
||||
|
||||
* Suivi d'activité : enregistre vos activités sportives et de plein air
|
||||
* Photos et repères : ajout de photos et de repères pendant l'enregistrement de l'activité
|
||||
* Rythme cardiaque : support des capteurs Bluetooth LE
|
||||
* Export : export des traces au format KML ou GPX
|
||||
* Dénivelé positif et négatif: via capteur de pression barométrique
|
||||
* Synthèse vocale
|
||||
* Prise en charge des capteurs Bluetooth LE : rythme cardiaque, vitesse et distance (vélo), cadence de pédalage (vélo), et capteur de puissance (vélo)
|
||||
* Export : export des traces au format KMZ (photos incluses), KML ou GPX
|
||||
* Pas d'accès internet requis : Internet n'est pas nécessaire pour le fonctionnement de l'application
|
||||
|
||||
@@ -1 +1 @@
|
||||
OpenTracks - Suivi d'activités sportives respectueux de votre vie privée.
|
||||
OpenTracks - Suivi d'activités sportives respectueux de votre vie privée.
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
OpenTracks
|
||||
@@ -0,0 +1,12 @@
|
||||
v3.18.5: OpenTracks
|
||||
|
||||
Változások:
|
||||
- Hangbemondás sebessége konfigurálható
|
||||
- API <26: Az indító ikon kihagyja a hátteret.
|
||||
|
||||
Hibajavítások:
|
||||
- Felvételi felhasználói felület: helyes értékek megjelenítése
|
||||
- Felvételi felhasználói felület: EGM2008-ban (újra) magasság megjelenítése
|
||||
|
||||
Fejlesztő:
|
||||
- Android12 engedélyek (BLUETOOTH_CONNECT)
|
||||
@@ -0,0 +1,11 @@
|
||||
Az OpenTracks egy sportkövető alkalmazás, amely teljes mértékben tiszteletben tartja az Ön magánéletét.
|
||||
|
||||
Tulajdonságok:
|
||||
* Sportkövetés: kövesse nyomon sport- és szabadtéri tevékenységeit.
|
||||
* Fotók és jelölések: jelölje meg az érdekes helyeket a követés során
|
||||
* Magassági nyereség és veszteség: barometrikus érzékelőn keresztül
|
||||
* Magasság EGM2008-ban (átlagos tengerszint feletti magasság); exportálható WGS84 formátumban.
|
||||
* Hangbejelentések
|
||||
* Támogatja a Bluetooth LE érzékelőket: pulzusszám, sebesség és távolság (kerékpározás), lépésszám (kerékpározás) és teljesítménymérő (kerékpározás).
|
||||
* Adatok exportálása: a pályák exportálása KMZ (fényképekkel együtt), KML vagy GPX formátumban.
|
||||
* Nincs internet-hozzáférés: Az internetet nem használja
|
||||
@@ -0,0 +1 @@
|
||||
Egy sportkövető, amely teljes mértékben tiszteletben tartja a magánéletét.
|
||||
@@ -0,0 +1 @@
|
||||
OpenTracks
|
||||
@@ -0,0 +1,12 @@
|
||||
v3. 18. 5: OpenTracks
|
||||
|
||||
Perubahan:
|
||||
- Voice mengumumkan kecepatan dapat diaturname
|
||||
- API <26: ikon peluncur omits latar belakang
|
||||
|
||||
Bugfixesunit-format:
|
||||
- Recording UI: Tampilkan nilai yang benar
|
||||
- Recording UI: Tampilkan (lagi) ketinggian di EGM2008
|
||||
|
||||
Pengembang:
|
||||
- Android12 permissions (BLUETOOTH_CONNECT)
|
||||
@@ -0,0 +1 @@
|
||||
Sebuah pelacak olahraga yang benar-benar menghormati privasi Anda.
|
||||
@@ -0,0 +1 @@
|
||||
OpenTracks
|
||||
@@ -0,0 +1,12 @@
|
||||
v3.18.5: OpenTracks
|
||||
|
||||
Modifiche:
|
||||
- Velocità degli annunci vocali configurabile
|
||||
- API <26: L'icona del lanciatore omette lo sfondo
|
||||
|
||||
Bugfix:
|
||||
- UI di registrazione: mostra i valori corretti
|
||||
- Registrazione UI: mostra (di nuovo) l'altitudine in EGM2008
|
||||
|
||||
Sviluppatore:
|
||||
- Permessi Android12 (BLUETOOTH_CONNECT)
|
||||
@@ -0,0 +1 @@
|
||||
Un tracker sportivo che rispetta completamente la tua privacy.
|
||||
@@ -0,0 +1 @@
|
||||
OpenTracks
|
||||
@@ -0,0 +1,12 @@
|
||||
v3.18.5: OpenTracks
|
||||
|
||||
Veranderingen:
|
||||
- Spraak aankondiging snelheid configureerbaar
|
||||
- API <26: Launcher-pictogram laat achtergrond weg
|
||||
|
||||
Bugfixes:
|
||||
- Opname UI: toon juiste waarden
|
||||
- Opname UI: toon (opnieuw) hoogte in EGM2008
|
||||
|
||||
Ontwikkelaar:
|
||||
- Android12-toestemmingen (BLUETOOTH_CONNECT)
|
||||
@@ -0,0 +1,11 @@
|
||||
OpenTracks is een sport tracking applicatie die uw privacy volledig respecteert.
|
||||
|
||||
Kenmerken:
|
||||
* Sport tracking: volg uw sport en outdoor activiteiten
|
||||
* Foto's en markeringen: markeer interessante locaties tijdens het volgen
|
||||
* Hoogte winst en verlies: via barometrische sensor
|
||||
* Hoogte weergegeven in EGM2008 (boven gemiddeld zeeniveau); geëxporteerd als WGS84
|
||||
* Spraakaankondigingen
|
||||
* Ondersteunt Bluetooth LE-sensoren: hartslag, snelheid en afstand (fietsen), cadans (fietsen), en vermogensmeter (fietsen)
|
||||
* Exporteer gegevens: exporteer tracks als KMZ (incl. foto's), KML, of GPX
|
||||
* Geen toegang tot internet: Internet wordt niet gebruikt
|
||||
@@ -0,0 +1 @@
|
||||
Een sport tracker die uw privacy volledig respecteert.
|
||||
@@ -0,0 +1 @@
|
||||
OpenTracks
|
||||
@@ -0,0 +1,12 @@
|
||||
v3.18.5: OpenTracks
|
||||
|
||||
Zmiany:
|
||||
- Konfigurowalna prędkość komunikatów głosowych
|
||||
- API <26: Ikona programu uruchamiającego pomija tło
|
||||
|
||||
Poprawki błędów:
|
||||
- UI nagrywania: pokazuj poprawne wartości
|
||||
- Interfejs użytkownika nagrywania: pokazuj (ponownie) wysokość w EGM2008
|
||||
|
||||
Deweloper:
|
||||
- Uprawnienia Android12 (BLUETOOTH_CONNECT)
|
||||
@@ -0,0 +1,11 @@
|
||||
OpenTracks jest aplikacją do śledzenia sportu, która całkowicie szanuje Twoją prywatność.
|
||||
|
||||
Cechy:
|
||||
* Śledzenie sportu: śledź swoją aktywność sportową i outdoorową.
|
||||
* Zdjęcia i markery: zaznacz interesujące lokalizacje podczas śledzenia.
|
||||
* Przyrost i utrata wysokości: poprzez czujnik barometryczny
|
||||
* Wysokość pokazana w EGM2008 (powyżej średniego poziomu morza); wyeksportowana jako WGS84
|
||||
* Komunikaty głosowe
|
||||
* Obsługa czujników Bluetooth LE: tętno, prędkość i dystans (kolarstwo), kadencja (kolarstwo) i miernik mocy (kolarstwo)
|
||||
* Eksport danych: eksport tras jako KMZ (w tym zdjęcia), KML lub GPX
|
||||
* Brak dostępu do Internetu: Internet nie jest używany
|
||||
@@ -0,0 +1 @@
|
||||
Sport tracker, który całkowicie szanuje Twoją prywatność.
|
||||
@@ -0,0 +1 @@
|
||||
OpenTracks
|
||||
@@ -0,0 +1,12 @@
|
||||
v3.18.5: OpenTracks
|
||||
|
||||
Alterações:
|
||||
- A velocidade do anúncio de voz agora é configurável
|
||||
- API <26: o ícone do iniciador omite o fundo
|
||||
|
||||
Correções de bugs:
|
||||
- UI de gravação: mostra os valores corretos
|
||||
- UI de gravação: mostra (novamente) a altitude no EGM2008
|
||||
|
||||
Desenvolvedor:
|
||||
- Permissões do Android12 (BLUETOOTH_CONNECT)
|
||||
@@ -0,0 +1,11 @@
|
||||
OpenTracks é um aplicativo de rastreamento de esportes que respeita totalmente a sua privacidade.
|
||||
|
||||
Características:
|
||||
* Rastreamento de esportes: monitore seu esporte e atividades ao ar livre
|
||||
* Fotos e marcadores: marque locais interessantes durante o rastreamento
|
||||
* Ganho e perda de altitude: via sensor barométrico
|
||||
* Altitude mostrada no EGM2008 (acima do nível médio do mar); exportado como WGS84
|
||||
* Anúncios de voz
|
||||
* Suporta sensores Bluetooth LE: frequência cardíaca, velocidade e distância (ciclismo), cadência (ciclismo) e medidor de potência (ciclismo)
|
||||
* Exportar dados: exporte trilhas como KMZ (incluindo fotos), KML ou GPX
|
||||
* Sem acesso à Internet: a Internet não é usada
|
||||
@@ -0,0 +1 @@
|
||||
Um rastreador esportivo que respeita totalmente a sua privacidade.
|
||||
@@ -0,0 +1 @@
|
||||
OpenTracks
|
||||
@@ -0,0 +1,12 @@
|
||||
v3.18.5: OpenTracks
|
||||
|
||||
Mudanças:
|
||||
- Velocidade do anúncio por voz configurável
|
||||
- API <26: ícone do lançador omite o fundo
|
||||
|
||||
Correcções de bugs:
|
||||
- IU de gravação: mostrar valores correctos
|
||||
- Gravação UI: mostrar (novamente) a altitude no EGM2008
|
||||
|
||||
Desenvolvedor:
|
||||
- Android12 permissões (BLUETOOTH_CONNECT)
|
||||
@@ -0,0 +1,11 @@
|
||||
OpenTracks é um aplicativo de rastreamento de esportes que respeita totalmente a sua privacidade.
|
||||
|
||||
Características:
|
||||
* Rastreamento de esportes: monitore seu esporte e atividades ao ar livre
|
||||
* Fotos e marcadores: marque locais interessantes durante o rastreamento
|
||||
* Ganho e perda de altitude: via sensor barométrico
|
||||
* Altitude mostrada no EGM2008 (acima do nível médio do mar); exportado como WGS84
|
||||
* Anúncios de voz
|
||||
* Suporta sensores Bluetooth LE: frequência cardíaca, velocidade e distância (ciclismo), cadência (ciclismo) e medidor de potência (ciclismo)
|
||||
* Exportar dados: exporte trilhas como KMZ (incluindo fotos), KML ou GPX
|
||||
* Sem acesso à Internet: a Internet não é usada
|
||||
@@ -0,0 +1 @@
|
||||
Um rastreador desportivo que respeita completamente a sua privacidade.
|
||||
@@ -0,0 +1 @@
|
||||
OpenTracks
|
||||
@@ -0,0 +1,12 @@
|
||||
v3.18.5: OpenTracks
|
||||
|
||||
Изменения:
|
||||
- Настраивается скорость голосового оповещения
|
||||
- API <26: Иконка запуска не отображает фон
|
||||
|
||||
Исправления:
|
||||
- Пользовательский интерфейс записи: показывать правильные значения
|
||||
- Пользовательский интерфейс записи: показывать (снова) высоту в EGM2008
|
||||
|
||||
Разработчик:
|
||||
- Разрешения Android12 (BLUETOOTH_CONNECT)
|
||||
@@ -0,0 +1,11 @@
|
||||
OpenTracks - это приложение для спортивного слежения, которое полностью уважает вашу конфиденциальность.
|
||||
|
||||
Особенности:
|
||||
* Спортивный трекинг: отслеживайте свои занятия спортом и активный отдых.
|
||||
* Фотографии и маркеры: отмечайте интересные места во время отслеживания.
|
||||
* Набор и потеря высоты: через барометрический датчик.
|
||||
* Высота отображается в EGM2008 (над средним уровнем моря); экспортируется в WGS84.
|
||||
* Голосовые уведомления
|
||||
* Поддержка датчиков Bluetooth LE: пульс, скорость и расстояние (велоспорт), каденция (велоспорт) и измеритель мощности (велоспорт)
|
||||
* Экспорт данных: экспорт треков в формате KMZ (включая фотографии), KML или GPX.
|
||||
* Нет доступа к Интернету: Интернет не используется
|
||||
@@ -0,0 +1 @@
|
||||
Спортивный трекер, который полностью соблюдает вашу конфиденциальность.
|
||||
@@ -0,0 +1 @@
|
||||
OpenTracks
|
||||
@@ -0,0 +1,12 @@
|
||||
v3.18.5: OpenTracks
|
||||
|
||||
Zmeny:
|
||||
- Nastaviteľná rýchlosť hlasového hlásenia
|
||||
- API <26: Ikona spúšťača vynecháva pozadie
|
||||
|
||||
Opravy chýb:
|
||||
- Nahrávanie používateľského rozhrania: zobrazenie správnych hodnôt
|
||||
- Používateľské rozhranie nahrávania: zobrazenie (opäť) nadmorskej výšky v EGM2008
|
||||
|
||||
Vývojár:
|
||||
- Android12 oprávnenia (BLUETOOTH_CONNECT)
|
||||
@@ -0,0 +1,11 @@
|
||||
OpenTracks je aplikácia na sledovanie športu, ktorá úplne rešpektuje vaše súkromie.
|
||||
|
||||
Funkcie:
|
||||
* Sledovanie športu: sledujte svoje športové a outdoorové aktivity.
|
||||
* Fotografie a značky: označte zaujímavé miesta počas sledovania
|
||||
* Zvyšovanie a znižovanie nadmorskej výšky: prostredníctvom barometrického snímača
|
||||
* Nadmorská výška zobrazená v EGM2008 (nad strednou hladinou mora); exportovaná ako WGS84
|
||||
* Hlasové hlásenia
|
||||
* Podporuje snímače Bluetooth LE: srdcový tep, rýchlosť a vzdialenosť (cyklistika), kadencia (cyklistika) a merač výkonu (cyklistika)
|
||||
* Export údajov: export tratí vo formáte KMZ (vrátane fotografií), KML alebo GPX
|
||||
* Bez prístupu na internet: Internet sa nepoužíva
|
||||
@@ -0,0 +1 @@
|
||||
Športový tracker, ktorý úplne rešpektuje vaše súkromie.
|
||||
@@ -0,0 +1 @@
|
||||
OpenTracks
|
||||
@@ -0,0 +1,12 @@
|
||||
v3.18.5: OpenTracks
|
||||
|
||||
Spremembe:
|
||||
- Nastavljiva hitrost glasovnega napovedovanja
|
||||
- API <26: ikona zaganjalnika izpusti ozadje
|
||||
|
||||
Popravki napak:
|
||||
- Pripomoček za snemanje: prikaže pravilne vrednosti
|
||||
- Uporabniški vmesnik za snemanje: (ponovno) prikaže nadmorsko višino v EGM2008
|
||||
|
||||
Razvijalec:
|
||||
- Android12 dovoljenja (BLUETOOTH_CONNECT)
|
||||
@@ -0,0 +1,11 @@
|
||||
OpenTracks je aplikacija za sledenje športu, ki popolnoma spoštuje vašo zasebnost.
|
||||
|
||||
Značilnosti:
|
||||
* Športno sledenje: sledite svojim športnim aktivnostim in aktivnostim na prostem.
|
||||
* Fotografije in oznake: med sledenjem označite zanimive lokacije
|
||||
* Pridobivanje in izgubljanje nadmorske višine: prek barometričnega senzorja
|
||||
* Nadmorska višina je prikazana v EGM2008 (nad srednjo morsko gladino); izvozi se kot WGS84
|
||||
* Glasovna obvestila
|
||||
* Podpira senzorje Bluetooth LE: srčni utrip, hitrost in razdalja (kolesarjenje), kadenca (kolesarjenje) in merilnik moči (kolesarjenje)
|
||||
* Izvoz podatkov: izvozite proge kot KMZ (vključno s fotografijami), KML ali GPX
|
||||
* Brez dostopa do interneta: Internet se ne uporablja
|
||||
@@ -0,0 +1 @@
|
||||
Športni sledilnik, ki popolnoma spoštuje vašo zasebnost.
|
||||
@@ -0,0 +1 @@
|
||||
OpenTracks
|
||||
@@ -0,0 +1,12 @@
|
||||
v3.18.5: OpenTracks
|
||||
|
||||
Förändring:
|
||||
- Röst tillkännagivande hastighet konfigurerbar
|
||||
- API < 26: Launcher Ikon utelämnar bakgrund
|
||||
|
||||
Buggfixar:
|
||||
- Inspelning UI: visa korrekta värden
|
||||
- Inspelning UI: visa (igen) höjd i EGM2008
|
||||
|
||||
Utvecklare:
|
||||
- Android12 behörigheter (BLUETOOTH_CONNECT)
|
||||
@@ -0,0 +1 @@
|
||||
En sport tracker som helt respekterar din integritet.
|
||||
@@ -0,0 +1 @@
|
||||
OpenTracks
|
||||
@@ -0,0 +1,12 @@
|
||||
v3.18.5: OpenTracks
|
||||
|
||||
Thay đổi:
|
||||
- Giọng nói thông báo tốc độ cấu hình
|
||||
- HIỂN <26: biểu tượng Phóng bỏ qua nền
|
||||
|
||||
Lỗi:
|
||||
- Ghi UI: hiển thị chính xác giá trị
|
||||
- Ghi UI: show (một lần nữa) độ cao trong EGM2008
|
||||
|
||||
Phát triển:
|
||||
- Android12 quyền (BLUETOOTH_CONNECT)
|
||||
@@ -0,0 +1,11 @@
|
||||
OpenTracks là một môn thể thao theo dõi ứng dụng hoàn toàn tôn trọng sự riêng tư.
|
||||
|
||||
Tính năng:
|
||||
* Thể theo dõi theo dõi thể thao và hoạt động ngoài trời
|
||||
* Ảnh và đánh dấu: đánh dấu địa điểm thú vị trong khi theo dõi
|
||||
* Độ cao được và mất: thông qua khí quyển cảm biến
|
||||
* Độ cao thể hiện trong EGM2008 (trên mực nước biển); xuất khẩu như WGS84
|
||||
* Tiếng nói thông báo
|
||||
* Hỗ trợ Bluetooth LE cảm biến: tim, tốc độ và khoảng cách (đi xe đạp), nhịp (đi xe đạp), và đồng hồ điện (đi xe đạp)
|
||||
* Xuất dữ liệu: xuất bài hát hoặc là BIỂU (bao gồm. ảnh) DÕI hay C
|
||||
* Không có Internet: Internet là không được sử dụng
|
||||
@@ -0,0 +1 @@
|
||||
Một môn thể thao theo dõi mà hoàn toàn tôn trọng sự riêng tư.
|
||||
@@ -0,0 +1 @@
|
||||
OpenTracks
|
||||
@@ -0,0 +1,12 @@
|
||||
v3.18.5: OpenTracks
|
||||
|
||||
变化。
|
||||
- 语音播报速度可配置
|
||||
- API <26: 启动器图标省略背景
|
||||
|
||||
错误修正。
|
||||
- 录音用户界面:显示正确的数值
|
||||
- 录音用户界面:显示(再次)EGM2008的高度
|
||||
|
||||
开发者。
|
||||
- Android12权限(BLUETOOTH_CONNECT)
|
||||
@@ -0,0 +1,11 @@
|
||||
OpenTracks是一个完全尊重你的隐私的运动跟踪应用程序。
|
||||
|
||||
特点。
|
||||
* 运动追踪:追踪你的运动和户外活动
|
||||
* 照片和标记:在跟踪时标记有趣的地点
|
||||
* 海拔增减:通过气压传感器
|
||||
* 高度显示为EGM2008(平均海平面以上);导出为WGS84
|
||||
* 语音播报
|
||||
* 支持蓝牙LE传感器:心率、速度和距离(骑车)、节奏(骑车)和功率计(骑车)。
|
||||
* 导出数据:以KMZ(包括照片)、KML或GPX形式导出轨迹
|
||||
* 没有互联网接入。不使用互联网
|
||||
@@ -0,0 +1 @@
|
||||
一个完全尊重你隐私的运动追踪器。
|
||||
@@ -0,0 +1 @@
|
||||
OpenTracks
|
||||
@@ -1,6 +1,7 @@
|
||||
package de.dennisguse.opentracks;
|
||||
|
||||
|
||||
import android.content.Context;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.ViewParent;
|
||||
@@ -9,16 +10,18 @@ import androidx.test.espresso.DataInteraction;
|
||||
import androidx.test.espresso.UiController;
|
||||
import androidx.test.espresso.ViewAction;
|
||||
import androidx.test.espresso.ViewInteraction;
|
||||
import androidx.test.filters.LargeTest;
|
||||
import androidx.test.rule.ActivityTestRule;
|
||||
import androidx.test.rule.GrantPermissionRule;
|
||||
import androidx.test.ext.junit.rules.ActivityScenarioRule;
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
import androidx.test.filters.LargeTest;
|
||||
import androidx.test.platform.app.InstrumentationRegistry;
|
||||
import androidx.test.rule.GrantPermissionRule;
|
||||
|
||||
import org.hamcrest.Description;
|
||||
import org.hamcrest.Matcher;
|
||||
import org.hamcrest.TypeSafeMatcher;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.rules.TestRule;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import static androidx.test.espresso.Espresso.onData;
|
||||
@@ -44,12 +47,15 @@ import static org.hamcrest.Matchers.is;
|
||||
public class EspressoCategoryUnitTest {
|
||||
|
||||
@Rule
|
||||
public ActivityTestRule<TrackListActivity> mActivityTestRule = new ActivityTestRule<>(TrackListActivity.class);
|
||||
public ActivityScenarioRule<TrackListActivity> mActivityTestRule = new ActivityScenarioRule<>(TrackListActivity.class);
|
||||
|
||||
@Rule
|
||||
public GrantPermissionRule mGrantPermissionRule =
|
||||
GrantPermissionRule.grant(
|
||||
"android.permission.ACCESS_FINE_LOCATION");
|
||||
public TestRule mRuntimePermissionRule = GrantPermissionRule.grant(android.Manifest.permission.ACCESS_FINE_LOCATION);
|
||||
|
||||
private final Context context = InstrumentationRegistry.getInstrumentation().getTargetContext();
|
||||
|
||||
@Rule
|
||||
public TestRule mLocaleRule = new PreferenceMetricUnitRule(context, true);
|
||||
|
||||
@Test
|
||||
public void changeBetweenCategoryUpdateProperlyUnitTest() {
|
||||
|
||||
@@ -18,16 +18,17 @@ import androidx.test.espresso.ViewInteraction;
|
||||
import androidx.test.espresso.action.MotionEvents;
|
||||
import androidx.test.espresso.assertion.ViewAssertions;
|
||||
import androidx.test.ext.junit.rules.ActivityScenarioRule;
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
import androidx.test.filters.LargeTest;
|
||||
import androidx.test.platform.app.InstrumentationRegistry;
|
||||
import androidx.test.rule.GrantPermissionRule;
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
|
||||
import org.hamcrest.Description;
|
||||
import org.hamcrest.Matcher;
|
||||
import org.hamcrest.TypeSafeMatcher;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
@@ -55,7 +56,7 @@ public class EspressoDeleteTrackTest {
|
||||
public ActivityScenarioRule<TrackListActivity> mActivityTestRule = new ActivityScenarioRule<>(TrackListActivity.class);
|
||||
|
||||
@Rule
|
||||
public GrantPermissionRule mGrantPermissionRule = GrantPermissionRule.grant("android.permission.ACCESS_FINE_LOCATION");
|
||||
public GrantPermissionRule mGrantPermissionRule = GrantPermissionRule.grant(android.Manifest.permission.ACCESS_FINE_LOCATION);
|
||||
|
||||
private MyIdlingResource idlingResource;
|
||||
|
||||
@@ -72,6 +73,8 @@ public class EspressoDeleteTrackTest {
|
||||
Espresso.unregisterIdlingResources(idlingResource);
|
||||
}
|
||||
|
||||
@Ignore("Test fails permanently")
|
||||
@Deprecated
|
||||
@Test
|
||||
public void espressoDeleteTrackTest() {
|
||||
int countBefore;
|
||||
@@ -239,9 +242,9 @@ public class EspressoDeleteTrackTest {
|
||||
}
|
||||
|
||||
|
||||
private class MyIdlingResource implements IdlingResource {
|
||||
private static class MyIdlingResource implements IdlingResource {
|
||||
|
||||
private Context context;
|
||||
private final Context context;
|
||||
private ResourceCallback resourceCallback;
|
||||
|
||||
public MyIdlingResource(Context context) {
|
||||
|
||||
@@ -35,7 +35,7 @@ public class EspressoUITest {
|
||||
public ActivityScenarioRule<TrackListActivity> mActivityTestRule = new ActivityScenarioRule<>(TrackListActivity.class);
|
||||
|
||||
@Rule
|
||||
public GrantPermissionRule mGrantPermissionRule = GrantPermissionRule.grant("android.permission.ACCESS_FINE_LOCATION");
|
||||
public GrantPermissionRule mGrantPermissionRule = GrantPermissionRule.grant(android.Manifest.permission.ACCESS_FINE_LOCATION);
|
||||
|
||||
@LargeTest
|
||||
@Test
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
package de.dennisguse.opentracks;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import org.junit.rules.TestRule;
|
||||
import org.junit.runner.Description;
|
||||
import org.junit.runners.model.Statement;
|
||||
|
||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
||||
|
||||
public class PreferenceMetricUnitRule implements TestRule {
|
||||
private final Context context;
|
||||
private final boolean metricUnits;
|
||||
|
||||
public PreferenceMetricUnitRule(@NonNull Context context, boolean metricUnits) {
|
||||
this.context = context;
|
||||
this.metricUnits = metricUnits;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Statement apply(final Statement base, final Description description) {
|
||||
return new Statement() {
|
||||
@Override
|
||||
public void evaluate() throws Throwable {
|
||||
SharedPreferences sharedPreferences = PreferencesUtils.getSharedPreferences(context);
|
||||
final boolean previousMetricUnits = PreferencesUtils.isMetricUnits(sharedPreferences, context);
|
||||
|
||||
try {
|
||||
PreferencesUtils.setMetricUnits(sharedPreferences, context, metricUnits);
|
||||
base.evaluate();
|
||||
} finally {
|
||||
PreferencesUtils.setMetricUnits(sharedPreferences, context, previousMetricUnits);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,5 @@
|
||||
package de.dennisguse.opentracks.content.data;
|
||||
|
||||
import android.location.Location;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import java.time.Instant;
|
||||
@@ -31,15 +29,13 @@ public class TrackPointTest {
|
||||
|
||||
@Test
|
||||
public void distanceToPrevious() {
|
||||
Location l1 = new Location("test");
|
||||
l1.setLatitude(0);
|
||||
l1.setLongitude(0.0001);
|
||||
TrackPoint tp1 = new TrackPoint(l1);
|
||||
TrackPoint tp1 = new TrackPoint(TrackPoint.Type.TRACKPOINT)
|
||||
.setLatitude(0)
|
||||
.setLongitude(0.0001);
|
||||
|
||||
Location l2 = new Location("test");
|
||||
l2.setLatitude(0);
|
||||
l2.setLongitude(0.0002);
|
||||
TrackPoint tp2 = new TrackPoint(l2);
|
||||
TrackPoint tp2 = new TrackPoint(TrackPoint.Type.TRACKPOINT)
|
||||
.setLatitude(0)
|
||||
.setLongitude(0.0002);
|
||||
|
||||
// without sensor distance
|
||||
assertEquals(11.13, tp2.distanceToPrevious(tp1).toM(), 0.01);
|
||||
|
||||
+9
-9
@@ -135,12 +135,12 @@ public class CustomContentProviderUtilsTest {
|
||||
|
||||
List<TrackPoint> trackPoints = new ArrayList<>(numPoints);
|
||||
for (int i = 0; i < numPoints; ++i) {
|
||||
Location loc = new Location("test");
|
||||
loc.setLatitude(37.0 + (double) i / 10000.0);
|
||||
loc.setLongitude(57.0 - (double) i / 10000.0);
|
||||
loc.setAccuracy((float) i / 100.0f);
|
||||
loc.setAltitude(i * 2.5);
|
||||
trackPoints.add(new TrackPoint(loc));
|
||||
TrackPoint trackPoint = new TrackPoint(TrackPoint.Type.TRACKPOINT)
|
||||
.setLatitude(37.0 + (double) i / 10000.0)
|
||||
.setLongitude(57.0 - (double) i / 10000.0)
|
||||
.setAccuracy((float) i / 100.0f)
|
||||
.setAltitude(i * 2.5);
|
||||
trackPoints.add(trackPoint);
|
||||
}
|
||||
contentProviderUtils.bulkInsertTrackPoint(trackPoints, id);
|
||||
|
||||
@@ -503,7 +503,7 @@ public class CustomContentProviderUtilsTest {
|
||||
contentProviderUtils.insertMarker(marker1);
|
||||
|
||||
// Check insert was done.
|
||||
assertEquals(contentProviderUtils.getMarkerCount(trackId), 1);
|
||||
assertEquals(contentProviderUtils.getMarkers(trackId).size(), 1);
|
||||
|
||||
// Get marker id that needs to delete.
|
||||
Marker.Id marker1Id = new Marker.Id(ContentUris.parseId(contentProviderUtils.insertMarker(marker1)));
|
||||
@@ -530,7 +530,7 @@ public class CustomContentProviderUtilsTest {
|
||||
contentProviderUtils.insertMarker(marker1);
|
||||
|
||||
// Check insert was done.
|
||||
assertEquals(contentProviderUtils.getMarkerCount(trackId), 1);
|
||||
assertEquals(contentProviderUtils.getMarkers(trackId).size(), 1);
|
||||
|
||||
// Get marker id that needs to delete.
|
||||
Marker.Id marker1Id = new Marker.Id(ContentUris.parseId(contentProviderUtils.insertMarker(marker1)));
|
||||
@@ -1252,7 +1252,7 @@ public class CustomContentProviderUtilsTest {
|
||||
|
||||
@Test
|
||||
public void testGetSensorStats_veryLongActivity12h() {
|
||||
testGetSensorStats_randomData(43200 / 6, false);
|
||||
testGetSensorStats_randomData(43200 / 6, false);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
+3
-3
@@ -29,7 +29,7 @@ public class ShareContentProviderTest {
|
||||
trackIds.add(new Track.Id(3));
|
||||
trackIds.add(new Track.Id(5));
|
||||
|
||||
Pair<Uri, String> shareURIandMIME = ShareContentProvider.createURI(trackIds, "TrackName", TrackFileFormat.KML_ONLY_TRACK);
|
||||
Pair<Uri, String> shareURIandMIME = ShareContentProvider.createURI(trackIds, "TrackName", TrackFileFormat.KML_WITH_TRACKDETAIL_AND_SENSORDATA);
|
||||
|
||||
assertEquals(trackIds, ShareContentProvider.parseURI(shareURIandMIME.first));
|
||||
}
|
||||
@@ -38,8 +38,8 @@ public class ShareContentProviderTest {
|
||||
public void testCreateURIescapeFilename() {
|
||||
Set<Track.Id> trackIds = new HashSet<>();
|
||||
trackIds.add(new Track.Id(1));
|
||||
Pair<Uri, String> shareURIandMIME = ShareContentProvider.createURI(trackIds, "../../&1=1", TrackFileFormat.KML_ONLY_TRACK);
|
||||
Pair<Uri, String> shareURIandMIME = ShareContentProvider.createURI(trackIds, "../../&1=1", TrackFileFormat.KML_WITH_TRACKDETAIL_AND_SENSORDATA);
|
||||
|
||||
assertEquals(Uri.parse("content://de.dennisguse.opentracks.debug.content/tracks/kml_only_track/1/..%2F..%2F%261%3D1.kml"), shareURIandMIME.first);
|
||||
assertEquals(Uri.parse("content://de.dennisguse.opentracks.debug.content/tracks/kml_with_trackdetail_and_sensordata/1/..%2F..%2F%261%3D1.kml"), shareURIandMIME.first);
|
||||
}
|
||||
}
|
||||
@@ -16,8 +16,9 @@
|
||||
|
||||
package de.dennisguse.opentracks.fragments;
|
||||
|
||||
import android.location.Location;
|
||||
import java.time.Instant;
|
||||
|
||||
import de.dennisguse.opentracks.content.data.Speed;
|
||||
import de.dennisguse.opentracks.content.data.TrackPoint;
|
||||
|
||||
/**
|
||||
@@ -29,11 +30,10 @@ public class TrackStubUtils {
|
||||
|
||||
public static final double INITIAL_ALTITUDE = 22;
|
||||
public static final long INITIAL_TIME = 1000L;
|
||||
private static final String LOCATION_PROVIDER = "gps";
|
||||
private static final double INITIAL_LATITUDE = 22;
|
||||
private static final double INITIAL_LONGITUDE = 22;
|
||||
private static final float INITIAL_ACCURACY = 5;
|
||||
private static final float INITIAL_SPEED = 10;
|
||||
private static final Speed INITIAL_SPEED = Speed.of(10);
|
||||
private static final float INITIAL_BEARING = 3.0f;
|
||||
|
||||
/**
|
||||
@@ -51,15 +51,12 @@ public class TrackStubUtils {
|
||||
* @return a SensorDataSetLocation stub.
|
||||
*/
|
||||
private static TrackPoint createDefaultTrackPoint(double latitude, double longitude, double altitude) {
|
||||
Location location = new Location(LOCATION_PROVIDER);
|
||||
location.setLatitude(latitude);
|
||||
location.setLongitude(longitude);
|
||||
location.setAltitude(altitude);
|
||||
location.setAccuracy(INITIAL_ACCURACY);
|
||||
location.setSpeed(INITIAL_SPEED);
|
||||
location.setTime(INITIAL_TIME); //TODO This is nowadays ignored as the constructor will replace the time.
|
||||
location.setBearing(INITIAL_BEARING);
|
||||
|
||||
return new TrackPoint(location);
|
||||
return new TrackPoint(TrackPoint.Type.TRACKPOINT, Instant.ofEpochMilli(INITIAL_TIME))
|
||||
.setLatitude(latitude)
|
||||
.setLongitude(longitude)
|
||||
.setAltitude(altitude)
|
||||
.setAccuracy(INITIAL_ACCURACY)
|
||||
.setSpeed(INITIAL_SPEED)
|
||||
.setBearing(INITIAL_BEARING);
|
||||
}
|
||||
}
|
||||
|
||||
+23
-120
@@ -5,7 +5,6 @@ import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.net.Uri;
|
||||
import android.os.Looper;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.preference.PreferenceManager;
|
||||
import androidx.test.core.app.ApplicationProvider;
|
||||
@@ -46,7 +45,6 @@ import de.dennisguse.opentracks.services.TrackRecordingService;
|
||||
import de.dennisguse.opentracks.stats.TrackStatistics;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
@@ -112,9 +110,6 @@ public class ExportImportTest {
|
||||
|
||||
|
||||
trackId = service.startNewTrack();
|
||||
//TODO Workaround as those managers overwrite input data; We need to refactor TrackRecordingService to make it actually testable
|
||||
service.setAltitudeSumManager(null);
|
||||
service.setRemoteSensorManager(null);
|
||||
|
||||
Distance sensorDistance = hasSensorDistance ? Distance.of(5) : null;
|
||||
|
||||
@@ -126,9 +121,6 @@ public class ExportImportTest {
|
||||
service.pauseCurrentTrack();
|
||||
|
||||
service.resumeCurrentTrack();
|
||||
//TODO Workaround as those managers overwrite input data; We need to refactor TrackRecordingService to make it actually testable
|
||||
service.setAltitudeSumManager(null);
|
||||
service.setRemoteSensorManager(null);
|
||||
|
||||
service.newTrackPoint(createTrackPoint(System.currentTimeMillis(), 3, 14.003, 10, 15, 10, 0, 66, 3, 50, sensorDistance), 0);
|
||||
service.newTrackPoint(createTrackPoint(System.currentTimeMillis(), 3, 16, 10, 15, 10, 0, 66, 3, 50, sensorDistance), 0);
|
||||
@@ -156,46 +148,6 @@ public class ExportImportTest {
|
||||
}
|
||||
}
|
||||
|
||||
@LargeTest
|
||||
@Test
|
||||
public void kml_with_trackdetail() throws TimeoutException, IOException {
|
||||
setUp(false);
|
||||
|
||||
// given
|
||||
Track track = contentProviderUtils.getTrack(trackId);
|
||||
|
||||
TrackExporter trackExporter = TrackFileFormat.KML_WITH_TRACKDETAIL.createTrackExporter(context);
|
||||
|
||||
// when
|
||||
// 1. export
|
||||
trackExporter.writeTrack(track, context.getContentResolver().openOutputStream(tmpFileUri));
|
||||
contentProviderUtils.deleteTrack(context, trackId);
|
||||
|
||||
// 2. import
|
||||
InputStream inputStream = context.getContentResolver().openInputStream(tmpFileUri);
|
||||
XMLImporter importer = new XMLImporter(new KmlTrackImporter(context, trackImporter));
|
||||
importTrackId = importer.importFile(inputStream).get(0);
|
||||
|
||||
// then
|
||||
// 1. track
|
||||
Track importedTrack = contentProviderUtils.getTrack(importTrackId);
|
||||
assertNotNull(importedTrack);
|
||||
assertEquals(track.getCategory(), importedTrack.getCategory());
|
||||
assertEquals(track.getDescription(), importedTrack.getDescription());
|
||||
assertEquals(track.getName(), importedTrack.getName());
|
||||
assertEquals(track.getIcon(), importedTrack.getIcon());
|
||||
assertEquals(track.getUuid(), importedTrack.getUuid());
|
||||
|
||||
// 2. trackpoints
|
||||
assertTrackpoints(trackPoints, false, false, false, false, false, false);
|
||||
|
||||
// 3. trackstatistics
|
||||
assertTrackStatistics(false, false, true);
|
||||
|
||||
// 4. markers
|
||||
assertMarkers();
|
||||
}
|
||||
|
||||
@LargeTest
|
||||
@Test
|
||||
public void kml_with_trackdetail_and_sensordata() throws TimeoutException, IOException {
|
||||
@@ -226,10 +178,12 @@ public class ExportImportTest {
|
||||
assertEquals(track.getIcon(), importedTrack.getIcon());
|
||||
|
||||
// 2. trackpoints
|
||||
assertTrackpoints(trackPoints, true, true, true, true, true, true);
|
||||
TrackPointAssert a = new TrackPointAssert()
|
||||
.noAccuracy();
|
||||
a.assertEquals(trackPoints, TestDataUtil.getTrackPoints(contentProviderUtils, importTrackId));
|
||||
|
||||
// 2. trackstatistics
|
||||
assertTrackStatistics(false, true, true);
|
||||
assertTrackStatistics(false, true);
|
||||
|
||||
// 4. markers
|
||||
assertMarkers();
|
||||
@@ -265,10 +219,12 @@ public class ExportImportTest {
|
||||
assertEquals(track.getIcon(), importedTrack.getIcon());
|
||||
|
||||
// 2. trackpoints
|
||||
assertTrackpoints(trackPoints, true, true, true, true, true, true);
|
||||
TrackPointAssert a = new TrackPointAssert()
|
||||
.noAccuracy();
|
||||
a.assertEquals(trackPoints, TestDataUtil.getTrackPoints(contentProviderUtils, importTrackId));
|
||||
|
||||
// 2. trackstatistics
|
||||
assertTrackStatistics(false, true, true);
|
||||
assertTrackStatistics(false, true);
|
||||
|
||||
// 4. markers
|
||||
assertMarkers();
|
||||
@@ -338,10 +294,13 @@ public class ExportImportTest {
|
||||
trackPointsWithCoordinates.get(0).setType(TrackPoint.Type.SEGMENT_START_AUTOMATIC);
|
||||
trackPointsWithCoordinates.get(3).setType(TrackPoint.Type.SEGMENT_START_AUTOMATIC);
|
||||
|
||||
assertTrackpoints(trackPointsWithCoordinates, true, true, true, true, true, false);
|
||||
TrackPointAssert a = new TrackPointAssert()
|
||||
.setDelta(0.05)
|
||||
.noAccuracy(); // speed is not fully
|
||||
a.assertEquals(trackPointsWithCoordinates, TestDataUtil.getTrackPoints(contentProviderUtils, importTrackId));
|
||||
|
||||
// 3. trackstatistics
|
||||
assertTrackStatistics(true, true, false);
|
||||
assertTrackStatistics(true, false);
|
||||
|
||||
// 4. markers
|
||||
assertMarkers();
|
||||
@@ -376,7 +335,7 @@ public class ExportImportTest {
|
||||
}
|
||||
|
||||
private void assertMarkers() {
|
||||
assertEquals(markers.size(), contentProviderUtils.getMarkerCount(importTrackId));
|
||||
assertEquals(markers.size(), contentProviderUtils.getMarkers(importTrackId).size());
|
||||
|
||||
List<Marker> importedMarkers = contentProviderUtils.getMarkers(importTrackId);
|
||||
for (int i = 0; i < markers.size(); i++) {
|
||||
@@ -390,67 +349,12 @@ public class ExportImportTest {
|
||||
|
||||
assertEquals(marker.getLocation().getLatitude(), importMarker.getLocation().getLatitude(), 0.001);
|
||||
assertEquals(marker.getLocation().getLongitude(), importMarker.getLocation().getLongitude(), 0.001);
|
||||
assertEquals(marker.getLocation().getAltitude(), importMarker.getLocation().getAltitude(), 0.001);
|
||||
assertEquals(marker.getLocation().getAltitude(), importMarker.getLocation().getAltitude(), 0.1);
|
||||
}
|
||||
}
|
||||
|
||||
private void assertTrackpoints(List<TrackPoint> trackPoints, boolean verifyPower, boolean verifyHeartrate, boolean verifyCadence, boolean verifyAltitudeGain, boolean verifyAltitudeLoss, boolean verifyDistance) {
|
||||
List<TrackPoint> importedTrackPoints = TestDataUtil.getTrackPoints(contentProviderUtils, importTrackId);
|
||||
assertEquals(trackPoints.size(), importedTrackPoints.size());
|
||||
|
||||
for (int i = 0; i < trackPoints.size(); i++) {
|
||||
TrackPoint trackPoint = trackPoints.get(i);
|
||||
TrackPoint importedTrackPoint = importedTrackPoints.get(i);
|
||||
|
||||
assertEquals(trackPoint.getTime(), importedTrackPoint.getTime());
|
||||
TrackPoint.Type type = trackPoint.getType();
|
||||
Log.e(TAG, "" + importedTrackPoint.getType().equals(type));
|
||||
assertEquals("" + i, type, importedTrackPoint.getType());
|
||||
|
||||
// TODO Not exported for GPX/KML
|
||||
// assertEquals(trackPoint.getAccuracy(), importedTrackPoint.getAccuracy(), 0.01);
|
||||
|
||||
assertEquals("" + i, trackPoint.hasLocation(), importedTrackPoint.hasLocation());
|
||||
if (trackPoint.hasLocation()) {
|
||||
assertEquals("" + i, trackPoint.getLatitude(), importedTrackPoint.getLatitude(), 0.001);
|
||||
assertEquals("" + i, trackPoint.getLongitude(), importedTrackPoint.getLongitude(), 0.001);
|
||||
}
|
||||
assertEquals("" + i, trackPoint.hasSpeed(), importedTrackPoint.hasSpeed());
|
||||
if (trackPoint.hasSpeed()) {
|
||||
assertEquals("" + i, trackPoint.getSpeed().toMPS(), importedTrackPoint.getSpeed().toMPS(), 0.001);
|
||||
}
|
||||
assertEquals("" + i, trackPoint.hasAltitude(), importedTrackPoint.hasAltitude());
|
||||
if (trackPoint.hasAltitude()) {
|
||||
assertEquals("" + i, trackPoint.getAltitude().toM(), importedTrackPoint.getAltitude().toM(), 0.001);
|
||||
}
|
||||
|
||||
if (type.equals(TrackPoint.Type.SEGMENT_START_MANUAL) || type.equals(TrackPoint.Type.SEGMENT_END_MANUAL)) {
|
||||
//TODO REMOVE
|
||||
continue;
|
||||
}
|
||||
|
||||
if (verifyHeartrate) {
|
||||
assertEquals("" + i, trackPoint.getHeartRate_bpm(), importedTrackPoint.getHeartRate_bpm(), 0.01);
|
||||
}
|
||||
if (verifyCadence) {
|
||||
assertEquals("" + i, trackPoint.getCyclingCadence_rpm(), importedTrackPoint.getCyclingCadence_rpm(), 0.01);
|
||||
}
|
||||
if (verifyPower) {
|
||||
assertEquals("" + i, trackPoint.getPower(), importedTrackPoint.getPower(), 0.01);
|
||||
}
|
||||
if (verifyAltitudeGain) {
|
||||
assertEquals(trackPoint.getAltitudeGain(), importedTrackPoint.getAltitudeGain(), 0.01);
|
||||
}
|
||||
if (verifyAltitudeLoss) {
|
||||
assertEquals(trackPoint.getAltitudeLoss(), importedTrackPoint.getAltitudeLoss(), 0.01);
|
||||
}
|
||||
if (verifyDistance) {
|
||||
assertEquals(trackPoint.getSensorDistance(), importedTrackPoint.getSensorDistance());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void assertTrackStatistics(boolean isGpx, boolean verifyAltitudeGainAndLoss, boolean verifyDistance) {
|
||||
private void assertTrackStatistics(boolean isGpx, boolean verifyDistance) {
|
||||
double delta = isGpx ? 0.1 : 0.01;
|
||||
Track importedTrack = contentProviderUtils.getTrack(importTrackId);
|
||||
|
||||
assertNotNull(importedTrack.getTrackStatistics());
|
||||
@@ -479,15 +383,14 @@ public class ExportImportTest {
|
||||
}
|
||||
|
||||
// Altitude
|
||||
assertEquals(trackStatistics.getMinAltitude(), importedTrackStatistics.getMinAltitude(), 0.01);
|
||||
assertEquals(trackStatistics.getMaxAltitude(), importedTrackStatistics.getMaxAltitude(), 0.01);
|
||||
if (verifyAltitudeGainAndLoss) {
|
||||
assertEquals(trackStatistics.getTotalAltitudeGain(), importedTrackStatistics.getTotalAltitudeGain(), 0.01);
|
||||
assertEquals(trackStatistics.getTotalAltitudeLoss(), importedTrackStatistics.getTotalAltitudeLoss(), 0.01);
|
||||
assertEquals(trackStatistics.getMinAltitude(), importedTrackStatistics.getMinAltitude(), delta);
|
||||
if (isGpx) {
|
||||
assertEquals(trackStatistics.getMaxAltitude(), importedTrackStatistics.getMaxAltitude(), 2);
|
||||
} else {
|
||||
assertFalse(importedTrackStatistics.hasTotalAltitudeGain());
|
||||
assertFalse(importedTrackStatistics.hasTotalAltitudeLoss());
|
||||
assertEquals(trackStatistics.getMaxAltitude(), importedTrackStatistics.getMaxAltitude(), delta);
|
||||
}
|
||||
assertEquals(trackStatistics.getTotalAltitudeGain(), importedTrackStatistics.getTotalAltitudeGain(), delta);
|
||||
assertEquals(trackStatistics.getTotalAltitudeLoss(), importedTrackStatistics.getTotalAltitudeLoss(), delta);
|
||||
}
|
||||
|
||||
private static TrackPoint createTrackPoint(long time, double latitude, double longitude, float accuracy, float speed, float altitude, float altitudeGain, float heartRate, float cyclingCadence, float power, Distance distance) {
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user