mirror of
https://codeberg.org/comaps/comaps
synced 2025-12-20 13:23:59 +00:00
Compare commits
76 Commits
delete_pas
...
2025.06.01
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
606a21ef83 | ||
|
|
307a6cc74f | ||
|
|
2727ed2749 | ||
|
|
b495df820a | ||
|
|
4c0dfc9500 | ||
|
|
a1df16f2ef | ||
|
|
22b3d5e49e | ||
|
|
42070e673d | ||
|
|
e8e87ee2cf | ||
|
|
b2a215431d | ||
|
|
18ccb85c98 | ||
|
|
0fcfee86fb | ||
|
|
ea881db7ea | ||
|
|
66457cd0b1 | ||
|
|
e464d37cd3 | ||
|
|
042088dc46 | ||
|
|
34f4a124d1 | ||
|
|
e2d850d76c | ||
|
|
2c234041e4 | ||
|
|
90e26ffac8 | ||
|
|
0bfb435aaf | ||
|
|
2f75d3c5a8 | ||
|
|
9fb3a509dc | ||
|
|
648fb55130 | ||
|
|
8a331c4c67 | ||
|
|
7be49ab00a | ||
|
|
2299de287f | ||
|
|
57fefda452 | ||
|
|
3ea15439dd | ||
|
|
f912555b76 | ||
|
|
220def168d | ||
|
|
377861f7d0 | ||
|
|
9c392d3160 | ||
|
|
96c24cf973 | ||
|
|
09171651ff | ||
|
|
3525f36919 | ||
|
|
7117a1b954 | ||
|
|
6a488a08a0 | ||
|
|
79a5ba5609 | ||
|
|
18f3d27157 | ||
|
|
335a474bb2 | ||
|
|
09096ac3a3 | ||
|
|
6649c8f92a | ||
|
|
aea3fb29ed | ||
|
|
362154aedb | ||
|
|
daab819110 | ||
|
|
1454b3c364 | ||
|
|
8ed99802ac | ||
|
|
0860f2d69b | ||
|
|
2e37416a43 | ||
|
|
a81bd5cd46 | ||
|
|
2a2eb9dfc9 | ||
|
|
964065a7b6 | ||
|
|
0edd732846 | ||
|
|
3032eb6dfe | ||
|
|
c4ca4c907b | ||
|
|
a8349ffa85 | ||
|
|
ca1776ee9f | ||
|
|
536c11079d | ||
|
|
315ad5fa41 | ||
|
|
3a6257346f | ||
|
|
7f0b97e6f8 | ||
|
|
16c89c1007 | ||
|
|
b669aea415 | ||
|
|
f22abdf64d | ||
|
|
9a3a7c3968 | ||
|
|
871860d53a | ||
|
|
f2d87979d1 | ||
|
|
1199ca3113 | ||
|
|
094221cb1c | ||
|
|
5d0a43cbe9 | ||
|
|
44eca9ab5e | ||
|
|
7df2188212 | ||
|
|
3952f34d7f | ||
|
|
499052fc27 | ||
|
|
1af371bf07 |
@@ -12,19 +12,12 @@ jobs:
|
|||||||
environment: production
|
environment: production
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
|
# TODO: use shallow (and sparse?) checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Parallel submodules checkout
|
# - name: Parallel submodules checkout
|
||||||
shell: bash
|
# shell: bash
|
||||||
run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
|
# run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
|
||||||
|
|
||||||
- name: Checkout screenshots
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
repository: ${{ secrets.SCREENSHOTS_REPO }}
|
|
||||||
ssh-key: ${{ secrets.SCREENSHOTS_SSH_KEY }}
|
|
||||||
ref: main
|
|
||||||
path: screenshots
|
|
||||||
|
|
||||||
- name: Restore release keys
|
- name: Restore release keys
|
||||||
shell: bash
|
shell: bash
|
||||||
@@ -37,6 +30,6 @@ jobs:
|
|||||||
|
|
||||||
- name: Upload
|
- name: Upload
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./gradlew prepareGoogleReleaseListing publishGoogleReleaseListing
|
run: ./gradlew publishGoogleReleaseListing
|
||||||
working-directory: android
|
working-directory: android
|
||||||
timeout-minutes: 5
|
timeout-minutes: 5
|
||||||
|
|||||||
12
.github/workflows/android-check.yaml
vendored
12
.github/workflows/android-check.yaml
vendored
@@ -22,9 +22,9 @@ jobs:
|
|||||||
shell: bash
|
shell: bash
|
||||||
run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
|
run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
|
||||||
|
|
||||||
- name: Configure repository
|
- name: Init boost, generate textures
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./configure.sh
|
run: ./configure.sh --skip-map-download
|
||||||
|
|
||||||
- name: Lint
|
- name: Lint
|
||||||
shell: bash
|
shell: bash
|
||||||
@@ -76,13 +76,9 @@ jobs:
|
|||||||
shell: bash
|
shell: bash
|
||||||
run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
|
run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
|
||||||
|
|
||||||
- name: Configure repository
|
- name: Init boost, generate textures
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./configure.sh
|
run: ./configure.sh --skip-map-download
|
||||||
|
|
||||||
- name: Generate symbols
|
|
||||||
shell: bash
|
|
||||||
run: ./tools/unix/generate_symbols.sh
|
|
||||||
|
|
||||||
- name: Configure ccache
|
- name: Configure ccache
|
||||||
uses: hendrikmuhs/ccache-action@v1.2
|
uses: hendrikmuhs/ccache-action@v1.2
|
||||||
|
|||||||
12
.github/workflows/ios-check.yaml
vendored
12
.github/workflows/ios-check.yaml
vendored
@@ -38,20 +38,10 @@ jobs:
|
|||||||
shell: bash
|
shell: bash
|
||||||
run: git submodule update --depth 1 --init --recursive --jobs=$(($(sysctl -n hw.logicalcpu) * 20))
|
run: git submodule update --depth 1 --init --recursive --jobs=$(($(sysctl -n hw.logicalcpu) * 20))
|
||||||
|
|
||||||
- name: Configure repository
|
- name: Init boost, download World map, generate textures
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./configure.sh
|
run: ./configure.sh
|
||||||
|
|
||||||
- name: Download MWM files
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
wget https://cdn.comaps.app/maps/latest/World.mwm -P ./data/
|
|
||||||
wget https://cdn.comaps.app/maps/latest/WorldCoasts.mwm -P ./data/
|
|
||||||
|
|
||||||
- name: Generate symbols
|
|
||||||
shell: bash
|
|
||||||
run: ./tools/unix/generate_symbols.sh
|
|
||||||
|
|
||||||
- name: Configure XCode cache
|
- name: Configure XCode cache
|
||||||
uses: irgaly/xcode-cache@v1
|
uses: irgaly/xcode-cache@v1
|
||||||
with:
|
with:
|
||||||
|
|||||||
6
.gitignore
vendored
6
.gitignore
vendored
@@ -187,9 +187,3 @@ tools/unix/maps/settings.sh
|
|||||||
# VS Code
|
# VS Code
|
||||||
.vscode
|
.vscode
|
||||||
.cache
|
.cache
|
||||||
|
|
||||||
# AppStore metadata
|
|
||||||
screenshots/
|
|
||||||
android/src/google/play/listings/
|
|
||||||
keywords/
|
|
||||||
iphone/metadata/**/keywords.txt
|
|
||||||
|
|||||||
@@ -11,6 +11,9 @@ set(CMAKE_C_VISIBILITY_PRESET hidden)
|
|||||||
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
|
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
|
||||||
set(CMAKE_VISIBILITY_INLINES_HIDDEN ON)
|
set(CMAKE_VISIBILITY_INLINES_HIDDEN ON)
|
||||||
|
|
||||||
|
# Disable build-id generation to make builds reproducible.
|
||||||
|
add_link_options("LINKER:--build-id=none")
|
||||||
|
|
||||||
# Fixes warning ld: warning: ignoring duplicate libraries on Mac and Windows.
|
# Fixes warning ld: warning: ignoring duplicate libraries on Mac and Windows.
|
||||||
if (POLICY CMP0156)
|
if (POLICY CMP0156)
|
||||||
cmake_policy(SET CMP0156 NEW)
|
cmake_policy(SET CMP0156 NEW)
|
||||||
|
|||||||
@@ -19,5 +19,4 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
|
|||||||
optipng
|
optipng
|
||||||
WORKDIR /root/comaps
|
WORKDIR /root/comaps
|
||||||
RUN ./configure.sh
|
RUN ./configure.sh
|
||||||
RUN ./tools/unix/generate_symbols.sh
|
|
||||||
CMD ./gradlew -Parm64 assembleFdroidDebug
|
CMD ./gradlew -Parm64 assembleFdroidDebug
|
||||||
|
|||||||
11
android/app/.gitignore
vendored
11
android/app/.gitignore
vendored
@@ -2,14 +2,14 @@
|
|||||||
/nativeOutputs
|
/nativeOutputs
|
||||||
|
|
||||||
# ignore private keys
|
# ignore private keys
|
||||||
/secure.properties
|
/secure.properties.test
|
||||||
/release.keystore
|
/secure.properties.release
|
||||||
/secure.properties
|
/comaps-test.keystore
|
||||||
|
/comaps-release.keystore
|
||||||
/libnotify.properties
|
/libnotify.properties
|
||||||
/google-play.json
|
/google-play.json
|
||||||
/huawei-appgallery.json
|
/huawei-appgallery.json
|
||||||
/agconnect-services.json
|
/agconnect-services.json
|
||||||
/src/main/res/xml/network_security_config.xml
|
|
||||||
|
|
||||||
# ignore flags symlinks
|
# ignore flags symlinks
|
||||||
/src/main/res/drawable-xhdpi/??.png
|
/src/main/res/drawable-xhdpi/??.png
|
||||||
@@ -24,6 +24,3 @@
|
|||||||
/src/main/res/drawable-mdpi/uk_northern_ireland.png
|
/src/main/res/drawable-mdpi/uk_northern_ireland.png
|
||||||
/src/main/res/drawable-mdpi/uk_scotland.png
|
/src/main/res/drawable-mdpi/uk_scotland.png
|
||||||
/src/main/res/drawable-mdpi/uk_wales.png
|
/src/main/res/drawable-mdpi/uk_wales.png
|
||||||
|
|
||||||
# ignore autogenerated metadata (see prepareGoogleReleaseListing in build.gradle)
|
|
||||||
/src/google/play/listings
|
|
||||||
|
|||||||
@@ -170,7 +170,6 @@ android {
|
|||||||
|
|
||||||
fdroid {
|
fdroid {
|
||||||
dimension 'default'
|
dimension 'default'
|
||||||
applicationIdSuffix '.fdroid'
|
|
||||||
versionName = android.defaultConfig.versionName + '-FDroid'
|
versionName = android.defaultConfig.versionName + '-FDroid'
|
||||||
buildConfigField 'String', 'SUPPORT_MAIL', '"fdroid@comaps.app"'
|
buildConfigField 'String', 'SUPPORT_MAIL', '"fdroid@comaps.app"'
|
||||||
}
|
}
|
||||||
@@ -222,33 +221,50 @@ android {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
def securityPropertiesFileExists = file('secure.properties').exists()
|
def secureReleasePropertiesFileExists = file('secure.properties.release').exists()
|
||||||
if (securityPropertiesFileExists) {
|
if (secureReleasePropertiesFileExists) {
|
||||||
apply from: 'secure.properties'
|
apply from: 'secure.properties.release'
|
||||||
|
}
|
||||||
|
|
||||||
|
def secureTestPropertiesFileExists = file('secure.properties.test').exists()
|
||||||
|
if (secureTestPropertiesFileExists) {
|
||||||
|
apply from: 'secure.properties.test'
|
||||||
}
|
}
|
||||||
|
|
||||||
signingConfigs {
|
signingConfigs {
|
||||||
debug {
|
debug {
|
||||||
storeFile file('debug.keystore')
|
storeFile file('comaps-debug.keystore')
|
||||||
storePassword '12345678'
|
storePassword '12345678'
|
||||||
keyAlias 'debug'
|
keyAlias 'CoMaps Debug'
|
||||||
keyPassword '12345678'
|
keyPassword '12345678'
|
||||||
}
|
}
|
||||||
|
|
||||||
release {
|
test {
|
||||||
if (securityPropertiesFileExists) {
|
if (secureTestPropertiesFileExists) {
|
||||||
println('The release signing keys are available')
|
storeFile file(secretTestStoreFile)
|
||||||
storeFile file(spropStoreFile)
|
storePassword secretTestStorePassword
|
||||||
storePassword spropStorePassword
|
keyAlias secretTestKeyAlias
|
||||||
keyAlias spropKeyAlias
|
keyPassword secretTestKeyPassword
|
||||||
keyPassword spropKeyPassword
|
|
||||||
} else {
|
} else {
|
||||||
println('The release signing keys are unavailable')
|
println('secure.properties.test doesn\'t exist')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
release {
|
||||||
|
if (secureReleasePropertiesFileExists) {
|
||||||
|
storeFile file(secretReleaseStoreFile)
|
||||||
|
storePassword secretReleaseStorePassword
|
||||||
|
keyAlias secretReleaseKeyAlias
|
||||||
|
keyPassword secretReleaseKeyPassword
|
||||||
|
} else {
|
||||||
|
println('secure.properties.release doesn\'t exist')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
buildTypes {
|
buildTypes {
|
||||||
|
def taskName = getGradle().getStartParameter().getTaskRequests().toString().toLowerCase()
|
||||||
|
|
||||||
debug {
|
debug {
|
||||||
applicationIdSuffix '.debug' // Allows to install debug and release builds together
|
applicationIdSuffix '.debug' // Allows to install debug and release builds together
|
||||||
versionNameSuffix '-debug'
|
versionNameSuffix '-debug'
|
||||||
@@ -261,7 +277,16 @@ android {
|
|||||||
}
|
}
|
||||||
|
|
||||||
release {
|
release {
|
||||||
|
if (taskName.contains('release')) {
|
||||||
|
if (secureReleasePropertiesFileExists) {
|
||||||
|
println('Using RELEASE signing keys from secure.properties.release')
|
||||||
signingConfig signingConfigs.release
|
signingConfig signingConfigs.release
|
||||||
|
} else {
|
||||||
|
println('NO RELEASE signing keys found')
|
||||||
|
println('Using DEBUG signing keys')
|
||||||
|
signingConfig signingConfigs.debug
|
||||||
|
}
|
||||||
|
}
|
||||||
minifyEnabled true
|
minifyEnabled true
|
||||||
shrinkResources true
|
shrinkResources true
|
||||||
// Includes the default ProGuard rules files that are packaged with the Android Gradle plugin.
|
// Includes the default ProGuard rules files that are packaged with the Android Gradle plugin.
|
||||||
@@ -276,7 +301,16 @@ android {
|
|||||||
beta {
|
beta {
|
||||||
applicationIdSuffix '.test'
|
applicationIdSuffix '.test'
|
||||||
versionNameSuffix '-test'
|
versionNameSuffix '-test'
|
||||||
signingConfig signingConfigs.release
|
if (taskName.contains('beta')) {
|
||||||
|
if (secureTestPropertiesFileExists) {
|
||||||
|
println('Using TEST signing keys from secure.properties.test')
|
||||||
|
signingConfig signingConfigs.test
|
||||||
|
} else {
|
||||||
|
println('NO TEST signing keys found')
|
||||||
|
println('Using DEBUG signing keys')
|
||||||
|
signingConfig signingConfigs.debug
|
||||||
|
}
|
||||||
|
}
|
||||||
minifyEnabled true
|
minifyEnabled true
|
||||||
shrinkResources true
|
shrinkResources true
|
||||||
// Includes the default ProGuard rules files that are packaged with the Android Gradle plugin.
|
// Includes the default ProGuard rules files that are packaged with the Android Gradle plugin.
|
||||||
@@ -372,32 +406,6 @@ android.applicationVariants.all { variant ->
|
|||||||
variant.resValue 'string', 'app_id', variant.applicationId
|
variant.resValue 'string', 'app_id', variant.applicationId
|
||||||
}
|
}
|
||||||
|
|
||||||
task prepareGoogleReleaseListing {
|
|
||||||
// Prepares Google Play metainfo from F-Droid metainfo.
|
|
||||||
final sourceFlavor = 'fdroid'
|
|
||||||
final targetFlavor = 'google'
|
|
||||||
doLast {
|
|
||||||
final sourceDir = new File("${projectDir}/src/$sourceFlavor/play/listings")
|
|
||||||
final targetDir = new File("${projectDir}/src/$targetFlavor/play/listings")
|
|
||||||
final sourceFiles = fileTree(dir: sourceDir,
|
|
||||||
include: '**/*.txt', exclude: "**/*-${targetFlavor}.txt")
|
|
||||||
sourceFiles.each { File sourceFile ->
|
|
||||||
final locale = sourceFile.parentFile.getName()
|
|
||||||
final targetLocaleDir = new File(targetDir, locale)
|
|
||||||
if (!targetLocaleDir.isDirectory())
|
|
||||||
targetLocaleDir.mkdirs()
|
|
||||||
final targetFile = new File(targetLocaleDir, sourceFile.getName())
|
|
||||||
// Override Google-specific values by using ${name}-google.txt files.
|
|
||||||
final overrideFile = new File(sourceFile.getPath().replace('.txt', "-${targetFlavor}.txt"))
|
|
||||||
targetFile.text = overrideFile.exists() ? overrideFile.text : sourceFile.text
|
|
||||||
}
|
|
||||||
copy {
|
|
||||||
from "${projectDir}/../../screenshots/android"
|
|
||||||
into targetDir
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
play {
|
play {
|
||||||
enabled.set(false)
|
enabled.set(false)
|
||||||
track.set('production')
|
track.set('production')
|
||||||
|
|||||||
BIN
android/app/comaps-debug.keystore
Normal file
BIN
android/app/comaps-debug.keystore
Normal file
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,34 @@
|
|||||||
|
Komunitou vedené bezplatná a otevřená mapová aplikace založená na datech z projektu OpenStreetMap a posílená závazkem k transparentnosti, soukromí a neziskovosti. Aplikace CoMaps je fork/odnož aplikace Organic Maps, která je zase forkem aplikace Maps.ME.
|
||||||
|
|
||||||
|
Důvody vzniku projektu a jeho směr si můžete přečíst na adrese <b><i>codeberg.org/comaps</i></b>.
|
||||||
|
Můžete se zde také připojit ke komunitě pomáhat s vytvářením nejlepší mapové aplikace
|
||||||
|
• Používejte aplikaci a sdílejte ji se známými
|
||||||
|
• Poskytujte zpětnou vazbu a nahlašujte problémy
|
||||||
|
• Aktualizujte mapová data v aplikaci nebo na webu OpenStreetMap
|
||||||
|
|
||||||
|
• <b>Zaměřené na offline použití</b>: Plánujte a navigujte své cesty do zahraničí bez nutnosti mobilních dat, hledejte body na vzdálených túrách apod. Všechny funkce aplikace jsou navrženy tak, aby fungovaly offline.
|
||||||
|
• <b>S ohledem na soukromí</b>: Aplikace je navržená s důrazem na soukromí – neidentifikuje lidi, nesleduje vás a nesbírá osobní údaje. Bez reklam.
|
||||||
|
• <b>Jednoduché a vyladěné</b>: Základní, snadno použitelné funkce, které prostě fungují.
|
||||||
|
• <b>Šetří vaši baterii a místo</b>: Nevybíjí vaší baterii, jako ostatní navigační aplikace. Kompaktní mapy šetří cenné místo ve vašem telefonu.
|
||||||
|
• <b>Bezplatné a vytvořené komunitou</b>: S vytvářením aplikace pomáhají lidé, jako jste vy, přidáváním míst do projektu OpenStreetMap, testováním a poskytováním zpětné vazby k funkcím a přispíváním svými vývojářskými schopnostmi a penězi.
|
||||||
|
• <b>Otevřené a transparentní rozhodování a nakládání s financemi, neziskovost a plně otevřený zdrojový kód.</b>
|
||||||
|
|
||||||
|
<b>Hlavní funkce</b>:
|
||||||
|
<ul>
|
||||||
|
<li>Stahovatelné podrobné mapy s místy, která nenajdete ani v Mapách Google</li>
|
||||||
|
<li>Outdoorový režim se zvýrazněnými turistickými trasami, tábořišti, vodními zdroji, vrcholy, vrstevnicemi atd.</li>
|
||||||
|
<li>Pěší trasy a cyklostezky</li>
|
||||||
|
<li>Body zájmu, jako jsou restaurace, čerpací stanice, hotely, obchody, vyhlídky a mnoho dalšího</li>
|
||||||
|
<li>Hledání podle názvu nebo adresy nebo podle kategorie bodů zájmu</li>
|
||||||
|
<li>Navigace s hlasovými pokyny pro chůzi, jízdu na kole nebo řízení</li>
|
||||||
|
<li>Uložení oblíbených míst jedním klepnutím</li>
|
||||||
|
<li>Offline články z Wikipedie</li>
|
||||||
|
<li>Vrstva metra a navigace v něm</li>
|
||||||
|
<li>Záznam tras</li>
|
||||||
|
<li>Export a import záložek a tras ve formátech KML, KMZ a GPX</li>
|
||||||
|
<li>Tmavý režim k použití během noci</li>
|
||||||
|
<li>Zlepšování mapových dat pro všechny pomocí jednoduchého vestavěného editoru</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<b>Svoboda je tady</b>
|
||||||
|
Objevujte své cesty, navigujte se světem se soukromím a komunitou na prvním místě!
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Jednoduchá navigace v mapě – Objevte více na své cestě – Vyvíjeno komunitou
|
||||||
1
android/app/src/fdroid/play/listings/cs-CZ/title.txt
Normal file
1
android/app/src/fdroid/play/listings/cs-CZ/title.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
CoMaps – pěšky, na kole a autem offline a soukromě
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
Eine von der Community betriebene, kostenlose Open-Source Karten App, die auf OpenStreetMap Daten basiert. Transparent, Daten sparsam und nicht gewinnorientiert. CoMaps ist ein Fork/Abspaltung von Organic Maps, das wiederum ein Fork/Abspaltung von Maps.Me ist.
|
||||||
|
|
||||||
|
Lese mehr über die Gründe und Ziele des Projekt unter <b><i>codeberg.org/comaps</i></b>.
|
||||||
|
Werde Teil der Community und hilf mit, die beste Karten-App zu entwickeln
|
||||||
|
• Nutze die App und erzähle anderen davon
|
||||||
|
• Gib Feedback und melde Probleme
|
||||||
|
• Aktualisiere Kartendaten in der App oder auf der OpenStreetMap Website
|
||||||
|
|
||||||
|
‣ <b>Einfach und ausgereift</b>: Essenzielle, leicht zu bedienende Funktionen, die einfach funktionieren.
|
||||||
|
‣ <b>Offline-orientiert</b>: Plane und navigiere im Ausland ohne Mobilfunkverbindung, finde Wegpunkte auf abgelegenen Wanderungen usw. Alle Funktionen sind für den Offline-Einsatz konzipiert.
|
||||||
|
‣ <b>Datenschutzfreundlich</b>: Die App wurde mit Fokus auf Privatsphäre entwickelt – keine Personenidentifikation, kein Tracking, keine Erfassung persönlicher Daten, keine Werbung.
|
||||||
|
‣ <b>Spart Akku und Speicherplatz</b>: Verbraucht nicht unnötig Akku wie andere Navi-Apps. Kompakte Karten sparen Speicherplatz auf deinem Gerät.
|
||||||
|
‣ <b>Kostenlos und von der Community entwickelt</b>: Menschen wie du haben geholfen die App zu entwickeln – durch das Hinzufügen von Orten zu OpenStreetMap, Testen von neuen Funktionen, Software Entwicklung oder Spenden.
|
||||||
|
‣ <b>Offen und transparent bei Entscheidungen und Finanzen, gemeinnützig und vollständig Open Source</b>
|
||||||
|
|
||||||
|
<b>Hauptfunktionen</b>:
|
||||||
|
• Detaillierte, herunterladbare Karten mit Orten, die bei Google Maps oft fehlen
|
||||||
|
• Outdoor-Modus mit hervorgehobenen Wanderwegen, Campingplätzen, Wasserquellen, Gipfeln, Höhenlinien usw.
|
||||||
|
• Geh- und Radwege
|
||||||
|
• Orte wie Restaurants, Tankstellen, Hotels, Geschäfte, Sehenswürdigkeiten und viele mehr
|
||||||
|
• Suche nach Namen, Adressen oder Kategorien
|
||||||
|
• Navigation mit Sprachausgabe für Fußgänger, Radfahrer und Autos
|
||||||
|
• Lesezeichen mit einem einzigen Tippen speichern
|
||||||
|
• Offline verfügbare Wikipedia-Artikel
|
||||||
|
• U- und S-Bahn Netze
|
||||||
|
• Aufzeichnen von GPS Tracks
|
||||||
|
• Import und Export von Favoriten und Routen im KML-, KMZ- oder GPX-Format
|
||||||
|
• Darkmode für die Nutzung bei Nacht
|
||||||
|
• Kartenbearbeitung direkt in der App mit einem einfachen Editor
|
||||||
|
|
||||||
|
<b>Freiheit beginnt hier</b>
|
||||||
|
Entdecke deine Reise – navigiere die Welt mit Privatsphäre!
|
||||||
10
android/app/src/fdroid/play/listings/de-DE/release-notes.txt
Normal file
10
android/app/src/fdroid/play/listings/de-DE/release-notes.txt
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
Erster CoMaps Release!
|
||||||
|
Was ist neu im Vergleich zu Organic Maps:
|
||||||
|
• OpenStreetMap-Daten vom 15. Mai
|
||||||
|
• OSM Login jetzt über den Webbrowser
|
||||||
|
• Der halbtransparente Hintergrund in der U-Bahn-Ansicht wurde entfernt
|
||||||
|
• Größe der lokalen Karte beim ersten Karten download anzeigen
|
||||||
|
• Der Metaserver wurde durch eine feste Liste an Kartenservern ersetzt
|
||||||
|
• Der Nachtmodus schaltet jetzt besser um, auch wenn kein GPS-Signal da ist
|
||||||
|
• Übersetzungen aktualisiert
|
||||||
|
• Rebranding – das Logo ist noch vorläufig
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Einfache Navigation - Entdecken Sie mehr von Ihrer Reise - Community basiert
|
||||||
1
android/app/src/fdroid/play/listings/de-DE/title.txt
Normal file
1
android/app/src/fdroid/play/listings/de-DE/title.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
CoMaps – Offline und privat navigieren
|
||||||
@@ -1,5 +1,11 @@
|
|||||||
A community-led free & open source maps app based on OpenStreetMap data and reinforced with commitment to transparency, privacy and being not-for-profit. CoMaps is a fork/spin-off of Organic Maps, which in turn is a fork of Maps.ME.
|
A community-led free & open source maps app based on OpenStreetMap data and reinforced with commitment to transparency, privacy and being not-for-profit. CoMaps is a fork/spin-off of Organic Maps, which in turn is a fork of Maps.ME.
|
||||||
|
|
||||||
|
Read on about reasons for the project and its direction at <b><i>codeberg.org/comaps</i></b>.
|
||||||
|
Join the community there and help make the best maps app
|
||||||
|
• Use the app and spread the word about it
|
||||||
|
• Give feedback and report issues
|
||||||
|
• Update map data in the app or on the OpenStreetMap website
|
||||||
|
|
||||||
‣ <b>Offline-focused</b>: Plan and navigate your trip abroad without the need for cellular service, search waypoints while on a distant hike, etc. All app functions are designed to work offline.
|
‣ <b>Offline-focused</b>: Plan and navigate your trip abroad without the need for cellular service, search waypoints while on a distant hike, etc. All app functions are designed to work offline.
|
||||||
‣ <b>Respecting Privacy</b>: The app is designed with privacy in mind - does not identify people, does not track, and does not collect personal information. Ads-free.
|
‣ <b>Respecting Privacy</b>: The app is designed with privacy in mind - does not identify people, does not track, and does not collect personal information. Ads-free.
|
||||||
‣ <b>Simple and Polished</b>: essential easy to use features that just work.
|
‣ <b>Simple and Polished</b>: essential easy to use features that just work.
|
||||||
@@ -22,7 +28,7 @@ A community-led free & open source maps app based on OpenStreetMap data and rein
|
|||||||
<li>Export and import bookmarks and tracks in KML, KMZ, GPX formats</li>
|
<li>Export and import bookmarks and tracks in KML, KMZ, GPX formats</li>
|
||||||
<li>A dark mode to use during the night</li>
|
<li>A dark mode to use during the night</li>
|
||||||
<li>Improve map data for everyone using a basic built-in editor</li>
|
<li>Improve map data for everyone using a basic built-in editor</li>
|
||||||
<li>Android Auto and CarPlay support</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<i>Freedom Is Here - Discover your journey, navigate the world with privacy and community at the forefront!</i>
|
<b>Freedom Is Here</b>
|
||||||
|
Discover your journey, navigate the world with privacy and community at the forefront!
|
||||||
|
|||||||
@@ -1,8 +1,11 @@
|
|||||||
• New OpenStreetMap data as of February 27
|
Initial CoMaps release!
|
||||||
• Ability to manually arrange intermediate route points
|
Changes from the Organic Maps upstream:
|
||||||
• Share a single selected track from the list
|
• OpenStreetMap data as of May 15
|
||||||
• Improved routing for bicycles
|
• login to OSM account via a web browser
|
||||||
• Display a system notification when downloading maps and don't interrupt background downloads
|
• removed semi-transparent background in Subway layer
|
||||||
• Added a Track Recording indicator on the main screen
|
• replaced metaserver with a static map servers list
|
||||||
|
• add local map size to the startup download screen
|
||||||
…more details at omaps.org/news
|
• improved auto night mode switch when there is no location fix
|
||||||
|
• fix incorrect map info when tapping on a not downloaded region
|
||||||
|
• update translations
|
||||||
|
• rebranding - the logo is provisional still
|
||||||
|
|||||||
12
android/app/src/fdroid/play/listings/es-ES/release-notes.txt
Normal file
12
android/app/src/fdroid/play/listings/es-ES/release-notes.txt
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
Lanzamiento inicial de CoMaps
|
||||||
|
|
||||||
|
Cambios respecto a la versión de Organic Maps:
|
||||||
|
• Datos nuevos al 15 de mayo
|
||||||
|
• Inicio de sesión a OSM a través de navegador
|
||||||
|
• Eliminado fondo semitransparente en la capa de Metro
|
||||||
|
• Sustitución del metaserver por lista estática de servidores
|
||||||
|
• Añadido tamaño del mapa local al inicio
|
||||||
|
• Mejora del cambio automático al modo nocturno al no conocerse ubicación
|
||||||
|
• Correcciones de fallos
|
||||||
|
• Actualización de traducciones
|
||||||
|
• Cambio de branding con logo provisional
|
||||||
34
android/app/src/fdroid/play/listings/et/full-description.txt
Normal file
34
android/app/src/fdroid/play/listings/et/full-description.txt
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
Kogukonna juhitud vaba, avatud ja tasuta kaardirakendus, mis kasutab OpenStreetMapi kaardiandmeid ja on kantud meie kohustusest toimida läbipaistvalt, privaatselt ja kasumit mittetaotlevana. CoMaps on loodud Organic Mapsi põhjal, mis omakorda on loodud Maps.ME põhjal.
|
||||||
|
|
||||||
|
Selgitust selle projektiga alustamisele ning teavet meie edaspidiste plaanide kohta leiad <b><i>codeberg.org/comaps</i></b> lehelt.
|
||||||
|
Liitu kogukonnaga ja aita luua parimat kaardirakendust:
|
||||||
|
• Kasuta rakendust ja räägi sellest teistelegi
|
||||||
|
• Jaga tagasisidet ja teata vigadest
|
||||||
|
• Uuenda kaardiandmeid otse rakendusest või OpenStreetMapi veebisaidist
|
||||||
|
|
||||||
|
‣ <b>Ei vaja võrguühendust</b>: kavanda oma teekonda ja lase teed juhatada ilma andmesideühendust kasutamata ning otsi liikvel olles huvipunkte. Kaardirakenduse kogu funktsionaalsus on mõeldud toimima ilma võrguühenduseta.
|
||||||
|
‣ <b>Austab sinu privaatsust</b>: rakendus on loodud privaatsuskesksena - ta ei tuvasta sind, ei jälgi sinu tegevust ega kogu sinu kohta andmeid. Loomulikult pole ka reklaame.
|
||||||
|
‣ <b>Lihtne ja viimistletud</b>: kergeltkasutatav funktsionaalsus, mis lihtsalt toimib.
|
||||||
|
‣ <b>Säästab akut ja andmeruumi</b>: erinevalt teistest kaardirakendustest ei koorma ta akut. Kompaktsed kaardid säästavad nutiseadmes nii vajaliku andmeruumi.
|
||||||
|
‣ <b>Vaba ja loodud kogukonna poolt</b>: tavalised inimesed, nii nagu sinagi, on aitanud kaardirakenduse loomisel, kaartide koostamisel, testimisel ja tagasiside jagamisel ning kõike seda tehes panustanud oma oskuste ja rahaga.
|
||||||
|
‣ <b>Organisatsioon on avatud ja kasutab läbipaistvat otsustusprotsessi ning rahastamist ega taotle kasumit. Rakendus on avatud lähtekoodiga.</b>
|
||||||
|
|
||||||
|
<b>Põhifunktsionaalsused</b>:
|
||||||
|
<ul>
|
||||||
|
<li>Allalaaditavad detailsed kaardid, mille sisu tihtipeale ei leia Google Mapsist</li>
|
||||||
|
<li>Kaardivaade välitingimuste jaoks, kus matkarajad, laagriplatsid, allikad, mäetipud, kontuurjooned ja palju muud vajalikku on esile tõstetud</li>
|
||||||
|
<li>Jalgrajad, rattateed ning maanteed</li>
|
||||||
|
<li>Huvipunktid, nagu restoranid, tanklad, hotellid, poed, vaatamisväärsused ja palju muud</li>
|
||||||
|
<li>Otsida saad nime, aadressi või huvipunkti kategooria alusel</li>
|
||||||
|
<li>Tee juhatamine hääljuhiste abil toimib nii kõndimisel, rattasõidul kui auto juhtimisel</li>
|
||||||
|
<li>Ühe puudutusega saad oma lemmikkohad märkida järjehoidjana</li>
|
||||||
|
<li>Vikipeedia artiklid, mida saad lugeda ilma võrguühenduseta</li>
|
||||||
|
<li>Metroode plaanid ja suunajuhised</li>
|
||||||
|
<li>Raja või teekonna salvestamise võimalus</li>
|
||||||
|
<li>Järjehoidjate ja radade eksport ning import KML, KMZ ja GPX vormingutes</li>
|
||||||
|
<li>Tume kaardivaade kasutamiseks öösel</li>
|
||||||
|
<li>Kasutades lihtsat muutmisliidest saad kaarti kõikide huvides täiendada</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<b>Vabadus on siin</b>
|
||||||
|
Uuri maailma ja avasta uusi teid - tee seda privaatselt ja kogukonnaga arvestades!
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Lihtne tee juhatamine - Avasta reisides enamat - Kõik see toimeka kogukonna toel
|
||||||
1
android/app/src/fdroid/play/listings/et/title.txt
Normal file
1
android/app/src/fdroid/play/listings/et/title.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
CoMaps - sinu privaatne kaart
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Mapa nabigazio erraza - Ezagutu gehiago zure bidaiaz - Komunitatean egina
|
||||||
1
android/app/src/fdroid/play/listings/eu-ES/title.txt
Normal file
1
android/app/src/fdroid/play/listings/eu-ES/title.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
CoMaps- Mendia, bizikleta, autoa. Dena offline eta pribatutasunearekin
|
||||||
11
android/app/src/fdroid/play/listings/fr-FR/release-notes.txt
Normal file
11
android/app/src/fdroid/play/listings/fr-FR/release-notes.txt
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
Première version de CoMaps!
|
||||||
|
Changements par rapport à Organic Maps:
|
||||||
|
• Données OpenStreetMap du 15 mai
|
||||||
|
• Connexion au compte OSM via le navigateur
|
||||||
|
• Retrait du fond semi-transparent sur la couche Métro
|
||||||
|
• Remplacement du metaserveur par une liste statique de serveurs
|
||||||
|
• Ajout de la taille de la carte locale au premier démarrage
|
||||||
|
• Amélioration du mode nuit automatique
|
||||||
|
• Correction de la suggestion de téléchargements de cartes
|
||||||
|
• Mise à jour des traductions
|
||||||
|
• Rebranding - le logo est encore provisoire
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
Una app sviluppata dalla comunità, gratuita e open-source, basata su OpenStreetMap e sull'impegno alla trasparenza, al rispetto della Privacy senza scopo di lucro. CoMaps è uno spin-off di Organic Maps, che a sua volta deriva da Maps.ME.
|
||||||
|
|
||||||
|
Leggi delle ragioni del progetto e della sua direzione futura su <b><i>codeberg.org/comaps</i></b>.
|
||||||
|
Unisciti alla nostra comunità e aiutaci a creare la migliore app di mappe.
|
||||||
|
• usa l'app e consigliala
|
||||||
|
• Dacci il tuo parere e riporta eventuali problemi
|
||||||
|
• Aggiorna i dati delle mappe direttamente nell'app o sul sito OpenStreetMap
|
||||||
|
|
||||||
|
‣ <b>Offline</b>: Pianifica e percorri il tuo viaggio senza necessità di essere connesso alla rete, cerca tappe mentre sei in una escursione etc. Tutte le funzionalità dell'app sono pensate per operare senza rete.
|
||||||
|
‣ <b>Rispetta la Privacy</b>: L'app è pensata per rispettare la tua Privacy, non identifica le persone e non registra o colleziona i tuoi dati personali. Senza pubblicità.
|
||||||
|
‣ <b>Semplice ed Elegante</b>: funzionalità semplici e affidabili.
|
||||||
|
‣ <b>Preserva la Batteria e lo Spazio in Memoria</b>: Non consuma batteria come altre app di navigazione. Le mappe compatte salvano il prezioso spazio del tuo telefono.
|
||||||
|
‣ <b>Gratis e Sviluppata dalla Comunità</b>: Persone come te posso aiutare a migliorare l'app aggiungendo luoghi su OpenStreetMap, testando e dando opinioni sulle funzionalità dell'app e contribuendo al loro sviluppo e sostentamento economico.
|
||||||
|
‣ <b>Aperta e Trasparente nel Processo Decisionale e Finanziario, Senza Scopo di Lucro e Completamente Open Source</b>
|
||||||
|
|
||||||
|
<b>Funzionalità principali</b>:
|
||||||
|
<ul>
|
||||||
|
<li>Scarica mappe dettagliate di luoghi che non sono disponibili su Google Maps</li>
|
||||||
|
<li>Modalità Outdoor con percorsi escursionistici, campeggi, sorgenti d'acqua, picchi, dislivelli ed altro evidenziati</li>
|
||||||
|
<li>Strade pedonali e piste ciclabili</li>
|
||||||
|
<li>Punti d'interesse come ristoranti, stazioni di benzina, hotel, negozi, luoghi turistici e molto altro</li>
|
||||||
|
<li>Cerca per nome, indirizzo o categoria</li>
|
||||||
|
<li>Navigazione con assistente vocale a piedi, in bici o in macchina</li>
|
||||||
|
<li>Salva i tuoi luoghi preferiti con un tocco</li>
|
||||||
|
<li>Leggi gli articoli Wikipedia Offline</li>
|
||||||
|
<li>Cartina delle metropolitane con direzioni</li>
|
||||||
|
<li>Registrazione del percorso</li>
|
||||||
|
<li>Esporta ed importa i tuoi luoghi preferiti e percorsi nei formati KML, KMZ o GPX</li>
|
||||||
|
<li>Modalità notturna per la notte</li>
|
||||||
|
<li>Migliora le mappe per tutti usando l'editor interno</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<b>La Libertà è Qui</b>
|
||||||
|
Esplora la tua nuova avventura, naviga il mondo con Privacy e la comunità in prima linea!
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Navigazione semplice - Immergiti nella tua avventura - Sviluppato dalla comunità
|
||||||
11
android/app/src/fdroid/play/listings/pl-PL/release-notes.txt
Normal file
11
android/app/src/fdroid/play/listings/pl-PL/release-notes.txt
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
Pierwsze wydanie CoMaps!
|
||||||
|
Zmiany w stosunku do Organic Maps:
|
||||||
|
• dane OSM z 15.05,
|
||||||
|
• logowanie do OSM przez przeglądarkę,
|
||||||
|
• usunięto półprzezroczyste tło w warstwie Metra,
|
||||||
|
• zastąpiono metaserver statyczną listą serwerów map,
|
||||||
|
• dodano rozmiar mapy do ekranu pobierania przy uruchamianiu,
|
||||||
|
• poprawiono przełączanie trybu nocnego bez lokalizacji,
|
||||||
|
• poprawiono niepoprawne informacje o mapie po dotknięciu niepobranego regionu,
|
||||||
|
• zaktualizowano tłumaczenia,
|
||||||
|
• rebranding - logo wciąż tymczasowe.
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
Lançamento inicial do CoMaps!
|
||||||
|
Alterações em relação ao Organic Maps:
|
||||||
|
• Dados do OSM de 15/05
|
||||||
|
• Login na conta OSM por meio de autenticação no navegador
|
||||||
|
• Remoção do fundo semitransparente na camada Metrô
|
||||||
|
• Substituição do metaserver por uma lista estática de servidores de mapas
|
||||||
|
• Melhoria na alternância automática do modo noturno quando não há localização
|
||||||
|
• Novas traduções
|
||||||
|
• Rebranding - O logo ainda é provisório
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
Lançamento inicial do CoMaps!
|
||||||
|
Alterações em relação ao Organic Maps:
|
||||||
|
• Dados do OSM de 15/05
|
||||||
|
• Login na conta OSM através de um navegador web auth
|
||||||
|
• Removido o fundo semi-transparente na camada do Metro
|
||||||
|
• Substituído o metaserver por uma lista estática de servidores de mapas
|
||||||
|
• Melhoria na mudança automática do modo noturno quando não há localização
|
||||||
|
• Novas traduções
|
||||||
|
• Rebranding - logótipo ainda provisório
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
Бесплатное картографическое приложение с открытым исходным кодом, основанное на данных OpenStreetMap и подкрепленное обязательствами по прозрачности, конфиденциальности и некоммерческому характеру. CoMaps - это форк/ответвление Organic Maps, который, в свою очередь, является форком Maps.ME.
|
||||||
|
|
||||||
|
‣ <b>Приоритет на работу без интернета</b>: Планируйте и ориентируйтесь в путешествии за границей, не нуждаясь в сотовой связи и т.д. Все функции приложения рассчитаны на работу в автономном режиме.
|
||||||
|
‣ <b>Соблюдение конфиденциальности</b>: Приложение разработано с учетом требований конфиденциальности - оно не идентифицирует людей, не отслеживает и не собирает личную информацию. Без рекламы.
|
||||||
|
‣ <b>Простота и Элегантность</b>: Необходимые и легкие в использовании функции, которые просто работают.
|
||||||
|
‣ <b>Экономия заряда батареи и места на устройстве</b>: Не разряжает аккумулятор, как другие приложения для навигации. Компактные карты экономят драгоценное место на вашем телефоне.
|
||||||
|
‣ <b>Бесплатное и созданное сообществом</b>: Люди, подобные вам, помогали создавать приложение, добавляя места в OpenStreetMap, тестируя и оставляя отзывы о функциях, а также вкладывая свои навыки и деньги в разработку..
|
||||||
|
‣ <b>Открытое и прозрачное принятие решений, финансовая отчетность, некоммерческая организация и полностью открытый исходный код.</b>
|
||||||
|
|
||||||
|
<b>Главные особенности</b>:
|
||||||
|
<ul>
|
||||||
|
<li>Загружаемые и подробные карты с местами, которые недоступны в Google Maps</li>
|
||||||
|
<li>Режим Outdoor с отмеченными туристическими тропами, кемпингами, источниками воды, вершинами, контурными линиями и т.д.</li>
|
||||||
|
<li>Пешеходные переходы и велодорожки</li>
|
||||||
|
<li>Точки интереса, такие как: рестораны, заправочные станции, отели, магазины, достопримечательности и многое другое</li>
|
||||||
|
<li>Поиск по имени, адресу или категории достопримечательностей</li>
|
||||||
|
<li>Навигация с голосовыми уведомлениями для пешеходов, велосипедистов или водителей</li>
|
||||||
|
<li>Возможность добавлять любимые места в закладки одним касанием</li>
|
||||||
|
<li>Загружаемые страницы Википедии</li>
|
||||||
|
<li>Слой общественного транспорта (метро)</li>
|
||||||
|
<li>Запись маршрута</li>
|
||||||
|
<li>Экспорт и импорт закладок и маршрутов в форматах KML, KMZ, GPX</li>
|
||||||
|
<li>Темный режим для использования в ночное время</li>
|
||||||
|
<li>Улучшение картографических данных для всех с помощью базового встроенного редактора</li>
|
||||||
|
<li>Поддержка Android Auto и CarPlay</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<i>Свобода здесь - Открой для себя поездки, навигацию по миру, ставя приватность и сообщество во главе</i>
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Једноставна навигација - Сазнајте више о свом путовању - Захваљујући заједници
|
||||||
1
android/app/src/fdroid/play/listings/sr/title.txt
Normal file
1
android/app/src/fdroid/play/listings/sr/title.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
CoMaps - пешачење, бицикл, вожња
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
这是一个由社区主导、以 OpenStreetMap 数据为基础的免费开源地图应用,建立在我们对运营透明、隐私安全和非营利性的承诺之上。CoMaps 是 Organic Maps 的分叉/衍生产品,而 Organic Maps 则是 Maps.ME 的分叉。
|
||||||
|
|
||||||
|
如需了解此项目诞生的原因及未来方向,请访问 <b><i>codeberg.org/comaps</i></b>。
|
||||||
|
加入以上社区,和大家一起打造最优质的地图应用
|
||||||
|
• 使用 CoMaps 的同时也分享推荐给周围的人
|
||||||
|
• 提供反馈和报告问题
|
||||||
|
• 在 CoMaps 中或 OpenStreetMap 网站上更新地图数据
|
||||||
|
|
||||||
|
‣ <b>以提供离线服务为核心</b>:无需移动网络即可规划和导航您的海外旅行,郊外远足时仍可搜索航点等等。所有功能均可离线使用。
|
||||||
|
‣ <b>尊重隐私</b>:开发者们在设计 CoMaps 时,优先考虑的是保护用户隐私。CoMaps 无法识别用户身份、无法跟踪用户活动,也无法收集个人信息。此外,CoMaps 不会也不能显示任何广告。
|
||||||
|
‣ <b>简洁精致</b>:轻便易用、不出差错的基本功能。
|
||||||
|
‣ <b>节省电池和空间</b>:不会像其他导航应用那样耗电。精简的地图可以节省宝贵的手机空间。
|
||||||
|
‣ <b>由社区合作创建的免费应用</b>:如同您一样的用户通过向 OpenStreetMap 添加地点、测试功能并提供反馈、无私地贡献自己的编程技能和资金,协力开发了 CoMaps。
|
||||||
|
‣ <b>决策问责、财务透明、非营利性、完全开源。</b>
|
||||||
|
|
||||||
|
<b>主要功能</b>:
|
||||||
|
<ul>
|
||||||
|
<li>可下载详细的地图,包括许多Google地图中未显示的地方</li>
|
||||||
|
<li>突出显示远足路线、露营地、水源、山峰、等高线等的户外模式</li>
|
||||||
|
<li>步行道和自行车道</li>
|
||||||
|
<li>餐厅、加油站、酒店、商店、景点等众多兴趣点</li>
|
||||||
|
<li>按名称、地址或兴趣点类别搜索</li>
|
||||||
|
<li>步行、骑车或驾驶时,可通过语音提示进行导航</li>
|
||||||
|
<li>一键收藏您中意的地点</li>
|
||||||
|
<li>离线阅读维基百科文章</li>
|
||||||
|
<li>地铁交通图层和路线指示</li>
|
||||||
|
<li>轨迹记录</li>
|
||||||
|
<li>以 KML、KMZ 和 GPX 格式导出和导入书签和轨迹</li>
|
||||||
|
<li>选择天暗后自动开启的黑暗模式</li>
|
||||||
|
<li>使用基本的内置编辑器来编辑 OpenStreetMap 地点,帮助大家改进地图数据</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<b>自由在此</b>
|
||||||
|
探索您的旅程,以隐私和社区为本,畅游世界!
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
轻松的地图导航 — 旅程中更多探索 — 由社区提供支持
|
||||||
1
android/app/src/fdroid/play/listings/zh-CN/title.txt
Normal file
1
android/app/src/fdroid/play/listings/zh-CN/title.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
CoMaps — 隐私保护下的离线远足、骑行、驾驶
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
這是一個由社群主導、以 OpenStreetMap 資料為基礎的免費開源地圖應用,建立在我們對營運透明、隱私安全和非營利性的承諾之上。 CoMaps 是 Organic Maps 的分叉/衍生產品,而 Organic Maps 則是 Maps.ME 的分叉。
|
||||||
|
|
||||||
|
如欲了解此專案誕生的原因及未來方向,請造訪 <b><i>codeberg.org/comaps</i></b>。
|
||||||
|
加入以上社群,和大家一起打造最優質的地圖應用
|
||||||
|
• 使用 CoMaps 的同時也分享推薦給周圍的人
|
||||||
|
• 提供回饋和報告問題
|
||||||
|
• 在 CoMaps 中或 OpenStreetMap 網站上更新地圖資料
|
||||||
|
|
||||||
|
‣ <b>以提供離線服務為核心</b>:無需行動網路即可規劃和導航您的海外旅行,郊外遠足時仍可搜尋航點等等。所有功能均可離線使用。
|
||||||
|
‣ <b>尊重隱私</b>:開發人員在設計 CoMaps 時,優先考慮的是保護使用者隱私。CoMaps 無法辨識使用者身分、無法追蹤使用者活動、無法收集個人資訊,也無法顯示任何廣告。
|
||||||
|
‣ <b>簡潔精緻</b>:易上手、不出錯的基本功能。
|
||||||
|
‣ <b>節省電池和空間</b>:不會像其他導航應用那樣耗電。精簡的地圖可以節省寶貴的手機空間。
|
||||||
|
‣ <b>由社群合作創建的免費應用</b>:如同您一樣的使用者透過向 OpenStreetMap 添加地點、測試功能並提供回饋、無私地貢獻自己的編碼技能和資金,協力開發了 CoMaps。
|
||||||
|
‣ <b>決策問責、財務透明、非營利性、完全開源。</b>
|
||||||
|
|
||||||
|
<b>主要功能</b>:
|
||||||
|
<ul>
|
||||||
|
<li>可下載詳細的地圖,包括許多Google地圖中未顯示的地方</li>
|
||||||
|
<li>突出顯示遠足路線、露營地、水源、山峰、等高線等的戶外模式</li>
|
||||||
|
<li>步道和自行車道</li>
|
||||||
|
<li>餐廳、加油站、旅館、商店、景點等眾多興趣點</li>
|
||||||
|
<li>按名稱、地址或興趣點類別搜尋</li>
|
||||||
|
<li>步行、騎車或駕駛時,可透過語音提示進行導航</li>
|
||||||
|
<li>一鍵收藏您喜愛的地點</li>
|
||||||
|
<li>離線閱讀維基百科文章</li>
|
||||||
|
<li>列車運輸圖層及路線指示</li>
|
||||||
|
<li>軌跡記錄</li>
|
||||||
|
<li>以 KML、KMZ 和 GPX 格式匯出和匯入書籤和軌跡</li>
|
||||||
|
<li>選擇天暗後自動開啟的黑暗模式</li>
|
||||||
|
<li>使用基本的內建編輯器來編輯 OpenStreetMap 地點,幫助大家改進地圖資料</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<b>自由在此</b>
|
||||||
|
探索您的旅程,以隱私和社群為本,暢遊世界!
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
輕鬆的地圖導航 — 旅程中更多探索 — 由社群提供支持
|
||||||
1
android/app/src/fdroid/play/listings/zh-TW/title.txt
Normal file
1
android/app/src/fdroid/play/listings/zh-TW/title.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
CoMaps — 隱私保護下的離線遠足、騎行、駕駛
|
||||||
@@ -1 +1 @@
|
|||||||
version: 2025.03.02-7-FDroid+25030207
|
version: 2025.06.01-6-FDroid+25060106
|
||||||
|
|||||||
@@ -0,0 +1,36 @@
|
|||||||
|
Eine von der Community betriebene, kostenlose Open-Source Karten App, die auf OpenStreetMap Daten basiert. Transparent, Daten sparsam und nicht gewinnorientiert.
|
||||||
|
|
||||||
|
Werde Teil der Community und hilf mit, die beste Karten-App zu entwickeln
|
||||||
|
• Nutze die App und erzähle anderen davon
|
||||||
|
• Gib Feedback und melde Probleme
|
||||||
|
• Aktualisiere Kartendaten in der App oder auf der OpenStreetMap Website
|
||||||
|
|
||||||
|
<i>Dein Feedback und deine 5 Sterne Bewertung sind die beste Unterstützung für uns!</i>
|
||||||
|
|
||||||
|
‣ <b>Einfach und ausgereift</b>: Essenzielle, leicht zu bedienende Funktionen, die einfach funktionieren.
|
||||||
|
‣ <b>Offline-orientiert</b>: Plane und navigiere im Ausland ohne Mobilfunkverbindung, finde Wegpunkte auf abgelegenen Wanderungen usw. Alle Funktionen sind für den Offline-Einsatz konzipiert.
|
||||||
|
‣ <b>Datenschutzfreundlich</b>: Die App wurde mit Fokus auf Privatsphäre entwickelt – keine Personenidentifikation, kein Tracking, keine Erfassung persönlicher Daten, keine Werbung.
|
||||||
|
‣ <b>Spart Akku und Speicherplatz</b>: Verbraucht nicht unnötig Akku wie andere Navi-Apps. Kompakte Karten sparen Speicherplatz auf deinem Gerät.
|
||||||
|
‣ <b>Kostenlos und von der Community entwickelt</b>: Menschen wie du haben geholfen die App zu entwickeln – durch das Hinzufügen von Orten zu OpenStreetMap, Testen von neuen Funktionen, Software Entwicklung oder Spenden.
|
||||||
|
‣ <b>Offen und transparent bei Entscheidungen und Finanzen, gemeinnützig und vollständig Open Source</b>
|
||||||
|
|
||||||
|
<b>Hauptfunktionen</b>:
|
||||||
|
• Detaillierte, herunterladbare Karten mit Orten, die bei Google Maps oft fehlen
|
||||||
|
• Outdoor-Modus mit hervorgehobenen Wanderwegen, Campingplätzen, Wasserquellen, Gipfeln, Höhenlinien usw.
|
||||||
|
• Geh- und Radwege
|
||||||
|
• Orte wie Restaurants, Tankstellen, Hotels, Geschäfte, Sehenswürdigkeiten und viele mehr
|
||||||
|
• Suche nach Namen, Adressen oder Kategorien
|
||||||
|
• Navigation mit Sprachausgabe für Fußgänger, Radfahrer und Autos
|
||||||
|
• Lesezeichen mit einem einzigen Tippen speichern
|
||||||
|
• Offline verfügbare Wikipedia-Artikel
|
||||||
|
• U- und S-Bahn Netze
|
||||||
|
• Aufzeichnen von GPS Tracks
|
||||||
|
• Import und Export von Favoriten und Routen im KML-, KMZ- oder GPX-Format
|
||||||
|
• Darkmode für die Nutzung bei Nacht
|
||||||
|
• Kartenbearbeitung direkt in der App mit einem einfachen Editor
|
||||||
|
• Unterstützung für Android Auto
|
||||||
|
|
||||||
|
Bitte melde Probleme, schlage neue Funktionen vor und werde Teil der Community auf unserer Website: <b><i>comaps.app</i></b>
|
||||||
|
|
||||||
|
<b>Freiheit beginnt hier</b>
|
||||||
|
Entdecke deine Reise – navigiere die Welt mit Privatsphäre!
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Einfache Navigation - Entdecken Sie mehr von Ihrer Reise - Community basiert
|
||||||
1
android/app/src/google/play/listings/de-DE/title.txt
Normal file
1
android/app/src/google/play/listings/de-DE/title.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
CoMaps – Privat navigieren
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
A community-led free & open source maps app based on OpenStreetMap data and reinforced with commitment to transparency, privacy and being not-for-profit.
|
||||||
|
|
||||||
|
Join the community and help make the best maps app
|
||||||
|
• Use the app and spread the word about it
|
||||||
|
• Give feedback and report issues
|
||||||
|
• Update map data in the app or on the OpenStreetMap website
|
||||||
|
|
||||||
|
<i>Your feedback and 5-star reviews are the best support for us!</i>
|
||||||
|
|
||||||
|
‣ <b>Simple and Polished</b>: essential easy to use features that just work.
|
||||||
|
‣ <b>Offline-focused</b>: Plan and navigate your trip abroad without the need for cellular service, search waypoints while on a distant hike, etc. All app functions are designed to work offline.
|
||||||
|
‣ <b>Respecting Privacy</b>: The app is designed with privacy in mind - does not identify people, does not track, and does not collect personal information. Ads-free.
|
||||||
|
‣ <b>Saves Your Battery and Space</b>: Doesn’t drain your battery like other navigation apps. Compact maps save precious space on your phone.
|
||||||
|
‣ <b>Free and Built by the Community</b>: People like you helped build the app by adding places to OpenStreetMap, testing and giving feedback on features and contributing their development skills and money.
|
||||||
|
‣ <b>Open and Transparent Decision-making and Financials, Not-for-profit and Fully Open Source.</b>
|
||||||
|
|
||||||
|
<b>Main Features</b>:
|
||||||
|
• Downloadable detailed maps with places which are not available with Google Maps
|
||||||
|
• Outdoor mode with highlighted hiking trails, campsites, water sources, peaks, contour lines, etc
|
||||||
|
• Walking paths and cycleways
|
||||||
|
• Points of interest like restaurants, gas stations, hotels, shops, sightseeings and many more
|
||||||
|
• Search by name or an address or by point of interest category
|
||||||
|
• Navigation with voice announcements for walking, cycling, or driving
|
||||||
|
• Bookmark your favorite places with a single tap
|
||||||
|
• Offline Wikipedia articles
|
||||||
|
• Subway transit layer and directions
|
||||||
|
• Track recording
|
||||||
|
• Export and import bookmarks and tracks in KML, KMZ, GPX formats
|
||||||
|
• A dark mode to use during the night
|
||||||
|
• Improve map data for everyone using a basic built-in editor
|
||||||
|
• Android Auto support
|
||||||
|
|
||||||
|
Please report app issues, suggest ideas and join our community at <b><i>comaps.app</i></b> website.
|
||||||
|
|
||||||
|
<b>Freedom Is Here</b>
|
||||||
|
Discover your journey, navigate the world with privacy and community at the forefront!
|
||||||
1
android/app/src/google/play/listings/en-US/graphics
Symbolic link
1
android/app/src/google/play/listings/en-US/graphics
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../../../../fdroid/play/listings/en-US/graphics/
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Easy map navigation - Discover more of your journey - Powered by the community
|
||||||
1
android/app/src/google/play/listings/en-US/title.txt
Normal file
1
android/app/src/google/play/listings/en-US/title.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
CoMaps - Navigate with Privacy
|
||||||
1
android/app/src/google/play/listings/en-US/video-url.txt
Normal file
1
android/app/src/google/play/listings/en-US/video-url.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
|
||||||
36
android/app/src/google/play/listings/et/full-description.txt
Normal file
36
android/app/src/google/play/listings/et/full-description.txt
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
Kogukonna juhitud vaba, avatud ja tasuta kaardirakendus, mis kasutab OpenStreetMapi kaardiandmeid ja on kantud meie kohustusest toimida läbipaistvalt, privaatselt ja kasumit mittetaotlevana.
|
||||||
|
|
||||||
|
Liitu kogukonnaga ja aita luua parimat kaardirakendust:
|
||||||
|
• Kasuta rakendust ja räägi sellest teistelegi
|
||||||
|
• Jaga tagasisidet ja teata vigadest
|
||||||
|
• Uuenda kaardiandmeid otse rakendusest või OpenStreetMapi veebisaidist
|
||||||
|
|
||||||
|
<i>Sinu tagasiside ja 5 tärniga hinnatud arvustused on meie jaoks parim tugi!</i>
|
||||||
|
|
||||||
|
‣ <b>Lihtne ja viimistletud</b>: kergeltkasutatav funktsionaalsus, mis lihtsalt toimib.
|
||||||
|
‣ <b>Ei vaja võrguühendust</b>: kavanda oma teekonda ja lase teed juhatada ilma andmesideühendust kasutamata ning otsi liikvel olles huvipunkte. Kaardirakenduse kogu funktsionaalsus on mõeldud toimima ilma võrguühenduseta.
|
||||||
|
‣ <b>Austab sinu privaatsust</b>: rakendus on loodud privaatsuskesksena - ta ei tuvasta sind, ei jälgi sinu tegevust ega kogu sinu kohta andmeid. Loomulikult pole ka reklaame.
|
||||||
|
‣ <b>Säästab akut ja andmeruumi</b>: erinevalt teistest kaardirakendustest ei koorma ta akut. Kompaktsed kaardid säästavad nutiseadmes nii vajaliku andmeruumi.
|
||||||
|
‣ <b>Vaba ja loodud kogukonna poolt</b>: tavalised inimesed, nii nagu sinagi, on aitanud kaardirakenduse loomisel, kaartide koostamisel, testimisel ja tagasiside jagamisel ning kõike seda tehes panustanud oma oskuste ja rahaga.
|
||||||
|
‣ <b>Organisatsioon on avatud ja kasutab läbipaistvat otsustusprotsessi ning rahastamist ega taotle kasumit. Rakendus on avatud lähtekoodiga.</b>
|
||||||
|
|
||||||
|
<b>Põhifunktsionaalsused</b>:
|
||||||
|
• Allalaaditavad kaardid, mille sisu tihtipeale ei leia Google Mapsist
|
||||||
|
• Kaardivaade välitingimuste jaoks, kus matkarajad, laagriplatsid, allikad, mäetipud, kontuurjooned ja palju muud vajalikku on esile tõstetud
|
||||||
|
• Jalgrajad, rattateed ning maanteed
|
||||||
|
• Huvipunktid, nagu restoranid, tanklad, hotellid, poed, vaatamisväärsused ja palju muud
|
||||||
|
• Otsida saad nime, aadressi või huvipunkti kategooria alusel
|
||||||
|
• Tee juhatamine hääljuhiste abil toimib nii kõndimisel, rattasõidul kui auto juhtimisel
|
||||||
|
• Ühe puudutusega saad oma lemmikkohad märkida järjehoidjana
|
||||||
|
• Vikipeedia artiklid, mida saad lugeda ilma võrguühenduseta
|
||||||
|
• Metroode plaanid ja suunajuhised
|
||||||
|
• Raja või teekonna salvestamise võimalus
|
||||||
|
• Järjehoidjate ja radade eksport ning import KML, KMZ ja GPX vormingutes
|
||||||
|
• Tume kaardivaade kasutamiseks öösel
|
||||||
|
• Kasutades lihtsat muutmisliidest saad kaarti kõikide huvides täiendada
|
||||||
|
• Android Auto liidestus
|
||||||
|
|
||||||
|
Palun teata rakenduse vigadest, soovita uusi ideid ja liitu kogukonnaga <b><i>comaps.app</i></b> veebisaidis.
|
||||||
|
|
||||||
|
<b>Vabadus on siin</b>
|
||||||
|
Uuri maailma ja avasta uusi teid - tee seda privaatselt ja kogukonnaga arvestades!
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Lihtne tee juhatamine - Avasta reisides enamat - Kõik see toimeka kogukonna toel
|
||||||
1
android/app/src/google/play/listings/et/title.txt
Normal file
1
android/app/src/google/play/listings/et/title.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
CoMaps - sinu privaatne kaart
|
||||||
1
android/app/src/google/play/listings/fr-FR/graphics
Symbolic link
1
android/app/src/google/play/listings/fr-FR/graphics
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../../../../fdroid/play/listings/fr-FR/graphics/
|
||||||
36
android/app/src/google/play/listings/sr/full-description.txt
Normal file
36
android/app/src/google/play/listings/sr/full-description.txt
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
Бесплатна апликација за мапе отвореног кода коју води заједница заснована на OpenStreetMap подацима и ојачана посвећеношћу транспарентности, приватности и непрофитности.
|
||||||
|
|
||||||
|
Придружите се заједници и помозите да направите најбољу навигацију
|
||||||
|
• Користите апликацију и ширите информације о њој
|
||||||
|
• Оставите повратне информације и пријавите проблеме
|
||||||
|
• Ажурирајте мапе из апликације или на сајту OpenStreetMap
|
||||||
|
|
||||||
|
<i>Ваше повратне информације и 5 звездица оцене - најбоља подршка за нас!</i>
|
||||||
|
|
||||||
|
‣ <b>Jednostavna i polirana</b>: основне функције које једноставно раде.
|
||||||
|
‣ <b>Офлајн фокусирана</b>: Планирајте путовање у иностранство без употребе мобилне телефоније, потражите правац тачке током дугог путовања, итд . Све функције апликације су дизајниране за рад у режиму без интернета.
|
||||||
|
‣ <b>Поштовање приватности</b>: Апликација је развијена с обзиром на приватност - не идентификује људе, не прати и не прикупља личне информације. Без реклама.
|
||||||
|
‣ <b>Штеди батерију и простор</b>: Не празни батерију, као остале навигациje. Компактне mape штедe драгоценi prostor на вашем телефону..
|
||||||
|
‣ <b>Free and Built by the Community</b>: Такви људи, као што сте помогли да креирате апликацију, додајући места у OpenStreetMap, тестира и остављајући повратне информације о функцијама, као и стављајући своје вештине развоја и новац.
|
||||||
|
‣ <b>Отворено и транспарентно доношење одлука и финансија, непрофитни и потпуно отворени кода.</b>
|
||||||
|
|
||||||
|
<b>Главне карактеристике</b>:
|
||||||
|
• Преузимање детаљне мапе са локацијама које нису доступне у Google Maps
|
||||||
|
• Истакнуте планинарске стазе, кампови, изворима воде, врхове, контуре линије итд
|
||||||
|
• Пешачке и бициклистичке стазе
|
||||||
|
• Тачке од интереса као што су ресторани, бензинске станице, хотели, атракције, шопинг и још много тога
|
||||||
|
• Претрага по имену или адреси или по категорији интересних места
|
||||||
|
• Навигација са гласовним огласима за планинарење, бициклизам или вожње аутомобила
|
||||||
|
• Означи своја омиљене места са једним додиром
|
||||||
|
• Офлајн Википедиа чланци
|
||||||
|
• Транзитни слој метроа и упутства
|
||||||
|
• Track recording
|
||||||
|
• Export and import bookmarks and tracks in KML, KMZ, GPX formats
|
||||||
|
• A dark mode to use during the night
|
||||||
|
• Improve map data for everyone using a basic built-in editor
|
||||||
|
• Подршка за Андроид Ауто
|
||||||
|
|
||||||
|
Молимо Вас да пријавите проблеме са апликацијом, предложите идеје и придружите се нашој заједници на <b><i>comaps.app</i></b> страни.
|
||||||
|
|
||||||
|
<b>Сад је слободно</b>
|
||||||
|
Откријте своје путовање, путујте светом с приватношћу и заједницом на челу!
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Једноставна навигација - Сазнајте више о свом путовању - Захваљујући заједници
|
||||||
1
android/app/src/google/play/listings/sr/title.txt
Normal file
1
android/app/src/google/play/listings/sr/title.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
CoMaps - навигација
|
||||||
1
android/app/src/google/play/listings/tr-TR/graphics
Symbolic link
1
android/app/src/google/play/listings/tr-TR/graphics
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../../../../fdroid/play/listings/tr-TR/graphics/
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
这是一个由社区主导、以 OpenStreetMap 数据为基础的免费开源地图应用,建立在我们对运营透明、隐私安全和非营利性的承诺之上。
|
||||||
|
|
||||||
|
加入社区,和大家一起打造最优质的地图应用
|
||||||
|
• 使用 CoMaps 的同时也分享推荐给周围的人
|
||||||
|
• 提供反馈和报告问题
|
||||||
|
• 在 CoMaps 中或 OpenStreetMap 网站上更新地图数据
|
||||||
|
|
||||||
|
<i>您的反馈和五星好评是对我们最好的支持!</i>
|
||||||
|
|
||||||
|
‣ <b>简洁精致</b>:轻便易用、不出差错的基本功能。
|
||||||
|
‣ <b>以提供离线服务为核心</b>:无需移动网络即可规划和导航您的海外旅行,郊外远足时仍可搜索航点等等。所有功能均可离线使用。
|
||||||
|
‣ <b>尊重隐私</b>:开发者们在设计 CoMaps 时,优先考虑的是保护用户隐私。CoMaps 无法识别用户身份、无法跟踪用户活动,也无法收集个人信息。此外,CoMaps 不会也不能显示任何广告。
|
||||||
|
‣ <b>节省电池和空间</b>:不会像其他导航应用那样耗电。精简的地图可以节省宝贵的手机空间。
|
||||||
|
‣ <b>由社区合作创建的免费应用</b>:如同您一样的用户通过向 OpenStreetMap 添加地点、测试功能并提供反馈、无私地贡献自己的编程技能和资金,协力开发了 CoMaps。
|
||||||
|
‣ <b>决策问责、财务透明、非营利性、完全开源。</b>
|
||||||
|
|
||||||
|
<b>主要功能</b>:
|
||||||
|
• 可下载详细的地图,包括许多商业地图中未显示的地方
|
||||||
|
• 突出显示远足路线、露营地、水源、山峰、等高线等的户外模式
|
||||||
|
• 步行道和自行车道
|
||||||
|
• 餐厅、加油站、酒店、商店、景点等众多兴趣点
|
||||||
|
• 按名称、地址或兴趣点类别搜索
|
||||||
|
• 步行、骑车或驾驶时,可通过语音提示进行导航
|
||||||
|
• 一键收藏您中意的地点
|
||||||
|
• 离线阅读维基百科文章
|
||||||
|
• 地铁交通图层和路线指示
|
||||||
|
• 轨迹记录
|
||||||
|
• 以 KML、KMZ 和 GPX 格式导出和导入书签和轨迹
|
||||||
|
• 选择天暗后自动开启的黑暗模式
|
||||||
|
• 使用基本的内置编辑器来编辑 OpenStreetMap 地点,帮助大家改进地图数据
|
||||||
|
• 支持 Android Auto
|
||||||
|
|
||||||
|
请在 <b><i>comaps.app</i></b> 网站上报告功能问题、提出建议并加入我们的社区。
|
||||||
|
|
||||||
|
<b>自由在此</b>
|
||||||
|
探索您的旅程,以隐私和社区为本,畅游世界!
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
轻松的地图导航 — 旅程中更多探索 — 由社区提供支持
|
||||||
1
android/app/src/google/play/listings/zh-CN/title.txt
Normal file
1
android/app/src/google/play/listings/zh-CN/title.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
CoMaps — 隐私导航
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
這是一個由社群主導、以 OpenStreetMap 資料為基礎的免費開源地圖應用,建立在我們對營運透明、隱私安全和非營利性的承諾之上。
|
||||||
|
|
||||||
|
加入社群,和大家一起打造最優質的地圖應用
|
||||||
|
• 使用 CoMaps 的同時也分享推薦給周圍的人
|
||||||
|
• 提供回饋和報告問題
|
||||||
|
• 在 CoMaps 中或 OpenStreetMap 網站上更新地圖資料
|
||||||
|
|
||||||
|
<i>您的回饋和五星好評是對我們最好的支持!</i>
|
||||||
|
|
||||||
|
‣ <b>簡潔精緻</b>:易上手、不出錯的基本功能。
|
||||||
|
‣ <b>以提供離線服務為核心</b>:無需行動網路即可規劃和導航您的海外旅行,郊外遠足時仍可搜尋航點等等。所有功能均可離線使用。
|
||||||
|
‣ <b>尊重隱私</b>:開發人員在設計 CoMaps 時,優先考慮的是保護使用者隱私。CoMaps 無法辨識使用者身分、無法追蹤使用者活動、無法收集個人資訊,也無法顯示任何廣告。
|
||||||
|
‣ <b>節省電池和空間</b>:不會像其他導航應用那樣耗電。精簡的地圖可以節省寶貴的手機空間。
|
||||||
|
‣ <b>由社群合作創建的免費應用</b>:如同您一樣的使用者透過向 OpenStreetMap 添加地點、測試功能並提供回饋、無私地貢獻自己的編碼技能和資金,協力開發了 CoMaps。
|
||||||
|
‣ <b>決策問責、財務透明、非營利性、完全開源。</b>
|
||||||
|
|
||||||
|
<b>主要功能</b>:
|
||||||
|
• 可下載詳細的地圖,包括許多商業地圖中未顯示的地方
|
||||||
|
• 突出顯示遠足路線、露營地、水源、山峰、等高線等的戶外模式
|
||||||
|
• 步道和自行車道
|
||||||
|
• 餐廳、加油站、旅館、商店、景點等眾多興趣點
|
||||||
|
• 按名稱、地址或興趣點類別搜尋
|
||||||
|
• 步行、騎車或駕駛時,可透過語音提示進行導航
|
||||||
|
• 一鍵收藏您喜愛的地點
|
||||||
|
• 離線閱讀維基百科文章
|
||||||
|
• 列車運輸圖層及路線指示
|
||||||
|
• 軌跡記錄
|
||||||
|
• 以 KML、KMZ 和 GPX 格式匯出和匯入書籤和軌跡
|
||||||
|
• 選擇天暗後自動開啟的黑暗模式
|
||||||
|
• 使用基本的內建編輯器來編輯 OpenStreetMap 地點,幫助大家改進地圖資料
|
||||||
|
• 支援 Android Auto
|
||||||
|
|
||||||
|
請在 <b><i>comaps.app</i></b> 網站上報告功能問題、提出建議並加入我們的社群。
|
||||||
|
|
||||||
|
<b>自由在此</b>
|
||||||
|
探索您的旅程,以隱私和社群為本,暢遊世界!
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
輕鬆的地圖導航 — 旅程中更多探索 — 由社群提供支持
|
||||||
1
android/app/src/google/play/listings/zh-TW/title.txt
Normal file
1
android/app/src/google/play/listings/zh-TW/title.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
CoMaps — 隱私導航
|
||||||
@@ -38,7 +38,6 @@
|
|||||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
|
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
|
||||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_LOCATION"/>
|
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_LOCATION"/>
|
||||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC"/>
|
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC"/>
|
||||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE"/>
|
|
||||||
<!--
|
<!--
|
||||||
Android 13 (API level 33) and higher supports a runtime permission for sending non-exempt (including Foreground
|
Android 13 (API level 33) and higher supports a runtime permission for sending non-exempt (including Foreground
|
||||||
Services (FGS)) notifications from an app.
|
Services (FGS)) notifications from an app.
|
||||||
@@ -98,7 +97,7 @@
|
|||||||
|
|
||||||
<data android:scheme="geo"/>
|
<data android:scheme="geo"/>
|
||||||
<data android:scheme="ge0"/>
|
<data android:scheme="ge0"/>
|
||||||
<data android:scheme="om"/>
|
<data android:scheme="cm"/>
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
|
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ jobject CreateMapObject(JNIEnv * env, place_page::Info const & info, int mapObje
|
|||||||
(jint)fID.m_index));
|
(jint)fID.m_index));
|
||||||
jni::TScopedLocalRef jTitle(env, jni::ToJavaString(env, info.GetTitle()));
|
jni::TScopedLocalRef jTitle(env, jni::ToJavaString(env, info.GetTitle()));
|
||||||
jni::TScopedLocalRef jSecondaryTitle(env, jni::ToJavaString(env, info.GetSecondaryTitle()));
|
jni::TScopedLocalRef jSecondaryTitle(env, jni::ToJavaString(env, info.GetSecondaryTitle()));
|
||||||
jni::TScopedLocalRef jSubtitle(env, jni::ToJavaString(env, info.GetSubtitle()));
|
jni::TScopedLocalRef jSubtitle(env, jni::ToJavaStringWithSupplementalCharsFix(env, info.GetSubtitle()));
|
||||||
jni::TScopedLocalRef jAddress(env, jni::ToJavaString(env, info.GetSecondarySubtitle()));
|
jni::TScopedLocalRef jAddress(env, jni::ToJavaString(env, info.GetSecondarySubtitle()));
|
||||||
jni::TScopedLocalRef jApiId(env, jni::ToJavaString(env, parseApi ? info.GetApiUrl() : ""));
|
jni::TScopedLocalRef jApiId(env, jni::ToJavaString(env, parseApi ? info.GetApiUrl() : ""));
|
||||||
jni::TScopedLocalRef jWikiDescription(env, jni::ToJavaString(env, info.GetWikiDescription()));
|
jni::TScopedLocalRef jWikiDescription(env, jni::ToJavaString(env, info.GetWikiDescription()));
|
||||||
@@ -118,7 +118,7 @@ jobject CreateBookmark(JNIEnv *env, const place_page::Info &info,
|
|||||||
(jlong)info.GetID().GetMwmVersion(), (jint)info.GetID().m_index));
|
(jlong)info.GetID().GetMwmVersion(), (jint)info.GetID().m_index));
|
||||||
jni::TScopedLocalRef jTitle(env, jni::ToJavaString(env, info.GetTitle()));
|
jni::TScopedLocalRef jTitle(env, jni::ToJavaString(env, info.GetTitle()));
|
||||||
jni::TScopedLocalRef jSecondaryTitle(env, jni::ToJavaString(env, info.GetSecondaryTitle()));
|
jni::TScopedLocalRef jSecondaryTitle(env, jni::ToJavaString(env, info.GetSecondaryTitle()));
|
||||||
jni::TScopedLocalRef jSubtitle(env, jni::ToJavaString(env, info.GetSubtitle()));
|
jni::TScopedLocalRef jSubtitle(env, jni::ToJavaStringWithSupplementalCharsFix(env, info.GetSubtitle()));
|
||||||
jni::TScopedLocalRef jAddress(env, jni::ToJavaString(env, info.GetSecondarySubtitle()));
|
jni::TScopedLocalRef jAddress(env, jni::ToJavaString(env, info.GetSecondarySubtitle()));
|
||||||
jni::TScopedLocalRef jWikiDescription(env, jni::ToJavaString(env, info.GetWikiDescription()));
|
jni::TScopedLocalRef jWikiDescription(env, jni::ToJavaString(env, info.GetWikiDescription()));
|
||||||
jobject mapObject = env->NewObject(
|
jobject mapObject = env->NewObject(
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
#include "base/assert.hpp"
|
#include "base/assert.hpp"
|
||||||
#include "base/exception.hpp"
|
#include "base/exception.hpp"
|
||||||
|
#include "base/string_utils.hpp"
|
||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
@@ -28,6 +29,21 @@ jclass g_elevationInfoClazz;
|
|||||||
|
|
||||||
extern "C"
|
extern "C"
|
||||||
{
|
{
|
||||||
|
int __system_property_get(char const * name, char * value);
|
||||||
|
|
||||||
|
static bool IsAndroidLowerThan7()
|
||||||
|
{
|
||||||
|
char value[92] = { 0 };
|
||||||
|
if (__system_property_get("ro.build.version.sdk", value) < 1)
|
||||||
|
return false;
|
||||||
|
const int apiLevel = atoi(value);
|
||||||
|
if (apiLevel > 0 && apiLevel < 24)
|
||||||
|
return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool const g_isAndroidLowerThan7 = IsAndroidLowerThan7();
|
||||||
|
|
||||||
JNIEXPORT jint JNICALL
|
JNIEXPORT jint JNICALL
|
||||||
JNI_OnLoad(JavaVM * jvm, void *)
|
JNI_OnLoad(JavaVM * jvm, void *)
|
||||||
{
|
{
|
||||||
@@ -154,6 +170,24 @@ jstring ToJavaString(JNIEnv * env, char const * s)
|
|||||||
return env->NewStringUTF(s);
|
return env->NewStringUTF(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
jstring ToJavaStringWithSupplementalCharsFix(JNIEnv * env, std::string const & s)
|
||||||
|
{
|
||||||
|
// Android 5 and 6 do not support unicode characters greater than 0xFFFF encoded in UTF-8.
|
||||||
|
if (g_isAndroidLowerThan7)
|
||||||
|
{
|
||||||
|
// Detect 4-byte sequence start marker to avoid unnecessary allocation + copy.
|
||||||
|
for (const auto c : s)
|
||||||
|
{
|
||||||
|
if (0b11110000 == (c & 0b11111000))
|
||||||
|
{
|
||||||
|
const auto utf16 = strings::ToUtf16(s);
|
||||||
|
return env->NewString(reinterpret_cast<jchar const *>(utf16.data()), utf16.size());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return env->NewStringUTF(s.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
jclass GetStringClass(JNIEnv * env)
|
jclass GetStringClass(JNIEnv * env)
|
||||||
{
|
{
|
||||||
return env->FindClass(GetStringClassName());
|
return env->FindClass(GetStringClassName());
|
||||||
|
|||||||
@@ -55,6 +55,9 @@ inline jstring ToJavaString(JNIEnv * env, std::string_view sv)
|
|||||||
return ToJavaString(env, std::string(sv).c_str());
|
return ToJavaString(env, std::string(sv).c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Remove after dropping Android 5 and 6 support.
|
||||||
|
jstring ToJavaStringWithSupplementalCharsFix(JNIEnv * env, std::string const & s);
|
||||||
|
|
||||||
jclass GetStringClass(JNIEnv * env);
|
jclass GetStringClass(JNIEnv * env);
|
||||||
char const * GetStringClassName();
|
char const * GetStringClassName();
|
||||||
|
|
||||||
|
|||||||
@@ -111,10 +111,10 @@ public class DownloadResourcesLegacyActivity extends BaseMwmFragmentActivity
|
|||||||
}
|
}
|
||||||
|
|
||||||
int status = MapManager.nativeGetStatus(mCurrentCountry);
|
int status = MapManager.nativeGetStatus(mCurrentCountry);
|
||||||
String name = MapManager.nativeGetName(mCurrentCountry);
|
|
||||||
|
|
||||||
if (status != CountryItem.STATUS_DONE)
|
if (status != CountryItem.STATUS_DONE)
|
||||||
{
|
{
|
||||||
|
String name = getFormattedCountryName(mCurrentCountry);
|
||||||
UiUtils.show(mChbDownloadCountry);
|
UiUtils.show(mChbDownloadCountry);
|
||||||
String checkBoxText;
|
String checkBoxText;
|
||||||
if (status == CountryItem.STATUS_UPDATABLE)
|
if (status == CountryItem.STATUS_UPDATABLE)
|
||||||
@@ -129,6 +129,18 @@ public class DownloadResourcesLegacyActivity extends BaseMwmFragmentActivity
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
private String getFormattedCountryName(String mCurrentCountry) {
|
||||||
|
String name = MapManager.nativeGetName(mCurrentCountry);
|
||||||
|
CountryItem country = CountryItem.fill(mCurrentCountry);
|
||||||
|
String sizeText = StringUtils.getFileSizeString(DownloadResourcesLegacyActivity.this, country.totalSize);
|
||||||
|
|
||||||
|
if (!TextUtils.isEmpty(sizeText)) {
|
||||||
|
name = name + " (" + sizeText + ")";
|
||||||
|
}
|
||||||
|
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
private final Listener mResourcesDownloadListener = new Listener()
|
private final Listener mResourcesDownloadListener = new Listener()
|
||||||
{
|
{
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -93,6 +93,12 @@ public class FeatureId implements Parcelable
|
|||||||
return mFeatureIndex;
|
return mFeatureIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isRealId() {
|
||||||
|
return !TextUtils.isEmpty(mMwmName) &&
|
||||||
|
mMwmVersion >= 0 &&
|
||||||
|
mFeatureIndex > 0;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean equals(Object o)
|
public boolean equals(Object o)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -178,7 +178,7 @@ public class MapObject implements PlacePageData
|
|||||||
if (getClass() != other.getClass())
|
if (getClass() != other.getClass())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (mFeatureId != FeatureId.EMPTY && other.getFeatureId() != FeatureId.EMPTY)
|
if (mFeatureId.isRealId() && other.getFeatureId().isRealId())
|
||||||
return mFeatureId.equals(other.getFeatureId());
|
return mFeatureId.equals(other.getFeatureId());
|
||||||
|
|
||||||
return Double.doubleToLongBits(mLon) == Double.doubleToLongBits(other.mLon) &&
|
return Double.doubleToLongBits(mLon) == Double.doubleToLongBits(other.mLon) &&
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ public class Metadata implements Parcelable
|
|||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
public static MetadataType fromInt(@IntRange(from = 1, to = 41) int metaType)
|
public static MetadataType fromInt(@IntRange(from = 1, to = 49) int metaType)
|
||||||
{
|
{
|
||||||
for (MetadataType type : values())
|
for (MetadataType type : values())
|
||||||
if (type.mMetaType == metaType)
|
if (type.mMetaType == metaType)
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import com.google.android.material.floatingactionbutton.FloatingActionButton;
|
|||||||
import app.organicmaps.R;
|
import app.organicmaps.R;
|
||||||
import app.organicmaps.util.StringUtils;
|
import app.organicmaps.util.StringUtils;
|
||||||
import app.organicmaps.util.UiUtils;
|
import app.organicmaps.util.UiUtils;
|
||||||
|
|
||||||
import static app.organicmaps.downloader.CountryItem.*;
|
import static app.organicmaps.downloader.CountryItem.*;
|
||||||
|
|
||||||
class BottomPanel
|
class BottomPanel
|
||||||
@@ -39,6 +40,7 @@ class BottomPanel
|
|||||||
@Override
|
@Override
|
||||||
public void onClick(View v)
|
public void onClick(View v)
|
||||||
{
|
{
|
||||||
|
MapManager.nativeCancel(mFragment.getCurrentRoot());
|
||||||
mFragment.getAdapter().refreshData();
|
mFragment.getAdapter().refreshData();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -58,20 +58,20 @@ public class OsmLoginFragment extends BaseMwmToolbarFragment
|
|||||||
mProgress = view.findViewById(R.id.osm_login_progress);
|
mProgress = view.findViewById(R.id.osm_login_progress);
|
||||||
final String dataVersion = DateUtils.getShortDateFormatter().format(Framework.getDataVersion());
|
final String dataVersion = DateUtils.getShortDateFormatter().format(Framework.getDataVersion());
|
||||||
|
|
||||||
if (BuildConfig.FLAVOR.equals("google"))
|
// TODO(@pastk): remove unused flow with users entering credentials into app's form
|
||||||
{
|
|
||||||
// Hide login and password inputs and Forgot password button
|
// Hide login and password inputs and Forgot password button
|
||||||
UiUtils.hide(view.findViewById(R.id.osm_username_container),
|
UiUtils.hide(view.findViewById(R.id.osm_username_container),
|
||||||
view.findViewById(R.id.osm_password_container),
|
view.findViewById(R.id.osm_password_container),
|
||||||
mLostPasswordButton);
|
mLostPasswordButton);
|
||||||
|
|
||||||
mLoginButton.setOnClickListener((v) -> loginWithBrowser());
|
mLoginButton.setOnClickListener((v) -> loginWithBrowser());
|
||||||
}
|
/* login via in-app form
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
mLoginButton.setOnClickListener((v) -> login());
|
mLoginButton.setOnClickListener((v) -> login());
|
||||||
mLostPasswordButton.setOnClickListener((v) -> Utils.openUrl(requireActivity(), Constants.Url.OSM_RECOVER_PASSWORD));
|
mLostPasswordButton.setOnClickListener((v) -> Utils.openUrl(requireActivity(), Constants.Url.OSM_RECOVER_PASSWORD));
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
String code = readOAuth2CodeFromArguments();
|
String code = readOAuth2CodeFromArguments();
|
||||||
if (code != null && !code.isEmpty())
|
if (code != null && !code.isEmpty())
|
||||||
@@ -150,7 +150,7 @@ public class OsmLoginFragment extends BaseMwmToolbarFragment
|
|||||||
requireActivity().finish();
|
requireActivity().finish();
|
||||||
}
|
}
|
||||||
|
|
||||||
// This method is called by MwmActivity & UrlProcessor when "om://oauth2/osm/callback?code=XXX" is handled
|
// This method is called by MwmActivity & UrlProcessor when "cm://oauth2/osm/callback?code=XXX" is handled
|
||||||
private void continueOAuth2Flow(String oauth2code)
|
private void continueOAuth2Flow(String oauth2code)
|
||||||
{
|
{
|
||||||
if (!isAdded())
|
if (!isAdded())
|
||||||
|
|||||||
@@ -355,7 +355,17 @@ public class MapButtonsController extends Fragment
|
|||||||
{
|
{
|
||||||
final View button = entry.getValue();
|
final View button = entry.getValue();
|
||||||
if (button.getParent() == parent)
|
if (button.getParent() == parent)
|
||||||
showButton(getViewTopOffset(translation, button) >= 0, entry.getKey());
|
{
|
||||||
|
int toleranceOffset = 0;
|
||||||
|
// Allow offset tolerance for zoom buttons
|
||||||
|
switch(entry.getKey())
|
||||||
|
{
|
||||||
|
case zoomIn: case zoomOut: case zoom:
|
||||||
|
toleranceOffset = -140;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
showButton(getViewTopOffset(translation, button) >= toleranceOffset, entry.getKey());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -317,7 +317,9 @@ public class SettingsPrefsFragment extends BaseXmlSettingsFragment implements La
|
|||||||
disableOrEnable3DBuildingsForPowerMode(powerManagementValue);
|
disableOrEnable3DBuildingsForPowerMode(powerManagementValue);
|
||||||
|
|
||||||
pref.setOnPreferenceChangeListener((preference, newValue) -> {
|
pref.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||||
Framework.nativeSet3dMode(_3d.enabled, (Boolean)newValue);
|
Framework.Params3dMode current = new Framework.Params3dMode();
|
||||||
|
Framework.nativeGet3dMode(current);
|
||||||
|
Framework.nativeSet3dMode(current.enabled, (Boolean)newValue);
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -356,7 +358,9 @@ public class SettingsPrefsFragment extends BaseXmlSettingsFragment implements La
|
|||||||
pref.setChecked(_3d.enabled);
|
pref.setChecked(_3d.enabled);
|
||||||
|
|
||||||
pref.setOnPreferenceChangeListener((preference, newValue) -> {
|
pref.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||||
Framework.nativeSet3dMode((Boolean) newValue, _3d.buildings);
|
Framework.Params3dMode current = new Framework.Params3dMode();
|
||||||
|
Framework.nativeGet3dMode(current);
|
||||||
|
Framework.nativeSet3dMode((Boolean) newValue, current.buildings);
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -176,6 +176,11 @@ public class VoiceInstructionsSettingsFragment extends BaseXmlSettingsFragment
|
|||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
TtsPlayer.sOnReloadCallback = () -> {
|
||||||
|
Toast.makeText(requireContext(), "TTS engine reloaded", Toast.LENGTH_SHORT).show();
|
||||||
|
updateTts();
|
||||||
|
};
|
||||||
|
|
||||||
initVolume();
|
initVolume();
|
||||||
initTtsLangInfoLink();
|
initTtsLangInfoLink();
|
||||||
initSpeedCamerasPrefs();
|
initSpeedCamerasPrefs();
|
||||||
@@ -190,6 +195,13 @@ public class VoiceInstructionsSettingsFragment extends BaseXmlSettingsFragment
|
|||||||
updateTts();
|
updateTts();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDestroyView()
|
||||||
|
{
|
||||||
|
TtsPlayer.sOnReloadCallback = null;
|
||||||
|
super.onDestroyView();
|
||||||
|
}
|
||||||
|
|
||||||
private void onInstallDataResult()
|
private void onInstallDataResult()
|
||||||
{
|
{
|
||||||
updateTts();
|
updateTts();
|
||||||
|
|||||||
@@ -2,9 +2,11 @@ package app.organicmaps.sound;
|
|||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
|
import android.database.ContentObserver;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.Looper;
|
import android.os.Looper;
|
||||||
|
import android.provider.Settings;
|
||||||
import android.speech.tts.TextToSpeech;
|
import android.speech.tts.TextToSpeech;
|
||||||
import android.speech.tts.UtteranceProgressListener;
|
import android.speech.tts.UtteranceProgressListener;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
@@ -45,8 +47,12 @@ public enum TtsPlayer
|
|||||||
private static final float SPEECH_RATE = 1.0f;
|
private static final float SPEECH_RATE = 1.0f;
|
||||||
private static final int TTS_SPEAK_DELAY_MILLIS = 50;
|
private static final int TTS_SPEAK_DELAY_MILLIS = 50;
|
||||||
|
|
||||||
|
public static Runnable sOnReloadCallback = null;
|
||||||
|
|
||||||
|
private ContentObserver mTtsEngineObserver;
|
||||||
private TextToSpeech mTts;
|
private TextToSpeech mTts;
|
||||||
private boolean mInitializing;
|
private boolean mInitializing;
|
||||||
|
private boolean mReloadTriggered = false;
|
||||||
private AudioFocusManager mAudioFocusManager;
|
private AudioFocusManager mAudioFocusManager;
|
||||||
|
|
||||||
private final Bundle mParams = new Bundle();
|
private final Bundle mParams = new Bundle();
|
||||||
@@ -185,7 +191,32 @@ public enum TtsPlayer
|
|||||||
mAudioFocusManager = new AudioFocusManager(context);
|
mAudioFocusManager = new AudioFocusManager(context);
|
||||||
mParams.putFloat(TextToSpeech.Engine.KEY_PARAM_VOLUME, Config.TTS.getVolume());
|
mParams.putFloat(TextToSpeech.Engine.KEY_PARAM_VOLUME, Config.TTS.getVolume());
|
||||||
mInitializing = false;
|
mInitializing = false;
|
||||||
|
if (mReloadTriggered && sOnReloadCallback != null)
|
||||||
|
{
|
||||||
|
sOnReloadCallback.run();
|
||||||
|
mReloadTriggered = false;
|
||||||
|
}
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
if (mTtsEngineObserver == null) {
|
||||||
|
mTtsEngineObserver = new ContentObserver(new Handler(Looper.getMainLooper())) {
|
||||||
|
@Override
|
||||||
|
public void onChange(boolean selfChange) {
|
||||||
|
Logger.d(TAG, "System TTS engine changed – reloading TTS engine");
|
||||||
|
mReloadTriggered = true;
|
||||||
|
if (mTts != null) {
|
||||||
|
mTts.shutdown();
|
||||||
|
mTts = null;
|
||||||
|
}
|
||||||
|
initialize(mContext);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
mContext.getContentResolver().registerContentObserver(
|
||||||
|
Settings.Secure.getUriFor("tts_default_synth"),
|
||||||
|
false,
|
||||||
|
mTtsEngineObserver
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean isReady()
|
private static boolean isReady()
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ public final class Constants
|
|||||||
|
|
||||||
public static class Url
|
public static class Url
|
||||||
{
|
{
|
||||||
public static final String SHORT_SHARE_PREFIX = "om://";
|
public static final String SHORT_SHARE_PREFIX = "cm://";
|
||||||
public static final String HTTP_SHARE_PREFIX = "https://comaps.app/";
|
public static final String HTTP_SHARE_PREFIX = "https://comaps.app/";
|
||||||
|
|
||||||
public static final String MAILTO_SCHEME = "mailto:";
|
public static final String MAILTO_SCHEME = "mailto:";
|
||||||
|
|||||||
@@ -32,17 +32,17 @@ public enum ThemeSwitcher
|
|||||||
@Override
|
@Override
|
||||||
public void run()
|
public void run()
|
||||||
{
|
{
|
||||||
boolean navAuto = RoutingController.get().isNavigating() && ThemeUtils.isNavAutoTheme(mContext);
|
boolean isNavAuto = RoutingController.get().isNavigating() && ThemeUtils.isNavAutoTheme(mContext);
|
||||||
// Cancel old checker
|
// Cancel old checker
|
||||||
UiThread.cancelDelayedTasks(mAutoThemeChecker);
|
UiThread.cancelDelayedTasks(mAutoThemeChecker);
|
||||||
|
|
||||||
if (navAuto || ThemeUtils.isAutoTheme(mContext))
|
if (isNavAuto || ThemeUtils.isAutoTheme(mContext))
|
||||||
{
|
{
|
||||||
UiThread.runLater(mAutoThemeChecker, CHECK_INTERVAL_MS);
|
UiThread.runLater(mAutoThemeChecker, CHECK_INTERVAL_MS);
|
||||||
setThemeAndMapStyle(calcAutoTheme());
|
setThemeAndMapStyle(calcAutoTheme());
|
||||||
}
|
}
|
||||||
else
|
else // Only reached when an auto mode should be light
|
||||||
setThemeAndMapStyle(Config.getCurrentUiTheme(mContext));
|
setThemeAndMapStyle(mContext.getResources().getString(R.string.theme_default));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -193,6 +193,14 @@ public class EditBookmarkFragment extends BaseMwmDialogFragment implements View.
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onAttach(@NonNull Context context)
|
||||||
|
{
|
||||||
|
super.onAttach(context);
|
||||||
|
if (mListener == null && getParentFragment() instanceof EditBookmarkListener)
|
||||||
|
mListener = (EditBookmarkListener) getParentFragment();
|
||||||
|
}
|
||||||
|
|
||||||
private void initToolbar(View view)
|
private void initToolbar(View view)
|
||||||
{
|
{
|
||||||
Toolbar toolbar = view.findViewById(R.id.toolbar);
|
Toolbar toolbar = view.findViewById(R.id.toolbar);
|
||||||
|
|||||||
@@ -458,10 +458,7 @@ public class PlacePageView extends Fragment implements View.OnClickListener,
|
|||||||
refreshMetadataOrHide(wheelchair, mWheelchair, mTvWheelchair);
|
refreshMetadataOrHide(wheelchair, mWheelchair, mTvWheelchair);
|
||||||
|
|
||||||
final String driveThrough = mMapObject.getMetadata(Metadata.MetadataType.FMD_DRIVE_THROUGH);
|
final String driveThrough = mMapObject.getMetadata(Metadata.MetadataType.FMD_DRIVE_THROUGH);
|
||||||
if (driveThrough.equals("yes"))
|
refreshMetadataOrHide(driveThrough.equals("yes") ? getString(R.string.drive_through) : "", mDriveThrough, mTvDriveThrough);
|
||||||
{
|
|
||||||
refreshMetadataOrHide(getString(R.string.drive_through), mDriveThrough, mTvDriveThrough);
|
|
||||||
}
|
|
||||||
|
|
||||||
final String selfService = mMapObject.getMetadata(Metadata.MetadataType.FMD_SELF_SERVICE);
|
final String selfService = mMapObject.getMetadata(Metadata.MetadataType.FMD_SELF_SERVICE);
|
||||||
refreshMetadataOrHide(Utils.getTagValueLocalized(getContext(), "self_service", selfService), mSelfService, mTvSelfService);
|
refreshMetadataOrHide(Utils.getTagValueLocalized(getContext(), "self_service", selfService), mSelfService, mTvSelfService);
|
||||||
|
|||||||
@@ -127,7 +127,7 @@ public class PlacePageBookmarkFragment extends Fragment implements View.OnClickL
|
|||||||
EditBookmarkFragment.editBookmark(currentBookmark.getCategoryId(),
|
EditBookmarkFragment.editBookmark(currentBookmark.getCategoryId(),
|
||||||
currentBookmark.getBookmarkId(),
|
currentBookmark.getBookmarkId(),
|
||||||
activity,
|
activity,
|
||||||
activity.getSupportFragmentManager(),
|
getChildFragmentManager(),
|
||||||
PlacePageBookmarkFragment.this);
|
PlacePageBookmarkFragment.this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,6 @@
|
|||||||
android:minHeight="@dimen/editor_height_field"
|
android:minHeight="@dimen/editor_height_field"
|
||||||
android:paddingEnd="@dimen/margin_quarter"
|
android:paddingEnd="@dimen/margin_quarter"
|
||||||
android:paddingStart="@dimen/margin_half_plus"
|
android:paddingStart="@dimen/margin_half_plus"
|
||||||
android:tag="schedule"
|
|
||||||
tools:ignore="RtlSymmetry">
|
tools:ignore="RtlSymmetry">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
android:id="@+id/ll__place_atm"
|
android:id="@+id/ll__place_atm"
|
||||||
style="@style/PlacePageItemFrame"
|
style="@style/PlacePageItemFrame"
|
||||||
android:tag="atm"
|
|
||||||
tools:background="#4000FFFF"
|
tools:background="#4000FFFF"
|
||||||
tools:visibility="visible">
|
tools:visibility="visible">
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
android:id="@+id/ll__place_capacity"
|
android:id="@+id/ll__place_capacity"
|
||||||
style="@style/PlacePageItemFrame"
|
style="@style/PlacePageItemFrame"
|
||||||
android:tag="capacity"
|
|
||||||
tools:background="#4000FFFF"
|
tools:background="#4000FFFF"
|
||||||
tools:visibility="visible">
|
tools:visibility="visible">
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:id="@+id/ll__place_cuisine"
|
android:id="@+id/ll__place_cuisine"
|
||||||
style="@style/PlacePageItemFrame"
|
style="@style/PlacePageItemFrame"
|
||||||
android:tag="cuisine"
|
|
||||||
tools:visibility="visible"
|
tools:visibility="visible"
|
||||||
tools:ignore="UseCompoundDrawables">
|
tools:ignore="UseCompoundDrawables">
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
android:id="@+id/ll__place_drive_through"
|
android:id="@+id/ll__place_drive_through"
|
||||||
style="@style/PlacePageItemFrame"
|
style="@style/PlacePageItemFrame"
|
||||||
android:tag="drive_through"
|
|
||||||
tools:background="#4000FFFF"
|
tools:background="#4000FFFF"
|
||||||
tools:visibility="visible">
|
tools:visibility="visible">
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:id="@+id/ll__place_email"
|
android:id="@+id/ll__place_email"
|
||||||
style="@style/PlacePageItemFrame"
|
style="@style/PlacePageItemFrame"
|
||||||
android:tag="email"
|
|
||||||
tools:background="#200000FF"
|
tools:background="#200000FF"
|
||||||
tools:visibility="visible">
|
tools:visibility="visible">
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:id="@+id/ll__place_facebook"
|
android:id="@+id/ll__place_facebook"
|
||||||
style="@style/PlacePageItemFrame"
|
style="@style/PlacePageItemFrame"
|
||||||
android:tag="website"
|
|
||||||
tools:background="#20FF0000"
|
tools:background="#20FF0000"
|
||||||
tools:visibility="visible">
|
tools:visibility="visible">
|
||||||
<ImageView
|
<ImageView
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:id="@+id/ll__place_instagram"
|
android:id="@+id/ll__place_instagram"
|
||||||
style="@style/PlacePageItemFrame"
|
style="@style/PlacePageItemFrame"
|
||||||
android:tag="website"
|
|
||||||
tools:background="#20FF0000"
|
tools:background="#20FF0000"
|
||||||
tools:visibility="visible">
|
tools:visibility="visible">
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
android:id="@+id/ll__place_latlon"
|
android:id="@+id/ll__place_latlon"
|
||||||
style="@style/PlacePageItemFrame"
|
style="@style/PlacePageItemFrame"
|
||||||
android:tag="latlon"
|
|
||||||
android:visibility="visible"
|
android:visibility="visible"
|
||||||
tools:background="#20FF0000">
|
tools:background="#20FF0000">
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
android:id="@+id/ll__place_level"
|
android:id="@+id/ll__place_level"
|
||||||
style="@style/PlacePageItemFrame"
|
style="@style/PlacePageItemFrame"
|
||||||
android:tag="level"
|
|
||||||
tools:background="#4000FFFF"
|
tools:background="#4000FFFF"
|
||||||
tools:visibility="visible">
|
tools:visibility="visible">
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:id="@+id/ll__place_line"
|
android:id="@+id/ll__place_line"
|
||||||
style="@style/PlacePageItemFrame"
|
style="@style/PlacePageItemFrame"
|
||||||
android:tag="website"
|
|
||||||
tools:background="#20FF0000"
|
tools:background="#20FF0000"
|
||||||
tools:visibility="visible">
|
tools:visibility="visible">
|
||||||
<ImageView
|
<ImageView
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
android:id="@+id/ll__place_network"
|
android:id="@+id/ll__place_network"
|
||||||
style="@style/PlacePageItemFrame"
|
style="@style/PlacePageItemFrame"
|
||||||
android:tag="network"
|
|
||||||
tools:background="#4000FFFF"
|
tools:background="#4000FFFF"
|
||||||
tools:visibility="visible">
|
tools:visibility="visible">
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:id="@+id/ll__place_open_in"
|
android:id="@+id/ll__place_open_in"
|
||||||
style="@style/PlacePageItemFrame"
|
style="@style/PlacePageItemFrame"
|
||||||
android:tag="open_in"
|
|
||||||
tools:background="#20FF0000"
|
tools:background="#20FF0000"
|
||||||
tools:visibility="visible">
|
tools:visibility="visible">
|
||||||
|
|
||||||
|
|||||||
@@ -3,8 +3,7 @@
|
|||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
style="@style/PlacePageItemFrame"
|
style="@style/PlacePageItemFrame">
|
||||||
android:tag="schedule">
|
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/icon"
|
android:id="@+id/icon"
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
android:id="@+id/ll__place_operator"
|
android:id="@+id/ll__place_operator"
|
||||||
style="@style/PlacePageItemFrame"
|
style="@style/PlacePageItemFrame"
|
||||||
android:tag="operator"
|
|
||||||
tools:background="#4000FFFF"
|
tools:background="#4000FFFF"
|
||||||
tools:visibility="visible">
|
tools:visibility="visible">
|
||||||
|
|
||||||
|
|||||||
@@ -7,8 +7,7 @@
|
|||||||
style="@style/PlacePageItemFrame"
|
style="@style/PlacePageItemFrame"
|
||||||
tools:background="#2000FF00"
|
tools:background="#2000FF00"
|
||||||
android:orientation="horizontal"
|
android:orientation="horizontal"
|
||||||
android:visibility="visible"
|
android:visibility="visible">
|
||||||
android:tag="phone">
|
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/iv__place_phone"
|
android:id="@+id/iv__place_phone"
|
||||||
@@ -19,7 +18,7 @@
|
|||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/tv__place_phone"
|
android:id="@+id/tv__place_phone"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textDirection="firstStrongLtr"
|
android:textDirection="ltr"
|
||||||
style="@style/PlacePageMetadataText"
|
style="@style/PlacePageMetadataText"
|
||||||
android:textAppearance="@style/MwmTextAppearance.PlacePage.Accent"
|
android:textAppearance="@style/MwmTextAppearance.PlacePage.Accent"
|
||||||
tools:text="+1 234 567-89-00"/>
|
tools:text="+1 234 567-89-00"/>
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
android:id="@+id/ll__place_self_service"
|
android:id="@+id/ll__place_self_service"
|
||||||
style="@style/PlacePageItemFrame"
|
style="@style/PlacePageItemFrame"
|
||||||
android:tag="drive_through"
|
|
||||||
tools:background="#4000FFFF"
|
tools:background="#4000FFFF"
|
||||||
tools:visibility="visible">
|
tools:visibility="visible">
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user