diff --git a/OsmAnd-java/src/main/java/net/osmand/data/Building.java b/OsmAnd-java/src/main/java/net/osmand/data/Building.java
index 0adacd411a..5e16f755fc 100644
--- a/OsmAnd-java/src/main/java/net/osmand/data/Building.java
+++ b/OsmAnd-java/src/main/java/net/osmand/data/Building.java
@@ -182,10 +182,10 @@ public class Building extends MapObject {
@Override
public String toString() {
- if(interpolationInterval !=0){
- return name+"-"+name2 +" (+"+interpolationInterval+") ";
- } else if(interpolationType != null) {
- return name+"-"+name2 +" ("+interpolationType+") ";
+ if (interpolationInterval != 0) {
+ return name + "-" + name2 + " (+" + interpolationInterval + ") ";
+ } else if (interpolationType != null) {
+ return name + "-" + name2 + " (" + interpolationType + ") ";
}
return name;
}
diff --git a/OsmAnd-java/src/main/java/net/osmand/search/SearchUICore.java b/OsmAnd-java/src/main/java/net/osmand/search/SearchUICore.java
index df8c2bd5be..37c16393fa 100644
--- a/OsmAnd-java/src/main/java/net/osmand/search/SearchUICore.java
+++ b/OsmAnd-java/src/main/java/net/osmand/search/SearchUICore.java
@@ -1004,17 +1004,12 @@ public class SearchUICore {
String subType2 = a2.getSubType() == null ? "" : a2.getSubType();
int cmp = 0;
-
- if (FILTER_DUPLICATE_POI_SUBTYPE.contains(subType1)) {
- cmp = 1;
- } else if (FILTER_DUPLICATE_POI_SUBTYPE.contains(subType2)) {
- cmp = -1;
- }
-
- if (cmp != 0) {
- return cmp;
+ boolean subtypeFilter1 = FILTER_DUPLICATE_POI_SUBTYPE.contains(subType1);
+ boolean subtypeFilter2 = FILTER_DUPLICATE_POI_SUBTYPE.contains(subType2);
+ if (subtypeFilter1 != subtypeFilter2) {
+ // to filter second
+ return subtypeFilter1 ? 1 : -1;
}
-
cmp = c.collator.compare(type1, type2);
if (cmp != 0) {
return cmp;
diff --git a/OsmAnd/AndroidManifest-free.xml b/OsmAnd/AndroidManifest-gplayFree.xml
similarity index 100%
rename from OsmAnd/AndroidManifest-free.xml
rename to OsmAnd/AndroidManifest-gplayFree.xml
diff --git a/OsmAnd/AndroidManifest-freehuawei.xml b/OsmAnd/AndroidManifest-huawei.xml
similarity index 100%
rename from OsmAnd/AndroidManifest-freehuawei.xml
rename to OsmAnd/AndroidManifest-huawei.xml
diff --git a/OsmAnd/AndroidManifest-freedev.xml b/OsmAnd/AndroidManifest-nightlyFree.xml
similarity index 93%
rename from OsmAnd/AndroidManifest-freedev.xml
rename to OsmAnd/AndroidManifest-nightlyFree.xml
index 09ecf8a880..6ec6d5a12e 100644
--- a/OsmAnd/AndroidManifest-freedev.xml
+++ b/OsmAnd/AndroidManifest-nightlyFree.xml
@@ -10,7 +10,7 @@
android:value="fb792288460976727"/>
[^<]*<", ">" + "" + "<")
- }
- return line;
-}
-
task updateNoTranslate(type: Copy) {
from('.') {
include 'no_translate.xml'
@@ -130,7 +127,7 @@ task validateTranslate {
line.contains("1\$ ") || line.contains("2\$ ") || line.contains("3\$ ") ||
line.contains("%1s") || line.contains(" 1\$s") ||
(line.contains("% \$") || line.contains("% 1") || line.contains("% 2") ||
- line.contains("% 3") || line.contains("% s"))) {
+ line.contains("% 3") || line.contains("% s"))) {
throw new GradleException("Incorrect translation " + it.getAbsolutePath() + " " + line);
}
}
@@ -151,7 +148,7 @@ task collectVoiceAssets(type: Sync) {
}
task cleanNoTranslate(type: Delete) {
- delete('res/values/no_translate.xml')
+ delete('res/values/no_translate.xml')
}
task collectFonts(type: Copy) {
@@ -180,7 +177,7 @@ task collectHelpContentsAssets(type: Copy) {
include "*.html"
}
from("../../help/website/blog_articles") {
- include "osmand-3-8-released.html"
+ include "osmand-3-9-released.html"
}
into "assets/feature_articles"
}
@@ -277,8 +274,6 @@ task collectExternalResources {
// Legacy core build
import org.apache.tools.ant.taskdefs.condition.Os
-import java.util.regex.Pattern
-
task buildOsmAndCore(type: Exec) {
Gradle gradle = getGradle()
String tskReqStr = gradle.getStartParameter().getTaskRequests().toString().toLowerCase()
@@ -297,7 +292,7 @@ task buildOsmAndCore(type: Exec) {
flavour = flavour.length() == 0 ? "X86_ONLY" : ""
}
}
-
+
description "Build Legacy OsmAndCore"
if (!Os.isFamily(Os.FAMILY_WINDOWS)) {
@@ -325,38 +320,11 @@ task cleanupDuplicatesInCore() {
}
}
-afterEvaluate {
- android.libraryVariants.all { variant ->
- variant.javaCompiler.dependsOn(collectExternalResources, buildOsmAndCore, cleanupDuplicatesInCore)
- }
-}
-
task appStart(type: Exec) {
- // linux
+ // linux
commandLine 'adb', 'shell', 'am', 'start', '-n', 'net.osmand.plus/net.osmand.plus.activities.MapActivity'
// windows
- // commandLine 'cmd', '/c', 'adb', 'shell', 'am', 'start', '-n', 'net.osmand.plus/net.osmand.plus.activities.MapActivity'
-}
-
-project.afterEvaluate {
- publishing {
- repositories {
- ivy {
- url = System.getenv("OSMAND_BINARIES_IVY_ROOT") ?: "./"
- version = "0.1-SNAPSHOT"
- }
- }
- publications {
- aar(IvyPublication) {
- artifact bundleLegacyFatDebugAar {
- classifier 'debug'
- }
- artifact bundleLegacyFatReleaseAar {
- classifier 'release'
- }
- }
- }
- }
+ // commandLine 'cmd', '/c', 'adb', 'shell', 'am', 'start', '-n', 'net.osmand.plus/net.osmand.plus.activities.MapActivity'
}
dependencies {
@@ -369,7 +337,7 @@ dependencies {
implementation 'com.google.android.material:material:1.2.1'
implementation 'androidx.browser:browser:1.0.0'
implementation 'androidx.preference:preference:1.1.0'
- implementation fileTree(include: ['gnu-trove-osmand.jar', 'icu4j-49_1_patched.jar'], dir: 'libs')
+ implementation fileTree(include: ['gnu-trove-osmand.jar', 'icu4j-49_1_patched.jar'], dir: 'libs')
implementation group: 'commons-logging', name: 'commons-logging', version: '1.2'
implementation 'commons-codec:commons-codec:1.11'
@@ -387,29 +355,21 @@ dependencies {
// JS core
implementation group: 'org.mozilla', name: 'rhino', version: '1.7.9'
// size restrictions
-// implementation 'com.ibm.icu:icu4j:50.1'
+// implementation 'com.ibm.icu:icu4j:50.1'
// implementation 'net.sf.trove4j:trove4j:3.0.3'
-// qtcoreImplementation fileTree(include: ['QtAndroid.jar', 'QtAndroidBearer.jar'], dir: 'libs')
-// qtcoredebugImplementation fileTree(include: ['QtAndroid.jar', 'QtAndroidBearer.jar'], dir: 'libs')
-
legacyImplementation "net.osmand:OsmAndCore_android:0.1-SNAPSHOT@jar"
-// qtcoredebugImplementation "net.osmand:OsmAndCore_androidNativeDebug:0.1-SNAPSHOT@aar"
-// qtcoredebugImplementation "net.osmand:OsmAndCore_android:0.1-SNAPSHOT@aar"
-// qtcoreImplementation "net.osmand:OsmAndCore_androidNativeRelease:0.1-SNAPSHOT@aar"
-// qtcoreImplementation "net.osmand:OsmAndCore_android:0.1-SNAPSHOT@aar"
- implementation ("com.getkeepsafe.taptargetview:taptargetview:1.12.0"){
+
+ implementation("com.getkeepsafe.taptargetview:taptargetview:1.12.0") {
exclude group: 'com.android.support'
}
implementation 'com.github.PhilJay:MPAndroidChart:v3.0.1'
- implementation ("com.github.HITGIF:TextFieldBoxes:1.4.5"){
+ implementation("com.github.HITGIF:TextFieldBoxes:1.4.5") {
exclude group: 'com.android.support'
}
- implementation('com.github.scribejava:scribejava-apis:7.1.1'){
+ implementation('com.github.scribejava:scribejava-apis:7.1.1') {
exclude group: "com.fasterxml.jackson.core"
}
implementation 'com.jaredrummler:colorpicker:1.1.0'
implementation 'org.bouncycastle:bcpkix-jdk15on:1.56'
-
- implementation 'com.google.android.gms:play-services-location:17.1.0'
-}
+}
\ No newline at end of file
diff --git a/OsmAnd/build-library.gradle b/OsmAnd/build-library.gradle
new file mode 100644
index 0000000000..b8cf0a21a5
--- /dev/null
+++ b/OsmAnd/build-library.gradle
@@ -0,0 +1,64 @@
+apply plugin: 'com.android.library'
+apply plugin: 'ivy-publish'
+apply from: 'build-common.gradle'
+
+android {
+
+ defaultConfig {
+ minSdkVersion 15
+ }
+
+ lintOptions {
+ tasks.lint.enabled = false
+ }
+
+ sourceSets {
+ main {
+ manifest.srcFile "AndroidManifest-library.xml"
+ java.srcDirs = ["src", "src-gms", "src-google"]
+ }
+ }
+
+ productFlavors {
+ // CoreVersion
+ // Build that doesn't include 3D OpenGL
+ legacy {
+ dimension "coreversion"
+ }
+ }
+}
+
+def replaceNoTranslate(line) {
+ return line;
+}
+
+afterEvaluate {
+ android.libraryVariants.all { variant ->
+ variant.javaCompiler.dependsOn(collectExternalResources, buildOsmAndCore, cleanupDuplicatesInCore)
+ }
+}
+
+project.afterEvaluate {
+ publishing {
+ repositories {
+ ivy {
+ url = System.getenv("OSMAND_BINARIES_IVY_ROOT") ?: "./"
+ version = "0.1-SNAPSHOT"
+ }
+ }
+ publications {
+ aar(IvyPublication) {
+ artifact bundleLegacyFatDebugAar {
+ classifier 'debug'
+ }
+ artifact bundleLegacyFatReleaseAar {
+ classifier 'release'
+ }
+ }
+ }
+ }
+}
+
+dependencies {
+ implementation 'com.google.android.gms:play-services-location:17.1.0'
+}
diff --git a/OsmAnd/build.gradle b/OsmAnd/build.gradle
index 9f909d50c8..ffaa03af01 100644
--- a/OsmAnd/build.gradle
+++ b/OsmAnd/build.gradle
@@ -1,12 +1,12 @@
apply plugin: 'com.android.application'
+apply from: 'build-common.gradle'
// Global Parameters accepted
// TARGET_APP_NAME - app name
// APK_NUMBER_VERSION - version number of apk
// APK_VERSION_SUFFIX - build number like #99999Z, appended (for dev builds) to Manifest's versionName as X.X.X#99999Z
-// Z means flavor: M=-master, D=-main-default, B=-Blackberry, Des=-design, MQA=-main-qt-arm, MQDA=-main-qt-default-arm, S=-sherpafy
+// Z means flavor: M=-master, D=-main-default, Des=-design, MQA=-main-qt-arm, MQDA=-main-qt-default-arm, S=-sherpafy
// APP_EDITION - date stamp of builds
-// APP_FEATURES - features +play_market +gps_status -parking_plugin -blackberry -free_version -amazon
// 1. To be done Filter fonts
//
@@ -17,15 +17,7 @@ apply plugin: 'com.android.application'
//
// Less important
-task printc {
- configurations.each { if(it.isCanBeResolved()) println it.name }
-}
-
android {
- compileSdkVersion 29
- buildToolsVersion "29.0.3"
- // compileNdkVersion "android-ndk-r17b"
-
signingConfigs {
development {
storeFile file("../keystores/debug.keystore")
@@ -44,21 +36,15 @@ android {
defaultConfig {
minSdkVersion System.getenv("MIN_SDK_VERSION") ? System.getenv("MIN_SDK_VERSION").toInteger() : 15
- targetSdkVersion 29
versionCode 390
versionCode System.getenv("APK_NUMBER_VERSION") ? System.getenv("APK_NUMBER_VERSION").toInteger() : versionCode
- multiDexEnabled true
versionName "3.9.0"
versionName System.getenv("APK_VERSION")? System.getenv("APK_VERSION").toString(): versionName
versionName System.getenv("APK_VERSION_SUFFIX")? versionName + System.getenv("APK_VERSION_SUFFIX").toString(): versionName
- // Stops the Gradle plugin’s automatic rasterization of vectors
- // vectorDrawables.generatedDensities = ['hdpi']
- vectorDrawables.useSupportLibrary = true
}
lintOptions {
lintConfig file("lint.xml")
- abortOnError false
warningsAsErrors false
}
@@ -79,55 +65,33 @@ android {
// exclude '/META-INF/NOTICE.md'
//}
- // This is from OsmAndCore_android.aar - for some reason it's not inherited
- aaptOptions {
- // Don't compress any embedded resources
- noCompress "qz"
- cruncherEnabled = false
- // Flag notifies aapt to keep the attribute IDs around
- // additionalParameters "--no-version-vectors"
- }
-
- dexOptions {
- javaMaxHeapSize "4g"
- }
-
sourceSets {
- main {
- manifest.srcFile "AndroidManifest.xml"
- jni.srcDirs = []
- jniLibs.srcDirs = ["libs"]
- aidl.srcDirs = ["src"]
- java.srcDirs = ["src"]
- resources.srcDirs = ["src"]
- renderscript.srcDirs = ["src"]
- res.srcDirs = ["res"]
- assets.srcDirs = ["assets"]
- }
debug {
manifest.srcFile "AndroidManifest-debug.xml"
}
- full {
+ androidFull {
java.srcDirs = ["src-nogms", "src-google"]
}
- fullGms {
+ gplayFull {
java.srcDirs = ["src-gms", "src-google"]
}
- free {
- java.srcDirs = ["src-nogms", "src-google"]
- manifest.srcFile "AndroidManifest-free.xml"
- }
- freeGms {
+ gplayFree {
java.srcDirs = ["src-gms", "src-google"]
- manifest.srcFile "AndroidManifest-free.xml"
+ manifest.srcFile "AndroidManifest-gplayFree.xml"
}
- freedev {
+ nightlyFree {
java.srcDirs = ["src-nogms", "src-google"]
- manifest.srcFile "AndroidManifest-freedev.xml"
+ manifest.srcFile "AndroidManifest-nightlyFree.xml"
}
- freehuawei {
+ amazonFree {
java.srcDirs = ["src-nogms", "src-google"]
- manifest.srcFile "AndroidManifest-freehuawei.xml"
+ }
+ amazonFull {
+ java.srcDirs = ["src-nogms", "src-google"]
+ }
+ huawei {
+ java.srcDirs = ["src-nogms", "src-google"]
+ manifest.srcFile "AndroidManifest-huawei.xml"
}
legacy {
@@ -137,75 +101,43 @@ android {
flavorDimensions "version", "coreversion", "abi"
productFlavors {
- // ABI
- armv7 {
- dimension "abi"
- ndk {
- abiFilter 'armeabi-v7a'
- }
- }
- arm64 {
- dimension "abi"
- ndk {
- abiFilter 'arm64-v8a'
- }
- }
- x86 {
- dimension "abi"
- ndk {
- abiFilters 'x86', 'x86_64'
- }
- }
- armonly {
- dimension "abi"
- ndk {
- abiFilters 'arm64-v8a', 'armeabi-v7a'
- }
- }
- fat {
- dimension "abi"
- ndk {
- abiFilters 'arm64-v8a', 'x86', 'x86_64', 'armeabi-v7a'
- }
- }
-
// Version
- freedev {
+ nightlyFree {
dimension "version"
applicationId "net.osmand.dev"
// resConfig "en"
}
- free {
- dimension "version"
- applicationId "net.osmand"
- }
- freeGms {
- dimension "version"
- applicationId "net.osmand"
- }
- full {
+ androidFull {
dimension "version"
applicationId "net.osmand.plus"
}
- fullGms {
+ gplayFree {
+ dimension "version"
+ applicationId "net.osmand"
+ }
+ gplayFull {
dimension "version"
applicationId "net.osmand.plus"
}
- freehuawei {
+ amazonFree {
+ dimension "version"
+ applicationId "net.osmand"
+ }
+ amazonFull {
+ dimension "version"
+ applicationId "net.osmand.plus"
+ }
+ huawei {
dimension "version"
applicationId "net.osmand.huawei"
}
- // CoreVersion
- // Build that doesn't include 3D OpenGL
- legacy {
- dimension "coreversion"
- }
+
// Build that includes 3D OpenGL release
- qtcore {
+ opengl {
dimension "coreversion"
}
// Build that includes 3D OpenGL debug
- qtcoredebug {
+ opengldebug {
dimension "coreversion"
}
}
@@ -234,226 +166,9 @@ def replaceNoTranslate(line) {
if (line.contains("\"app_edition\"") && System.getenv("APP_EDITION")) {
return line.replaceAll(">[^<]*<", ">" + System.getenv("APP_EDITION") + "<")
}
- if (line.contains("\"versionFeatures\"") && System.getenv("APP_FEATURES")) {
- return line.replaceAll(">[^<]*<", ">" + System.getenv("APP_FEATURES") + "<")
- }
return line;
}
-task updateNoTranslate(type: Copy) {
- from('.') {
- include 'no_translate.xml'
- filter {
- line -> replaceNoTranslate(line);
- }
- }
- into 'res/values/'
-}
-
-task validateTranslate {
- println "Validating translations"
-
- file("res").eachFileRecurse groovy.io.FileType.FILES, {
- if (it.name == "strings.xml" || it.name == "phrases.xml") {
- it.eachLine { line ->
- if (line.contains("\$ s") || line.contains("\$ d") || line.contains("\$ f") ||
- line.contains(" \$s") || line.contains(" \$d") || line.contains(" \$f") ||
- line.contains("1\$ ") || line.contains("2\$ ") || line.contains("3\$ ") ||
- line.contains("%1s") || line.contains(" 1\$s") ||
- (line.contains("% \$") || line.contains("% 1") || line.contains("% 2") ||
- line.contains("% 3") || line.contains("% s"))) {
- throw new GradleException("Incorrect translation " + it.getAbsolutePath() + " " + line);
- }
- }
- }
- }
-}
-
-task downloadWorldMiniBasemap {
- doLast {
- ant.get(src: 'http://builder.osmand.net/basemap/World_basemap_mini_2.obf', dest: 'assets/World_basemap_mini.obf', skipexisting: 'true')
- }
-}
-
-task collectVoiceAssets(type: Sync) {
- from "../../resources/voice"
- into "assets/voice"
- include "**/*.js"
-}
-
-task cleanNoTranslate(type: Delete) {
- delete('res/values/no_translate.xml')
-}
-
-task collectFonts(type: Copy) {
- from "../../resources/fonts"
- from "../../resources/rendering_styles/fonts"
-// from "../../resources/rendering_styles/fonts/OpenSans"
- into "assets/fonts"
- include "*.ttf"
-}
-
-task collectHelpContentsStyle(type: Copy) {
- from("../../help/website/help/") {
- include "style.css"
- }
- into "assets"
-}
-
-task collectHelpContentsAssets(type: Copy) {
- from("../../help/website/help") {
- include "about.html"
- include "changes.html"
- include "faq.html"
- include "map-legend.html"
- }
- from("../../help/website/feature_articles") {
- include "*.html"
- }
- from("../../help/website/blog_articles") {
- include "osmand-3-9-released.html"
- }
- into "assets/feature_articles"
-}
-
-task copyPoiCategories(type: Copy) {
- from("../../resources/poi") {
- include "poi_categories.json"
- }
- into "assets"
-}
-
-task copyMapShaderIcons(type: Sync) {
- // from "../../resources/rendering_styles/style-icons/map-shaders-png"
- // into "res/"
- from "../../resources/rendering_styles/style-icons/map-shaders-vector"
- into "res/drawable"
- include "**/*.png", "**/*.xml"
- preserve {
- include '**/*'
- exclude "**/h_*"
- }
-}
-
-task copyMapPOIIcons(type: Sync) {
- from "../../resources/rendering_styles/style-icons/map-icons-vector"
- into "res/drawable/"
- // from "../../resources/rendering_styles/style-icons/map-icons-png"
- // into "res/"
-
- include "**/*.png", "**/*.xml"
- preserve {
- include '**/*'
- exclude "**/mm_*"
- }
-}
-
-task copyLargePOIIcons(type: Sync) {
- from "../../resources/rendering_styles/style-icons/poi-icons-vector"
- into "res/drawable/"
- include "**/*.png", "**/*.xml"
- preserve {
- include '**/*'
- exclude "**/mx_*"
- }
-}
-
-task copyWidgetIconsXhdpi(type: Sync) {
- from "res/drawable-xxhdpi/"
- into "res/drawable-large-xhdpi/"
- include "**/widget_*.png", "**/widget_*.xml", "**/map_*.xml", "**/map_*.png"
- preserve {
- include '*'
- exclude "**/widget_*.png", "**/widget_*.xml", "**/map_*.xml", "**/map_*.png"
- }
-}
-
-task copyWidgetIconsHdpi(type: Sync) {
- from "res/drawable-xhdpi/"
- into "res/drawable-large-hdpi/"
- include "**/widget_*.png", "**/widget_*.xml", "**/map_*.xml", "**/map_*.png"
- preserve {
- include '*'
- exclude "**/widget_*.png", "**/widget_*.xml", "**/map_*.xml", "**/map_*.png"
- }
-}
-
-task copyWidgetIcons(type: Sync) {
- from "res/drawable-hdpi/"
- into "res/drawable-large/"
- include "**/widget_*.png", "**/widget_*.xml", "**/map_*.xml", "**/map_*.png"
- preserve {
- include '*'
- exclude "**/widget_*.png", "**/widget_*.xml", "**/map_*.xml", "**/map_*.png"
- }
-}
-
-task collectExternalResources {
- dependsOn collectVoiceAssets,
- collectFonts,
- collectHelpContentsAssets,
- collectHelpContentsStyle,
- copyMapShaderIcons,
- copyMapPOIIcons,
- copyLargePOIIcons,
- updateNoTranslate,
- validateTranslate,
- copyWidgetIcons,
- copyWidgetIconsHdpi,
- copyWidgetIconsXhdpi,
- copyPoiCategories,
- downloadWorldMiniBasemap
-}
-
-// Legacy core build
-import org.apache.tools.ant.taskdefs.condition.Os
-
-task buildOsmAndCore(type: Exec) {
- Gradle gradle = getGradle()
- String tskReqStr = gradle.getStartParameter().getTaskRequests().toString().toLowerCase()
- String flavour = "";
- if(!tskReqStr.contains("fat")) {
- if(tskReqStr.contains("arm64")) {
- flavour = flavour.length() == 0 ? "ARM64_ONLY" : ""
- }
- if(tskReqStr.contains("armv7")) {
- flavour = flavour.length() == 0 ? "ARMV7_ONLY" : ""
- }
- if(tskReqStr.contains("armonly")) {
- flavour = flavour.length() == 0 ? "ARM_ONLY" : ""
- }
- if(tskReqStr.contains("x86")) {
- flavour = flavour.length() == 0 ? "X86_ONLY" : ""
- }
- }
-
- description "Build Legacy OsmAndCore"
-
- if (!Os.isFamily(Os.FAMILY_WINDOWS)) {
- if(flavour.length() > 0) {
- environment "$flavour", "1"
- }
- commandLine "bash", file("./old-ndk-build.sh").getAbsolutePath()
- } else {
- commandLine "cmd", "/c", "echo", "Not supported"
- }
-}
-
-task cleanupDuplicatesInCore() {
- dependsOn buildOsmAndCore
- // doesn't work for legacy debug builds
- doLast {
- file("libc++/armeabi-v7a").mkdirs()
- file("libs/armeabi-v7a/libc++_shared.so").renameTo(file("libc++/armeabi-v7a/libc++_shared.so"))
- file("libc++/arm64-v8a").mkdirs()
- file("libs/arm64-v8a/libc++_shared.so").renameTo(file("libc++/arm64-v8a/libc++_shared.so"))
- file("libc++/x86").mkdirs()
- file("libs/x86/libc++_shared.so").renameTo(file("libc++/x86/libc++_shared.so"))
- file("libc++/x86_64").mkdirs()
- file("libs/x86_64/libc++_shared.so").renameTo(file("libc++/x86_64/libc++_shared.so"))
- }
-}
-
afterEvaluate {
android.applicationVariants.all { variant ->
variant.javaCompiler.dependsOn(collectExternalResources, buildOsmAndCore, cleanupDuplicatesInCore)
@@ -465,52 +180,14 @@ afterEvaluate {
}
}
-task appStart(type: Exec) {
- // linux
- commandLine 'adb', 'shell', 'am', 'start', '-n', 'net.osmand.plus/net.osmand.plus.activities.MapActivity'
- // windows
- // commandLine 'cmd', '/c', 'adb', 'shell', 'am', 'start', '-n', 'net.osmand.plus/net.osmand.plus.activities.MapActivity'
-}
-
dependencies {
- implementation project(path: ':OsmAnd-java', configuration: 'android')
- implementation project(':OsmAnd-api')
- implementation 'androidx.multidex:multidex:2.0.1'
- implementation 'androidx.gridlayout:gridlayout:1.0.0'
- implementation 'androidx.cardview:cardview:1.0.0'
- implementation 'androidx.appcompat:appcompat:1.2.0'
- implementation 'com.google.android.material:material:1.2.1'
- implementation 'androidx.browser:browser:1.0.0'
- implementation 'androidx.preference:preference:1.1.0'
- implementation fileTree(include: ['gnu-trove-osmand.jar', 'icu4j-49_1_patched.jar'], dir: 'libs')
+ openglImplementation fileTree(include: ['QtAndroid.jar', 'QtAndroidBearer.jar'], dir: 'libs')
+ opengldebugImplementation fileTree(include: ['QtAndroid.jar', 'QtAndroidBearer.jar'], dir: 'libs')
- implementation group: 'commons-logging', name: 'commons-logging', version: '1.2'
- implementation 'commons-codec:commons-codec:1.11'
- implementation 'it.unibo.alice.tuprolog:tuprolog:3.2.1'
- implementation 'org.apache.commons:commons-compress:1.17'
- implementation 'com.moparisthebest:junidecode:0.1.1'
- implementation 'org.immutables:gson:2.5.0'
- implementation 'com.vividsolutions:jts-core:1.14.0'
- implementation 'com.google.openlocationcode:openlocationcode:1.0.4'
- implementation 'com.android.billingclient:billing:2.0.3'
- // turn off for now
- //implementation 'com.atilika.kuromoji:kuromoji-ipadic:0.9.0'
- implementation 'com.squareup.picasso:picasso:2.71828'
- implementation 'me.zhanghai.android.materialprogressbar:library:1.4.2'
- // JS core
- implementation group: 'org.mozilla', name: 'rhino', version: '1.7.9'
-// size restrictions
-// implementation 'com.ibm.icu:icu4j:50.1'
-// implementation 'net.sf.trove4j:trove4j:3.0.3'
-
- qtcoreImplementation fileTree(include: ['QtAndroid.jar', 'QtAndroidBearer.jar'], dir: 'libs')
- qtcoredebugImplementation fileTree(include: ['QtAndroid.jar', 'QtAndroidBearer.jar'], dir: 'libs')
-
- legacyImplementation "net.osmand:OsmAndCore_android:0.1-SNAPSHOT@jar"
- qtcoredebugImplementation "net.osmand:OsmAndCore_androidNativeDebug:0.1-SNAPSHOT@aar"
- qtcoredebugImplementation "net.osmand:OsmAndCore_android:0.1-SNAPSHOT@aar"
- qtcoreImplementation "net.osmand:OsmAndCore_androidNativeRelease:0.1-SNAPSHOT@aar"
- qtcoreImplementation "net.osmand:OsmAndCore_android:0.1-SNAPSHOT@aar"
+ opengldebugImplementation "net.osmand:OsmAndCore_androidNativeDebug:0.1-SNAPSHOT@aar"
+ opengldebugImplementation "net.osmand:OsmAndCore_android:0.1-SNAPSHOT@aar"
+ openglImplementation "net.osmand:OsmAndCore_androidNativeRelease:0.1-SNAPSHOT@aar"
+ openglImplementation "net.osmand:OsmAndCore_android:0.1-SNAPSHOT@aar"
implementation ("com.getkeepsafe.taptargetview:taptargetview:1.12.0"){
exclude group: 'com.android.support'
}
@@ -524,8 +201,8 @@ dependencies {
implementation 'com.jaredrummler:colorpicker:1.1.0'
implementation "org.bouncycastle:bcpkix-jdk15on:1.56"
- freehuaweiImplementation 'com.huawei.hms:iap:5.0.2.300'
+ huaweiImplementation 'com.huawei.hms:iap:5.0.2.300'
- freeGmsImplementation 'com.google.android.gms:play-services-location:17.1.0'
- fullGmsImplementation 'com.google.android.gms:play-services-location:17.1.0'
+ gplayFreeImplementation 'com.google.android.gms:play-services-location:17.1.0'
+ gplayFullImplementation 'com.google.android.gms:play-services-location:17.1.0'
}
diff --git a/OsmAnd/no_translate.xml b/OsmAnd/no_translate.xml
index 20d7a424ca..d8e4108d4a 100644
--- a/OsmAnd/no_translate.xml
+++ b/OsmAnd/no_translate.xml
@@ -12,7 +12,6 @@
UA-28342846-2
10
true
- +play_market -amazon -blackberry
© OpenStreetMap
support@osmand.net
diff --git a/OsmAnd/res/drawable/ic_action_arrow_down_16.xml b/OsmAnd/res/drawable/ic_action_arrow_down_16.xml
new file mode 100644
index 0000000000..ce235325ff
--- /dev/null
+++ b/OsmAnd/res/drawable/ic_action_arrow_down_16.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/OsmAnd/res/drawable/ic_action_arrow_up_16.xml b/OsmAnd/res/drawable/ic_action_arrow_up_16.xml
new file mode 100644
index 0000000000..b0e16b0095
--- /dev/null
+++ b/OsmAnd/res/drawable/ic_action_arrow_up_16.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/OsmAnd/res/values-ar/strings.xml b/OsmAnd/res/values-ar/strings.xml
index 4a9fde833f..9bd65acc41 100644
--- a/OsmAnd/res/values-ar/strings.xml
+++ b/OsmAnd/res/values-ar/strings.xml
@@ -4030,4 +4030,9 @@
تحديد مجلد
تحديد مجلد أو إضافة واحد جديد
فارغ
+ التحليل حسب الفواصل الزمنية (الفاصل الزمني)
+ رفع إلى خريطة الشارع المفتوح
+ تحرير المسار
+ تسمية المسار
+ تغيير المجلد
\ No newline at end of file
diff --git a/OsmAnd/res/values-cs/strings.xml b/OsmAnd/res/values-cs/strings.xml
index 6d6b906b06..6f001d5965 100644
--- a/OsmAnd/res/values-cs/strings.xml
+++ b/OsmAnd/res/values-cs/strings.xml
@@ -3967,4 +3967,9 @@
Zvolte složku
Zvolte složku nebo vytvořte novou
Prázdné
+ Analyzovat podle intervalů (rozdělit interval)
+ Nahrát do OpenStreetMap
+ Editovat stopu
+ Přejmenovat stopu
+ Změnit složku
\ No newline at end of file
diff --git a/OsmAnd/res/values-de/strings.xml b/OsmAnd/res/values-de/strings.xml
index b216a47c7c..494ad991ff 100644
--- a/OsmAnd/res/values-de/strings.xml
+++ b/OsmAnd/res/values-de/strings.xml
@@ -3972,4 +3972,9 @@
Ordner auswählen
Ordner auswählen oder neuen hinzufügen
Leer
+ Nach Intervallen auswerten (geteiltes Intervall)
+ Hochladen zu OpenStreetMap
+ Track editieren
+ Track umbenennen
+ Ordner ändern
\ No newline at end of file
diff --git a/OsmAnd/res/values-eo/strings.xml b/OsmAnd/res/values-eo/strings.xml
index 9671d14e5f..db0a01c2ab 100644
--- a/OsmAnd/res/values-eo/strings.xml
+++ b/OsmAnd/res/values-eo/strings.xml
@@ -233,7 +233,7 @@
Registrado de kurso
Navigi
Labori fone
- Vek-intervalo de GPS
+ Vek-ofteco de GPS
Informoj pri ŝatataj
Ĉesigi simuladon de pozicio.
Simuli vian pozicion uzante komputitan kurson aŭ registritan GPX-spuron.
@@ -587,17 +587,17 @@
Ĉu ĉesigi GPS-an fonan reĝimon?
Ĉesigi
Demandi ĉiam
- Ĝenerala registrada intervalo
- GPS-a vekintervalo
+ Ĝenerala intertempo de registrado
+ Vek-ofteco de GPS
Aktivigi GPS-an fonan reĝimon
Registri spuron laŭpete
Ĝeneralan registradon de pozicio al GPX‑dosiero oni povas (mal)aktivigi per la GPX‑registrada fenestraĵo sur la map‑ekrano.
Konservi aktualan spuron kiel GPX-dosieron.
Konservi aktualan spuron
GPX-spuro estas aŭtomate konservata al dosierujo de spuroj dum navigado.
- Registrada intervalo
- Registrada intervalo dum navigado
- Elekti intervalon por registri spurojn dum navigado
+ Intertempo de registrado
+ Registrada intertempo dum navigado
+ Elekti oftecon de registri spuron dum navigado
Elekti gvidadan voĉon por navigado.
Gvidada voĉo
Aktivigi HTTP-retperanton
@@ -654,7 +654,7 @@
Trovis nenion. Se vi ne povas trovi vian regionon, vi povas fari ĝin mem (rigardu https://osmand.net).
Unue elektu GPX‑dosieron per frapetadi.
Elektu kurson
- Divid-intervalo
+ Intertempo de divido
Ordigi laŭ distanco
Ordigi laŭ nomo
Turisma map-vido
@@ -728,8 +728,8 @@
Mezuma rapido: %1$s
Maksimuma rapido: %1$s
Mezuma altitudo: %1$s
- Altituda intervalo: %1$s
- Tempa intervalo: %1$s
+ Variejo de altitudo: %1$s
+ Variejo de tempo: %1$s
Desupro/alsupro: %1$s
Tempo movante: %1$s
Segmento
@@ -1121,7 +1121,7 @@
Ekrano ŝlosita
Kurs-mapeto
Rapid-kontroliloj
- Agordi vekintervalon:
+ Agordi vek‑oftecon:
Trafikaj avertoj
Sen pagendaj vojoj
Ĉu pluigi sekvi la antaŭan nefinitan kurson? (%1$s sekundoj)
@@ -1291,8 +1291,8 @@
Neunutempa (nesinkrona) redakto de OSM:
OSM-interesejoj/rimarkoj konservitaj en aparato
Vidi kaj administri loke konservitajn OSM‑interesejojn/rimarkojn.
- Intervalo de enreta kurs-registrado
- Difini intervalon de enreta kurs-registrado.
+ Ofteco de enreta kursregistrado
+ Difini oftecon de enreta registrado de kurso.
Adreso de enreta kurs-registrado
Difini la retadreson uzante la jenajn argumentojn:
\n lat={0} (latitudo),
@@ -2172,7 +2172,7 @@
Kursa altitudo
Malsupreniro
Supreniro
- Altituda intervalo
+ Variejo de altitudo
Mezuma altitudo
Tempo
Tuta distanco
@@ -3810,7 +3810,7 @@
\n
\n
Registri
- Elektu la intervalon de registrado por la ĝenerala registrado de spuro (aktivigebla per la fenestraĵo “registri spuron” sur la mapo).
+ Elektu la intertempon de registrado por la ĝenerala registrado de spuro (aktivigebla per la fenestraĵo “registri spuron” sur la mapo).
Simpligita spuro
Nur la linio de kurso estos konservita, la navigadpunktoj estos forigitaj.
Dosiernomo
@@ -3967,4 +3967,9 @@
Elekti dosierujon
Elekti dosierujon aŭ krei novan
Malplena
+ Analizi laŭ intertempoj (dividoj)
+ Alŝuti al OpenStreetMap
+ Redakti spuron
+ Renomi spuron
+ Ŝanĝi dosierujon
\ No newline at end of file
diff --git a/OsmAnd/res/values-es-rAR/strings.xml b/OsmAnd/res/values-es-rAR/strings.xml
index 83700ce7cd..799a1f7e8a 100644
--- a/OsmAnd/res/values-es-rAR/strings.xml
+++ b/OsmAnd/res/values-es-rAR/strings.xml
@@ -3966,4 +3966,13 @@
Copiar dirección
Motor de navegación en línea
Motores de navegación en línea
+ Carpetas
+ Elegir carpeta
+ Elegir carpeta o añadir una nueva
+ Vacío
+ Analizar por intervalos (intervalo de división)
+ Subir a OpenStreetMap
+ Editar traza
+ Renombrar traza
+ Cambiar carpeta
\ No newline at end of file
diff --git a/OsmAnd/res/values-es-rUS/strings.xml b/OsmAnd/res/values-es-rUS/strings.xml
index 94587e80c3..5271c21759 100644
--- a/OsmAnd/res/values-es-rUS/strings.xml
+++ b/OsmAnd/res/values-es-rUS/strings.xml
@@ -3948,4 +3948,31 @@
Perfil de OsmAnd
Elige el perfil que será usado al iniciar la aplicación.
Tiempo de indicaciones por voz
+ Elegir carpeta
+ Carpetas
+ Cambiar carpeta
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/OsmAnd/res/values-it/strings.xml b/OsmAnd/res/values-it/strings.xml
index 0d158455e5..337d1ac338 100644
--- a/OsmAnd/res/values-it/strings.xml
+++ b/OsmAnd/res/values-it/strings.xml
@@ -1097,7 +1097,7 @@
Indonesiano
Italiano
Giapponese
- Koreano
+ Coreano
Lettone
Lituano
Marathi
diff --git a/OsmAnd/res/values-ka/strings.xml b/OsmAnd/res/values-ka/strings.xml
index 330d43d2c4..9db9407028 100644
--- a/OsmAnd/res/values-ka/strings.xml
+++ b/OsmAnd/res/values-ka/strings.xml
@@ -2757,4 +2757,14 @@
ქვიშა
ხრეში
ბალახიანი
+ დამატებულია
+ მორგებული პროფილი
+ ჩანაწერის გაყოფა
+ უჯრედული ქსელები
+ OSM ჩასწორებები
+ OsmAnd-ის გამოყენება
+ ღრეჩოების შეერთება
+ შექმნა
+ მორგებული ძებნა
+ ცარიელი
\ No newline at end of file
diff --git a/OsmAnd/res/values-nb/strings.xml b/OsmAnd/res/values-nb/strings.xml
index b2a3fc41cb..97e76db9b5 100644
--- a/OsmAnd/res/values-nb/strings.xml
+++ b/OsmAnd/res/values-nb/strings.xml
@@ -3864,4 +3864,21 @@
Tillat bekker og avløp
Tillat periodiske vannveier
Tillat periodiske vannveier
+ Kjøretøy
+ API-nøkkel
+ Tjenernettadresse
+ Test rutekalkulering
+ Kjøring
+ Til fots
+ Sykkel
+ Bil
+ Kopier adresse
+ Mapper
+ Velg mappe
+ Velg mappe eller legg til en ny
+ Tom
+ Rediger spor
+ Last opp til OpenStreetMap
+ Gi spor nytt navn
+ Endre mappe
\ No newline at end of file
diff --git a/OsmAnd/res/values-pt-rBR/strings.xml b/OsmAnd/res/values-pt-rBR/strings.xml
index 52d578c035..0b5a8b33f2 100644
--- a/OsmAnd/res/values-pt-rBR/strings.xml
+++ b/OsmAnd/res/values-pt-rBR/strings.xml
@@ -3962,4 +3962,9 @@
Selecione a pasta
Selecione a pasta ou adicione uma nova
Vazio
+ Analisar por intervalos (intervalo de divisão)
+ Carregar para OpenStreetMap
+ Editar trilha
+ Renomear trilha
+ Mudar pasta
\ No newline at end of file
diff --git a/OsmAnd/res/values-pt/strings.xml b/OsmAnd/res/values-pt/strings.xml
index fdb5eb12ec..b360bcaad9 100644
--- a/OsmAnd/res/values-pt/strings.xml
+++ b/OsmAnd/res/values-pt/strings.xml
@@ -3934,4 +3934,30 @@
\n• Cores personalizadas para favoritos e pontos de rotas de trilhos
\n
\n
+ Editar o mecanismo de roteamento online
+ Subtipo
+ Veículo
+ Chave de API
+ URL do servidor
+ Digite o param
+ Mantenha-o vazio se não
+ O URL com todos os parâmetros parecerá-se assim:
+ Cálculo da rota de teste
+ Condução
+ Pé
+ Bicicleta
+ Carro
+ Erro, verifique novamente os parâmetros
+ Copiar endereço
+ Mecanismo de roteamento online
+ Mecanismos de roteamento online
+ Pastas
+ Selecionar pasta
+ Selecione a pasta ou adicione uma
+ Vazio
+ Analisar por intervalos (intervalo dividido)
+ Enviar ao OpenStreetMap
+ Editar trilho
+ Renomear trilho
+ Mudar pasta
\ No newline at end of file
diff --git a/OsmAnd/res/values-ru/strings.xml b/OsmAnd/res/values-ru/strings.xml
index f34e42cce4..40d524cfb3 100644
--- a/OsmAnd/res/values-ru/strings.xml
+++ b/OsmAnd/res/values-ru/strings.xml
@@ -1200,7 +1200,7 @@
Сделать фото
Синхронизация треков и медиазаметок с вашим аккаунтом Dropbox.
Плагин Dropbox
- Плагин обеспечивает наложение контурных линии и затемняющего слоя (рельефа), которые будут отображаться поверх стандартных карт OsmAnd. Эту функцию оценят спортсмены, туристы, путешественники и все, для кого рельеф местности имеет значение.
+ Плагин обеспечивает наложение контурных линий и затемняющего слоя (рельефа), которые будут отображаться поверх стандартных карт OsmAnd. Эту функцию оценят спортсмены, туристы, путешественники и все, для кого рельеф местности имеет значение.
\n
\nГлобальные данные (между 70° на севере и 70° на юге) основываются на измерениях SRTM (Shuttle Radar Topography Mission) и ASTER (Advanced Spaceborne Thermal Emission and Reflection Radiometer), инструментом визуализации Terra, флагманского спутника Земли системы наблюдения NASA. ASTER является результатом совместных усилий NASA, министерства экономики Японии, торговли и промышленности (METI), космических систем Японии (J-spacesystems).
Фото %1$s %2$s
@@ -2547,12 +2547,12 @@
\n OsmAnd + — платная версия программы. Приобретая её, вы поддержите проект, финансируете разработку новых возможностей и получите последние обновления.
\n
\n Некоторые из главных возможностей:
- Навигация
-\n• Работает через интернет (быстрее) или автономно (без платы за роуминг за границей)
-\n• Пошаговые голосовые подсказки (записанные или синтезированные голоса)
-\n• Полосы движения, отображение названия улицы и приблизительное время прибытия
-\n• Поддержка промежуточных точек на вашем маршруте
-\n• Автоматическое перестройка маршрута при отклонении от существующего
+ Навигация
+\n• Работает через интернет (быстрее) или автономно (без платы за роуминг за границей)
+\n• Пошаговые голосовые подсказки (записанные или синтезированные голоса)
+\n• Полосы движения, отображение названия улицы и приблизительное время прибытия
+\n• Поддержка промежуточных точек на вашем маршруте
+\n• Автоматическая перестройка маршрута при отклонении от существующего
\n• Поиск мест по адресу, типу (например, ресторан, гостиница, заправка, музей) или географическим координатам
\n
Просмотр карты
@@ -2593,12 +2593,12 @@
\n• Возможность изменения масштаба в зависимости от скорости
\n• Возможность делиться своим местоположением, чтобы друзья смогли найти вас
\n
- Возможности для пешеходов и велосипедистов
-\n• Просмотр пешеходных, туристических и велосипедных дорожек, прекрасно подходит для активного отдыха
-\n• Специальный режимы маршрутизации и отображения для велосипедистов и пешеходов
-\n• Возможность отображения остановок общественного транспорта (автобус, трамвай, поезд), включая названия маршрутов
-\n• Возможность записи путешествие в локальный файл GPX или интернет-сервис
-\n• Возможность отображения скорости и высоты
+ Возможности для пешеходов и велосипедистов
+\n• Просмотр пешеходных, туристических и велосипедных дорожек, прекрасно подходит для активного отдыха
+\n• Специальные режимы маршрутизации и отображения для велосипедистов и пешеходов
+\n• Возможность отображения остановок общественного транспорта (автобус, трамвай, поезд), включая названия маршрутов
+\n• Возможность записи путешествие в локальный файл GPX или интернет-сервис
+\n• Возможность отображения скорости и высоты
\n• Отображение контурных линий и затенения высот (через дополнительный плагин)
Непосредственный вклад в OSM
\n • Сообщения об ошибках в данных
diff --git a/OsmAnd/res/values-sk/strings.xml b/OsmAnd/res/values-sk/strings.xml
index 81a9d73353..6d3fbf6d12 100644
--- a/OsmAnd/res/values-sk/strings.xml
+++ b/OsmAnd/res/values-sk/strings.xml
@@ -3962,4 +3962,9 @@
Zvoľte priečinok
Zvoľte priečinok alebo pridajte nový
Prázdne
+ Analyzovať podľa intervalov (rozdeliť interval)
+ Nahrať do OpenStreetMap
+ Upraviť stopu
+ Premenovať stopu
+ Zmeniť priečinok
\ No newline at end of file
diff --git a/OsmAnd/res/values-zh-rTW/strings.xml b/OsmAnd/res/values-zh-rTW/strings.xml
index 0f19668c01..dbb7f64fa0 100644
--- a/OsmAnd/res/values-zh-rTW/strings.xml
+++ b/OsmAnd/res/values-zh-rTW/strings.xml
@@ -3960,4 +3960,9 @@
選取資料夾
選取資料夾或新增
空
+ 按時間間隔分析(分割時間間隔)
+ 上傳到 OpenStreetMap
+ 編輯軌跡
+ 重新命名軌跡
+ 變更資料夾
\ No newline at end of file
diff --git a/OsmAnd/res/values/styles.xml b/OsmAnd/res/values/styles.xml
index 5945485c19..a7cbb98fda 100644
--- a/OsmAnd/res/values/styles.xml
+++ b/OsmAnd/res/values/styles.xml
@@ -54,7 +54,7 @@
- @drawable/first_splash_screen_free
-
diff --git a/OsmAnd/src-gms/net/osmand/plus/LocationServiceHelperImpl.java b/OsmAnd/src-gms/net/osmand/plus/LocationServiceHelperImpl.java
index e8182955ec..41c74012a3 100644
--- a/OsmAnd/src-gms/net/osmand/plus/LocationServiceHelperImpl.java
+++ b/OsmAnd/src-gms/net/osmand/plus/LocationServiceHelperImpl.java
@@ -131,15 +131,17 @@ public class LocationServiceHelperImpl extends LocationServiceHelper {
}
@Nullable
- public net.osmand.Location getFirstTimeRunDefaultLocation() {
- final net.osmand.Location[] location = {null};
- /*
+ public net.osmand.Location getFirstTimeRunDefaultLocation(@Nullable final LocationCallback locationCallback) {
+ if (locationCallback == null) {
+ return null;
+ }
try {
Task lastLocation = fusedLocationProviderClient.getLastLocation();
lastLocation.addOnSuccessListener(new OnSuccessListener() {
@Override
public void onSuccess(Location loc) {
- location[0] = convertLocation(loc);
+ locationCallback.onLocationResult(loc != null
+ ? Collections.singletonList(convertLocation(loc)) : Collections.emptyList() );
}
});
} catch (SecurityException e) {
@@ -147,8 +149,7 @@ public class LocationServiceHelperImpl extends LocationServiceHelper {
} catch (IllegalArgumentException e) {
LOG.debug("GPS location provider not available");
}
- */
- return location[0];
+ return null;
}
@Nullable
diff --git a/OsmAnd/src-nogms/net/osmand/plus/LocationServiceHelperImpl.java b/OsmAnd/src-nogms/net/osmand/plus/LocationServiceHelperImpl.java
index 5f49607954..9a2caa6a5f 100644
--- a/OsmAnd/src-nogms/net/osmand/plus/LocationServiceHelperImpl.java
+++ b/OsmAnd/src-nogms/net/osmand/plus/LocationServiceHelperImpl.java
@@ -125,7 +125,7 @@ public class LocationServiceHelperImpl extends LocationServiceHelper implements
}
@Nullable
- public net.osmand.Location getFirstTimeRunDefaultLocation() {
+ public net.osmand.Location getFirstTimeRunDefaultLocation(@Nullable LocationCallback locationCallback) {
LocationManager locationManager = (LocationManager) app.getSystemService(Context.LOCATION_SERVICE);
List providers = new ArrayList<>(locationManager.getProviders(true));
// note, passive provider is from API_LEVEL 8 but it is a constant, we can check for it.
diff --git a/OsmAnd/src/net/osmand/plus/OsmAndLocationProvider.java b/OsmAnd/src/net/osmand/plus/OsmAndLocationProvider.java
index ee875fbb17..15936ded34 100644
--- a/OsmAnd/src/net/osmand/plus/OsmAndLocationProvider.java
+++ b/OsmAnd/src/net/osmand/plus/OsmAndLocationProvider.java
@@ -389,8 +389,14 @@ public class OsmAndLocationProvider implements SensorEventListener {
}
@Nullable
- public net.osmand.Location getFirstTimeRunDefaultLocation() {
- return isLocationPermissionAvailable(app) ? locationServiceHelper.getFirstTimeRunDefaultLocation() : null;
+ public net.osmand.Location getFirstTimeRunDefaultLocation(@Nullable final OsmAndLocationListener locationListener) {
+ return isLocationPermissionAvailable(app)
+ ? locationServiceHelper.getFirstTimeRunDefaultLocation(locationListener != null ? new LocationServiceHelper.LocationCallback() {
+ @Override
+ public void onLocationResult(@NonNull List locations) {
+ locationListener.updateLocation(locations.isEmpty() ? null : locations.get(0));
+ }
+ } : null) : null;
}
public synchronized void registerOrUnregisterCompassListener(boolean register) {
diff --git a/OsmAnd/src/net/osmand/plus/OsmandPlugin.java b/OsmAnd/src/net/osmand/plus/OsmandPlugin.java
index af1570ecaa..e04f055b35 100644
--- a/OsmAnd/src/net/osmand/plus/OsmandPlugin.java
+++ b/OsmAnd/src/net/osmand/plus/OsmandPlugin.java
@@ -388,7 +388,7 @@ public abstract class OsmandPlugin {
}
private static boolean updateMarketPlugin(@NonNull OsmandApplication app, @NonNull Set enabledPlugins, @NonNull OsmandPlugin plugin) {
- boolean marketEnabled = Version.isMarketEnabled(app);
+ boolean marketEnabled = Version.isMarketEnabled();
boolean pckg = plugin.pluginAvailable(app);
boolean paid = plugin.isPaid();
if ((Version.isDeveloperVersion(app) || !Version.isProductionVersion(app)) && !paid) {
diff --git a/OsmAnd/src/net/osmand/plus/Version.java b/OsmAnd/src/net/osmand/plus/Version.java
index 48dd9b1feb..b1962564e3 100644
--- a/OsmAnd/src/net/osmand/plus/Version.java
+++ b/OsmAnd/src/net/osmand/plus/Version.java
@@ -1,9 +1,10 @@
package net.osmand.plus;
-
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
+import androidx.annotation.NonNull;
+
import net.osmand.plus.inapp.InAppPurchaseHelper;
import java.io.File;
@@ -16,26 +17,29 @@ public class Version {
private final String appName;
private final static String FREE_VERSION_NAME = "net.osmand";
private final static String FREE_DEV_VERSION_NAME = "net.osmand.dev";
- private final static String FREE_CUSTOM_VERSION_NAME = "net.osmand.freecustom";
private final static String UTM_REF = "&referrer=utm_source%3Dosmand";
-
- public static boolean isGpsStatusEnabled(OsmandApplication ctx) {
- return isGooglePlayEnabled(ctx) && !isBlackberry(ctx);
- }
-
- public static boolean isBlackberry(OsmandApplication ctx) {
- return ctx.getString(R.string.versionFeatures).contains("+blackberry");
- }
-
- public static boolean isHuawei(OsmandApplication ctx) {
- return ctx.getPackageName().endsWith(".huawei");
- }
-
- public static boolean isMarketEnabled(OsmandApplication ctx) {
- return isGooglePlayEnabled(ctx) || isAmazonEnabled(ctx);
+
+ public static boolean isHuawei() {
+ return "huawei".contains(getBuildFlavor());
}
- public static boolean isGooglePlayInstalled(OsmandApplication ctx) {
+ private static boolean isAmazon() {
+ return "amazon".contains(getBuildFlavor());
+ }
+
+ private static String getBuildFlavor() {
+ return net.osmand.plus.BuildConfig.FLAVOR;
+ }
+
+ public static boolean isGooglePlayEnabled() {
+ return !isHuawei() && !isAmazon();
+ }
+
+ public static boolean isMarketEnabled() {
+ return isGooglePlayEnabled() || isAmazon();
+ }
+
+ public static boolean isGooglePlayInstalled(@NonNull OsmandApplication ctx) {
try {
ctx.getPackageManager().getPackageInfo("com.android.vending", 0);
} catch (PackageManager.NameNotFoundException e) {
@@ -44,10 +48,10 @@ public class Version {
return true;
}
- public static String marketPrefix(OsmandApplication ctx) {
- if (isAmazonEnabled(ctx)) {
+ public static String marketPrefix(@NonNull OsmandApplication ctx) {
+ if (isAmazon()) {
return "amzn://apps/android?p=";
- } else if (isGooglePlayEnabled(ctx) && isGooglePlayInstalled(ctx)) {
+ } else if (isGooglePlayEnabled() && isGooglePlayInstalled(ctx)) {
return "market://details?id=";
}
return "https://osmand.net/apps?id=";
@@ -57,22 +61,11 @@ public class Version {
return marketPrefix(ctx) + appName + UTM_REF;
}
- private static boolean isAmazonEnabled(OsmandApplication ctx) {
- return ctx.getString(R.string.versionFeatures).contains("+amazon");
- }
-
- public static boolean isGooglePlayEnabled(OsmandApplication ctx) {
- return ctx.getString(R.string.versionFeatures).contains("+play_market");
- }
-
-
private Version(OsmandApplication ctx) {
String appVersion = "";
- int versionCode = -1;
try {
PackageInfo packageInfo = ctx.getPackageManager().getPackageInfo(ctx.getPackageName(), 0);
appVersion = packageInfo.versionName; //Version suffix ctx.getString(R.string.app_version_suffix) already appended in build.gradle
- versionCode = packageInfo.versionCode;
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
@@ -123,8 +116,7 @@ public class Version {
public static boolean isFreeVersion(OsmandApplication ctx){
return ctx.getPackageName().equals(FREE_VERSION_NAME) ||
ctx.getPackageName().equals(FREE_DEV_VERSION_NAME) ||
- ctx.getPackageName().equals(FREE_CUSTOM_VERSION_NAME) ||
- isHuawei(ctx);
+ isHuawei();
}
public static boolean isPaidVersion(OsmandApplication ctx) {
diff --git a/OsmAnd/src/net/osmand/plus/activities/MapActivity.java b/OsmAnd/src/net/osmand/plus/activities/MapActivity.java
index 007280144e..a94997caaa 100644
--- a/OsmAnd/src/net/osmand/plus/activities/MapActivity.java
+++ b/OsmAnd/src/net/osmand/plus/activities/MapActivity.java
@@ -70,6 +70,8 @@ import net.osmand.plus.GpxSelectionHelper.GpxDisplayItem;
import net.osmand.plus.GpxSelectionHelper.SelectedGpxFile;
import net.osmand.plus.OnDismissDialogFragmentListener;
import net.osmand.plus.OsmAndConstants;
+import net.osmand.plus.OsmAndLocationProvider;
+import net.osmand.plus.OsmAndLocationProvider.OsmAndLocationListener;
import net.osmand.plus.OsmAndLocationSimulation;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandPlugin;
@@ -347,11 +349,17 @@ public class MapActivity extends OsmandActionBarActivity implements DownloadEven
if (!settings.isLastKnownMapLocation()) {
// show first time when application ran
- net.osmand.Location location = app.getLocationProvider().getFirstTimeRunDefaultLocation();
+ net.osmand.Location location = app.getLocationProvider().getFirstTimeRunDefaultLocation(new OsmAndLocationListener() {
+ @Override
+ public void updateLocation(Location location) {
+ if (app.getLocationProvider().getLastKnownLocation() == null) {
+ setMapInitialLatLon(location);
+ }
+ }
+ });
mapViewTrackingUtilities.setMapLinkedToLocation(true);
if (location != null) {
- mapView.setLatLon(location.getLatitude(), location.getLongitude());
- mapView.setIntZoom(14);
+ setMapInitialLatLon(location);
}
}
addDialogProvider(mapActions);
@@ -376,6 +384,13 @@ public class MapActivity extends OsmandActionBarActivity implements DownloadEven
mIsDestroyed = false;
}
+ private void setMapInitialLatLon(@Nullable Location location) {
+ if (location != null) {
+ mapView.setLatLon(location.getLatitude(), location.getLongitude());
+ mapView.setIntZoom(14);
+ }
+ }
+
public void exitFromFullScreen(View view) {
AndroidUtils.exitFromFullScreen(this, view);
}
diff --git a/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java b/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java
index c526ddec2a..b5dd0dc3ea 100644
--- a/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java
+++ b/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java
@@ -903,7 +903,7 @@ public class MapActivityActions implements DialogProvider {
}
}).createItem());
- if (Version.isGooglePlayEnabled(app) || Version.isHuawei(app) || Version.isDeveloperVersion(app)) {
+ if (Version.isGooglePlayEnabled() || Version.isHuawei() || Version.isDeveloperVersion(app)) {
optionsMenuHelper.addItem(new ItemBuilder().setTitleId(R.string.osm_live, mapActivity)
.setId(DRAWER_OSMAND_LIVE_ID)
.setIcon(R.drawable.ic_action_osm_live)
diff --git a/OsmAnd/src/net/osmand/plus/activities/OsmandInAppPurchaseActivity.java b/OsmAnd/src/net/osmand/plus/activities/OsmandInAppPurchaseActivity.java
index 47f7a17444..6cc1b222bb 100644
--- a/OsmAnd/src/net/osmand/plus/activities/OsmandInAppPurchaseActivity.java
+++ b/OsmAnd/src/net/osmand/plus/activities/OsmandInAppPurchaseActivity.java
@@ -5,7 +5,6 @@ import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.net.Uri;
-import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -16,16 +15,12 @@ import androidx.fragment.app.FragmentManager;
import net.osmand.AndroidUtils;
import net.osmand.PlatformUtil;
import net.osmand.plus.OsmandApplication;
-import net.osmand.plus.OsmandPlugin;
-import net.osmand.plus.R;
import net.osmand.plus.Version;
-import net.osmand.plus.download.DownloadActivity;
import net.osmand.plus.inapp.InAppPurchaseHelper;
import net.osmand.plus.inapp.InAppPurchaseHelper.InAppPurchaseInitCallback;
import net.osmand.plus.inapp.InAppPurchaseHelper.InAppPurchaseListener;
import net.osmand.plus.inapp.InAppPurchaseHelper.InAppPurchaseTaskType;
import net.osmand.plus.liveupdates.OsmLiveRestartBottomSheetDialogFragment;
-import net.osmand.plus.srtmplugin.SRTMPlugin;
import org.apache.commons.logging.Log;
@@ -59,7 +54,7 @@ public class OsmandInAppPurchaseActivity extends AppCompatActivity implements In
InAppPurchaseHelper purchaseHelper = app.getInAppPurchaseHelper();
if (app.getSettings().isInternetConnectionAvailable()
&& isInAppPurchaseAllowed()
- && isInAppPurchaseSupported(purchaseHelper)) {
+ && isInAppPurchaseSupported()) {
this.purchaseHelper = purchaseHelper;
}
}
@@ -160,9 +155,8 @@ public class OsmandInAppPurchaseActivity extends AppCompatActivity implements In
return false;
}
- public boolean isInAppPurchaseSupported(InAppPurchaseHelper purchaseHelper) {
- OsmandApplication app = getMyApplication();
- return Version.isGooglePlayEnabled(app) || Version.isHuawei(app);
+ public boolean isInAppPurchaseSupported() {
+ return Version.isGooglePlayEnabled() || Version.isHuawei();
}
@Override
diff --git a/OsmAnd/src/net/osmand/plus/activities/actions/ShareDialog.java b/OsmAnd/src/net/osmand/plus/activities/actions/ShareDialog.java
index 4858e3ccfe..f033e59bef 100644
--- a/OsmAnd/src/net/osmand/plus/activities/actions/ShareDialog.java
+++ b/OsmAnd/src/net/osmand/plus/activities/actions/ShareDialog.java
@@ -193,7 +193,7 @@ public class ShareDialog {
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
activity.startActivity(intent);
} else {
- if (Version.isMarketEnabled((OsmandApplication) activity.getApplication())) {
+ if (Version.isMarketEnabled()) {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setMessage(activity.getString(R.string.zxing_barcode_scanner_not_found));
builder.setPositiveButton(activity.getString(R.string.shared_string_yes), new DialogInterface.OnClickListener() {
diff --git a/OsmAnd/src/net/osmand/plus/activities/actions/StartGPSStatus.java b/OsmAnd/src/net/osmand/plus/activities/actions/StartGPSStatus.java
index 79abd4190a..c8c9a70785 100644
--- a/OsmAnd/src/net/osmand/plus/activities/actions/StartGPSStatus.java
+++ b/OsmAnd/src/net/osmand/plus/activities/actions/StartGPSStatus.java
@@ -180,7 +180,7 @@ public class StartGPSStatus extends OsmAndAction {
intent.addCategory(Intent.CATEGORY_LAUNCHER);
mapActivity.startActivity(intent);
} else {
- if (Version.isMarketEnabled(getMyApplication())) {
+ if (Version.isMarketEnabled()) {
AlertDialog.Builder builder = new AlertDialog.Builder(mapActivity);
builder.setMessage(mapActivity. getString(R.string.gps_status_app_not_found));
builder.setPositiveButton(mapActivity.getString(R.string.shared_string_yes), new DialogInterface.OnClickListener() {
diff --git a/OsmAnd/src/net/osmand/plus/chooseplan/ChoosePlanDialogFragment.java b/OsmAnd/src/net/osmand/plus/chooseplan/ChoosePlanDialogFragment.java
index 9a7215867f..6547ae01db 100644
--- a/OsmAnd/src/net/osmand/plus/chooseplan/ChoosePlanDialogFragment.java
+++ b/OsmAnd/src/net/osmand/plus/chooseplan/ChoosePlanDialogFragment.java
@@ -5,8 +5,6 @@ import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
-import android.content.Intent;
-import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.text.TextUtils;
@@ -216,7 +214,7 @@ public abstract class ChoosePlanDialogFragment extends BaseOsmAndDialogFragment
infoDescription.setText(getInfoDescription());
}
TextViewEx planInfoDescription = (TextViewEx) view.findViewById(R.id.plan_info_description);
- planInfoDescription.setText(Version.isHuawei(app)
+ planInfoDescription.setText(Version.isHuawei()
? R.string.osm_live_payment_subscription_management_hw : R.string.osm_live_payment_subscription_management);
ViewGroup osmLiveCard = buildOsmLiveCard(ctx, cardsContainer);
if (osmLiveCard != null) {
diff --git a/OsmAnd/src/net/osmand/plus/development/DevelopmentSettingsFragment.java b/OsmAnd/src/net/osmand/plus/development/DevelopmentSettingsFragment.java
index 8cee128154..d34a306b79 100644
--- a/OsmAnd/src/net/osmand/plus/development/DevelopmentSettingsFragment.java
+++ b/OsmAnd/src/net/osmand/plus/development/DevelopmentSettingsFragment.java
@@ -71,16 +71,12 @@ public class DevelopmentSettingsFragment extends BaseSettingsFragment {
private void setupSafeModePref() {
SwitchPreferenceEx safeMode = findPreference(settings.SAFE_MODE.getId());
- if (!Version.isBlackberry(app)) {
- safeMode.setDescription(getString(R.string.safe_mode_description));
- safeMode.setIconSpaceReserved(false);
- // disable the switch if the library cannot be used
- if ((NativeOsmandLibrary.isLoaded() && !NativeOsmandLibrary.isSupported()) || settings.NATIVE_RENDERING_FAILED.get()) {
- safeMode.setEnabled(false);
- safeMode.setChecked(true);
- }
- } else {
- safeMode.setVisible(false);
+ safeMode.setDescription(getString(R.string.safe_mode_description));
+ safeMode.setIconSpaceReserved(false);
+ // disable the switch if the library cannot be used
+ if ((NativeOsmandLibrary.isLoaded() && !NativeOsmandLibrary.isSupported()) || settings.NATIVE_RENDERING_FAILED.get()) {
+ safeMode.setEnabled(false);
+ safeMode.setChecked(true);
}
}
diff --git a/OsmAnd/src/net/osmand/plus/dialogs/RateUsBottomSheetDialogFragment.java b/OsmAnd/src/net/osmand/plus/dialogs/RateUsBottomSheetDialogFragment.java
index 2dcd62c6bd..188031ea1d 100644
--- a/OsmAnd/src/net/osmand/plus/dialogs/RateUsBottomSheetDialogFragment.java
+++ b/OsmAnd/src/net/osmand/plus/dialogs/RateUsBottomSheetDialogFragment.java
@@ -108,7 +108,7 @@ public class RateUsBottomSheetDialogFragment extends MenuBottomSheetDialogFragme
public static boolean shouldShow(OsmandApplication app) {
long firstInstalledDays = app.getAppInitializer().getFirstInstalledDays();
//Do not show dialog if not google play version or more than 350 days left from the first start
- if (!Version.isGooglePlayEnabled(app) || firstInstalledDays > 350) {
+ if (!Version.isGooglePlayEnabled() || firstInstalledDays > 350) {
return false;
}
OsmandSettings settings = app.getSettings();
diff --git a/OsmAnd/src/net/osmand/plus/download/DownloadValidationManager.java b/OsmAnd/src/net/osmand/plus/download/DownloadValidationManager.java
index 92fa82079f..8e03b2c1e5 100644
--- a/OsmAnd/src/net/osmand/plus/download/DownloadValidationManager.java
+++ b/OsmAnd/src/net/osmand/plus/download/DownloadValidationManager.java
@@ -217,7 +217,7 @@ public class DownloadValidationManager {
AlertDialog.Builder msg = new AlertDialog.Builder(getActivity());
msg.setTitle(R.string.free_version_title);
msg.setMessage(msgTx);
- if (Version.isMarketEnabled(getMyApplication())) {
+ if (Version.isMarketEnabled()) {
msg.setPositiveButton(R.string.install_paid, new DialogInterface.OnClickListener() {
@Override
diff --git a/OsmAnd/src/net/osmand/plus/helpers/DayNightHelper.java b/OsmAnd/src/net/osmand/plus/helpers/DayNightHelper.java
index 20820d379e..0721350197 100644
--- a/OsmAnd/src/net/osmand/plus/helpers/DayNightHelper.java
+++ b/OsmAnd/src/net/osmand/plus/helpers/DayNightHelper.java
@@ -110,7 +110,7 @@ public class DayNightHelper implements SensorEventListener {
public SunriseSunset getSunriseSunset() {
Location lastKnownLocation = app.getLocationProvider().getLastKnownLocation();
if (lastKnownLocation == null) {
- lastKnownLocation = app.getLocationProvider().getFirstTimeRunDefaultLocation();
+ lastKnownLocation = app.getLocationProvider().getFirstTimeRunDefaultLocation(null);
}
if (lastKnownLocation == null) {
return null;
diff --git a/OsmAnd/src/net/osmand/plus/helpers/LocationServiceHelper.java b/OsmAnd/src/net/osmand/plus/helpers/LocationServiceHelper.java
index 94602e98fc..472dcf3b7f 100644
--- a/OsmAnd/src/net/osmand/plus/helpers/LocationServiceHelper.java
+++ b/OsmAnd/src/net/osmand/plus/helpers/LocationServiceHelper.java
@@ -1,6 +1,7 @@
package net.osmand.plus.helpers;
import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import net.osmand.Location;
@@ -25,5 +26,5 @@ public abstract class LocationServiceHelper {
public abstract void removeLocationUpdates();
- public abstract Location getFirstTimeRunDefaultLocation();
+ public abstract Location getFirstTimeRunDefaultLocation(@Nullable LocationCallback locationCallback);
}
diff --git a/OsmAnd/src/net/osmand/plus/inapp/InAppPurchaseHelper.java b/OsmAnd/src/net/osmand/plus/inapp/InAppPurchaseHelper.java
index c7464c6b1f..ec13eba2bd 100644
--- a/OsmAnd/src/net/osmand/plus/inapp/InAppPurchaseHelper.java
+++ b/OsmAnd/src/net/osmand/plus/inapp/InAppPurchaseHelper.java
@@ -212,7 +212,7 @@ public abstract class InAppPurchaseHelper {
}
protected void exec(final @NonNull InAppPurchaseTaskType taskType, final @NonNull InAppCommand command) {
- if (isDeveloperVersion || (!Version.isGooglePlayEnabled(ctx) && !Version.isHuawei(ctx))) {
+ if (isDeveloperVersion || (!Version.isGooglePlayEnabled() && !Version.isHuawei())) {
notifyDismissProgress(taskType);
stop(true);
return;
diff --git a/OsmAnd/src/net/osmand/plus/settings/fragments/GeneralProfileSettingsFragment.java b/OsmAnd/src/net/osmand/plus/settings/fragments/GeneralProfileSettingsFragment.java
index 430432981e..8bb3cfb333 100644
--- a/OsmAnd/src/net/osmand/plus/settings/fragments/GeneralProfileSettingsFragment.java
+++ b/OsmAnd/src/net/osmand/plus/settings/fragments/GeneralProfileSettingsFragment.java
@@ -298,12 +298,9 @@ public class GeneralProfileSettingsFragment extends BaseSettingsFragment impleme
mapEmptyStateAllowedPref.setTitle(getString(R.string.use_trackball));
mapEmptyStateAllowedPref.setDescription(getString(R.string.use_trackball_descr));
- boolean visible = false;
- if (!Version.isBlackberry(app)) {
- int nav = getResources().getConfiguration().navigation;
- visible = nav == Configuration.NAVIGATION_DPAD || nav == Configuration.NAVIGATION_TRACKBALL ||
- nav == Configuration.NAVIGATION_WHEEL || nav == Configuration.NAVIGATION_UNDEFINED;
- }
+ int nav = getResources().getConfiguration().navigation;
+ boolean visible = nav == Configuration.NAVIGATION_DPAD || nav == Configuration.NAVIGATION_TRACKBALL ||
+ nav == Configuration.NAVIGATION_WHEEL || nav == Configuration.NAVIGATION_UNDEFINED;
mapEmptyStateAllowedPref.setVisible(visible);
}
diff --git a/OsmAnd/src/net/osmand/plus/settings/fragments/RouteParametersFragment.java b/OsmAnd/src/net/osmand/plus/settings/fragments/RouteParametersFragment.java
index d3d9ef2d93..123c49b316 100644
--- a/OsmAnd/src/net/osmand/plus/settings/fragments/RouteParametersFragment.java
+++ b/OsmAnd/src/net/osmand/plus/settings/fragments/RouteParametersFragment.java
@@ -171,15 +171,13 @@ public class RouteParametersFragment extends BaseSettingsFragment implements OnP
}
private void setupNativePublicTransport() {
- if (!Version.isBlackberry(app)) {
- SwitchPreferenceEx setupNativePublicTransport = createSwitchPreferenceEx(settings.PT_SAFE_MODE.getId(),
- R.string.use_native_pt, R.layout.preference_with_descr_dialog_and_switch);
- setupNativePublicTransport.setDescription(getString(R.string.use_native_pt_desc));
- setupNativePublicTransport.setSummaryOn(R.string.shared_string_enabled);
- setupNativePublicTransport.setSummaryOff(R.string.shared_string_disabled);
- setupNativePublicTransport.setIconSpaceReserved(true);
- getPreferenceScreen().addPreference(setupNativePublicTransport);
- }
+ SwitchPreferenceEx setupNativePublicTransport = createSwitchPreferenceEx(settings.PT_SAFE_MODE.getId(),
+ R.string.use_native_pt, R.layout.preference_with_descr_dialog_and_switch);
+ setupNativePublicTransport.setDescription(getString(R.string.use_native_pt_desc));
+ setupNativePublicTransport.setSummaryOn(R.string.shared_string_enabled);
+ setupNativePublicTransport.setSummaryOff(R.string.shared_string_disabled);
+ setupNativePublicTransport.setIconSpaceReserved(true);
+ getPreferenceScreen().addPreference(setupNativePublicTransport);
}
private void setupOsmLiveForRoutingPref() {
diff --git a/OsmAnd/src/net/osmand/plus/settings/fragments/VoiceAnnouncesFragment.java b/OsmAnd/src/net/osmand/plus/settings/fragments/VoiceAnnouncesFragment.java
index 9697acd599..fb617ab01f 100644
--- a/OsmAnd/src/net/osmand/plus/settings/fragments/VoiceAnnouncesFragment.java
+++ b/OsmAnd/src/net/osmand/plus/settings/fragments/VoiceAnnouncesFragment.java
@@ -97,10 +97,9 @@ public class VoiceAnnouncesFragment extends BaseSettingsFragment implements OnPr
setupArrivalAnnouncementPref();
setupVoiceProviderPref();
- if (!Version.isBlackberry(app)) {
- setupAudioStreamGuidancePref();
- setupInterruptMusicPref();
- }
+ setupAudioStreamGuidancePref();
+ setupInterruptMusicPref();
+
enableDisablePreferences(!settings.VOICE_MUTE.getModeValue(getSelectedAppMode()));
setupSpeakCamerasPref();
setupSpeedCamerasAlert();