diff --git a/OsmAnd-java/src/main/java/net/osmand/IProgress.java b/OsmAnd-java/src/main/java/net/osmand/IProgress.java index 762dab727b..407cd735f3 100644 --- a/OsmAnd-java/src/main/java/net/osmand/IProgress.java +++ b/OsmAnd-java/src/main/java/net/osmand/IProgress.java @@ -45,7 +45,7 @@ public interface IProgress { public boolean isInterrupted() {return false;} @Override - public boolean isIndeterminate() {return false;} + public boolean isIndeterminate() {return true;} @Override public void finishTask() {} diff --git a/OsmAnd-java/src/main/java/net/osmand/osm/MapPoiTypes.java b/OsmAnd-java/src/main/java/net/osmand/osm/MapPoiTypes.java index f535af8610..e273fa4e7f 100644 --- a/OsmAnd-java/src/main/java/net/osmand/osm/MapPoiTypes.java +++ b/OsmAnd-java/src/main/java/net/osmand/osm/MapPoiTypes.java @@ -823,7 +823,7 @@ public class MapPoiTypes { } String name = keyName; name = name.replace('_', ' '); - return Algorithms.capitalizeFirstLetterAndLowercase(name); + return Algorithms.capitalizeFirstLetter(name); } public boolean isRegisteredType(PoiCategory t) { diff --git a/OsmAnd-java/src/main/java/net/osmand/render/RenderingRule.java b/OsmAnd-java/src/main/java/net/osmand/render/RenderingRule.java index e597386d47..0ae4314dd9 100644 --- a/OsmAnd-java/src/main/java/net/osmand/render/RenderingRule.java +++ b/OsmAnd-java/src/main/java/net/osmand/render/RenderingRule.java @@ -41,7 +41,7 @@ public class RenderingRule { public void init(Map attributes) { ArrayList props = new ArrayList(attributes.size()); intProperties = new int[attributes.size()]; - floatProperties = null; + floatProperties = new float[attributes.size()]; attributesRef = null; int i = 0; Iterator> it = attributes.entrySet().iterator(); @@ -58,14 +58,13 @@ public class RenderingRule { attributesRef[i] = storage.getRenderingAttributeRule(vl.substring(1)); } else if (property.isString()) { intProperties[i] = storage.getDictionaryValue(vl); - } else if (property.isFloat()) { - if (floatProperties == null) { - // lazy creates - floatProperties = new float[attributes.size()]; - } - floatProperties[i] = property.parseFloatValue(vl); - intProperties[i] = property.parseIntValue(vl); } else { + float floatVal = property.parseFloatValue(vl); +// if (floatProperties == null && floatVal != 0) { +// // lazy creates +// floatProperties = new float[attributes.size()]; + floatProperties[i] = floatVal; +// } intProperties[i] = property.parseIntValue(vl); } i++; @@ -95,7 +94,7 @@ public class RenderingRule { public float getFloatPropertyValue(String property) { int i = getPropertyIndex(property); - if(i >= 0 && floatProperties != null){ + if (i >= 0) { return floatProperties[i]; } return 0; diff --git a/OsmAnd-java/src/main/java/net/osmand/render/RenderingRuleProperty.java b/OsmAnd-java/src/main/java/net/osmand/render/RenderingRuleProperty.java index 228430b01f..322a734980 100644 --- a/OsmAnd-java/src/main/java/net/osmand/render/RenderingRuleProperty.java +++ b/OsmAnd-java/src/main/java/net/osmand/render/RenderingRuleProperty.java @@ -155,12 +155,7 @@ public class RenderingRuleProperty { try { int colon = value.indexOf(':'); if(colon != -1) { - int c = 0; - if(colon > 0) { - c += (int) Float.parseFloat(value.substring(0, colon)); - } - c += (int) Float.parseFloat(value.substring(colon + 1)); - return c; + return (int) Float.parseFloat(value.substring(colon + 1)); } return (int) Float.parseFloat(value); } catch (NumberFormatException e) { @@ -190,30 +185,35 @@ public class RenderingRuleProperty { } catch (NumberFormatException e) { log.error("Rendering parse " + value + " in " + attrName); } - return -1; + return 0; } else { return -1; } } - public float parseFloatValue(String value){ - if(type == FLOAT_TYPE){ - try { + public float parseFloatValue(String value) { + try { + if (type == FLOAT_TYPE) { int colon = value.indexOf(':'); - if(colon != -1) { - if(colon > 0) { + if (colon != -1) { + if (colon > 0) { return Float.parseFloat(value.substring(0, colon)); - } + } return 0; } return Float.parseFloat(value); - } catch (NumberFormatException e) { - log.error("Rendering parse " + value + " in " + attrName); + + } else if (type == INT_TYPE) { + int colon = value.indexOf(':'); + if (colon != -1 && colon > 0) { + return Float.parseFloat(value.substring(0, colon)); + } + return 0; } - return -1; - } else { - return -1; + } catch (NumberFormatException e) { + log.error("Rendering parse " + value + " in " + attrName); } + return 0; } diff --git a/OsmAnd-java/src/main/java/net/osmand/render/RenderingRuleStorageProperties.java b/OsmAnd-java/src/main/java/net/osmand/render/RenderingRuleStorageProperties.java index 7a43f1f624..3eafb803dd 100644 --- a/OsmAnd-java/src/main/java/net/osmand/render/RenderingRuleStorageProperties.java +++ b/OsmAnd-java/src/main/java/net/osmand/render/RenderingRuleStorageProperties.java @@ -244,8 +244,6 @@ public class RenderingRuleStorageProperties { R_TEXT_HALO_COLOR = registerRuleInternal(RenderingRuleProperty.createOutputColorProperty(TEXT_HALO_COLOR)); R_TEXT_SIZE = registerRuleInternal(RenderingRuleProperty.createOutputFloatProperty(TEXT_SIZE)); R_TEXT_ORDER = registerRuleInternal(RenderingRuleProperty.createOutputIntProperty(TEXT_ORDER)); - R_ICON_ORDER = registerRuleInternal(RenderingRuleProperty.createOutputIntProperty(ICON_ORDER)); - R_ICON_VISIBLE_SIZE = registerRuleInternal(RenderingRuleProperty.createOutputFloatProperty(ICON_VISIBLE_SIZE)); R_TEXT_MIN_DISTANCE = registerRuleInternal(RenderingRuleProperty.createOutputFloatProperty(TEXT_MIN_DISTANCE)); R_TEXT_SHIELD = registerRuleInternal(RenderingRuleProperty.createOutputStringProperty(TEXT_SHIELD)); @@ -265,7 +263,9 @@ public class RenderingRuleStorageProperties { R_ICON_3 = registerRuleInternal(RenderingRuleProperty.createOutputStringProperty("icon_3")); R_ICON_4 = registerRuleInternal(RenderingRuleProperty.createOutputStringProperty("icon_4")); R_ICON_5 = registerRuleInternal(RenderingRuleProperty.createOutputStringProperty("icon_5")); + R_ICON_ORDER = registerRuleInternal(RenderingRuleProperty.createOutputIntProperty(ICON_ORDER)); R_SHIELD = registerRuleInternal(RenderingRuleProperty.createOutputStringProperty(SHIELD)); + R_ICON_VISIBLE_SIZE = registerRuleInternal(RenderingRuleProperty.createOutputFloatProperty(ICON_VISIBLE_SIZE)); // polygon/way R_COLOR = registerRuleInternal(RenderingRuleProperty.createOutputColorProperty(COLOR)); diff --git a/OsmAnd-telegram/res/values-da/strings.xml b/OsmAnd-telegram/res/values-da/strings.xml index a6e077e7f8..caefa87b94 100644 --- a/OsmAnd-telegram/res/values-da/strings.xml +++ b/OsmAnd-telegram/res/values-da/strings.xml @@ -269,4 +269,8 @@ Sidste svar: %1$s siden %1$s siden ERR + Eksporter + Logcat-buffer + Kontroller og del detaljerede logfiler for programmet + Send rapport \ No newline at end of file diff --git a/OsmAnd-telegram/res/values-tr/strings.xml b/OsmAnd-telegram/res/values-tr/strings.xml index 87ba56717d..2ff160a4a4 100644 --- a/OsmAnd-telegram/res/values-tr/strings.xml +++ b/OsmAnd-telegram/res/values-tr/strings.xml @@ -233,7 +233,7 @@ OsmAnd Tracker, ekran kapalıyken arka planda çalışır. Konumu paylaş Konum paylaşılıyor - OsmAnd Tracker servisi + OsmAnd Tracker hizmeti OsmAnd logosu Önce OsmAnd\'ın ücretsiz veya ücretli sürümünü yüklemeniz gerekmektedir OsmAnd\'ı yükle diff --git a/OsmAnd/AndroidManifest.xml b/OsmAnd/AndroidManifest.xml index 4e5395a04a..d762e0a261 100644 --- a/OsmAnd/AndroidManifest.xml +++ b/OsmAnd/AndroidManifest.xml @@ -53,7 +53,8 @@ android:icon="@mipmap/icon" android:label="@string/app_name" android:name="net.osmand.plus.OsmandApplication" android:configChanges="locale" android:theme="@style/OsmandDarkTheme" android:restoreAnyVersion="true" android:largeHeap="true" - android:supportsRtl="true" android:usesCleartextTraffic="true"> + android:supportsRtl="true" android:usesCleartextTraffic="true" + android:hasFragileUserData="true" android:requestLegacyExternalStorage="true"> diff --git a/OsmAnd/build.gradle b/OsmAnd/build.gradle index e8f98db15a..3638a103ca 100644 --- a/OsmAnd/build.gradle +++ b/OsmAnd/build.gradle @@ -53,7 +53,7 @@ android { defaultConfig { minSdkVersion System.getenv("MIN_SDK_VERSION") ? System.getenv("MIN_SDK_VERSION").toInteger() : 15 - targetSdkVersion 28 + targetSdkVersion 29 versionCode 390 versionCode System.getenv("APK_NUMBER_VERSION") ? System.getenv("APK_NUMBER_VERSION").toInteger() : versionCode multiDexEnabled true @@ -230,9 +230,6 @@ android { buildConfigField "String", "OSM_OAUTH_CONSUMER_KEY", "\"Ti2qq3fo4i4Wmuox3SiWRIGq3obZisBHnxmcM05y\"" buildConfigField "String", "OSM_OAUTH_CONSUMER_SECRET", "\"lxulb3HYoMmd2cC4xxNe1dyfRMAY8dS0eNihJ0DM\"" signingConfig signingConfigs.development - debuggable false - jniDebuggable false - buildConfigField "boolean", "USE_DEBUG_LIBRARIES", "false" } release { buildConfigField "String", "OSM_OAUTH_CONSUMER_KEY", "\"Ti2qq3fo4i4Wmuox3SiWRIGq3obZisBHnxmcM05y\"" diff --git a/OsmAnd/res/layout/poi_tag_list_item.xml b/OsmAnd/res/layout/poi_tag_list_item.xml index c057b3f0f1..e8a9c8dbb5 100644 --- a/OsmAnd/res/layout/poi_tag_list_item.xml +++ b/OsmAnd/res/layout/poi_tag_list_item.xml @@ -17,13 +17,12 @@ android:layout_marginEnd="@dimen/content_padding"> @@ -34,12 +33,11 @@ android:layout_weight="1"> diff --git a/OsmAnd/res/values-ar/strings.xml b/OsmAnd/res/values-ar/strings.xml index 3e067c722c..b60654e873 100644 --- a/OsmAnd/res/values-ar/strings.xml +++ b/OsmAnd/res/values-ar/strings.xml @@ -3913,4 +3913,11 @@ تسجيل الدخول عبر OAuth مسح رمز OpenStreetMap OAuth تسجيل الخروج بنجاح + تم استيراد الملف بالفعل في أوسماند + استخدام خوارزمية توجيه من مرحلتين A* + %1$s البيانات المتوفرة فقط على الطرق ، تحتاج إلى حساب طريق باستخدام \"الطريق بين النقاط\" للحصول عليها. + في انتظار إعادة حساب الطريق +\nسيتوفر الرسم البياني بعد إعادة الحساب. + للقيادة على الجليد مع طرق ومسارات مخصصة. + رسم بياني \ No newline at end of file diff --git a/OsmAnd/res/values-be/phrases.xml b/OsmAnd/res/values-be/phrases.xml index f96eaef3ab..253f7eb98d 100644 --- a/OsmAnd/res/values-be/phrases.xml +++ b/OsmAnd/res/values-be/phrases.xml @@ -3844,4 +3844,5 @@ Маленькія электрапрыборы Вулей Крама арэхаў + \ No newline at end of file diff --git a/OsmAnd/res/values-be/strings.xml b/OsmAnd/res/values-be/strings.xml index fa503e2464..3d0aa6103d 100644 --- a/OsmAnd/res/values-be/strings.xml +++ b/OsmAnd/res/values-be/strings.xml @@ -3971,4 +3971,13 @@ Дзвюхфазная аўтанавігацыя. Натыўны грамадскі транспарт (у распрацоўцы) Увайсці праз OAuth + Выкарыстоўваць 2-фазны алгарытм маршрутызацыі A * + Перайсці на разлік маршруту грамадскага транспарту на Java (бяспечны) + Файл ужо імпартаваны ў OsmAnd + Значкі старту і фінішу + Увайдзіце праз OAuth, каб выкарыстоўваць функцыі osmedit + Ачысціць токен OpenStreetMap OAuth + Выхад выкананы + Даныя OsmAnd Live + Даныя OsmAnd Live \ No newline at end of file diff --git a/OsmAnd/res/values-de/strings.xml b/OsmAnd/res/values-de/strings.xml index fbf1ccc31f..dec24d8f5d 100644 --- a/OsmAnd/res/values-de/strings.xml +++ b/OsmAnd/res/values-de/strings.xml @@ -3925,4 +3925,8 @@ Zwei-Phasen-Routenberechnung für die Autonavigation. Native ÖPNV Entwicklung Wechseln zu Java (sicher) Berechnung des ÖPNV-Routings + Abmeldung erfolgreich + Datei wurde bereits in OsmAnd importiert + Anmelden über OAuth + OpenStreetMap OAuth-Token löschen \ No newline at end of file diff --git a/OsmAnd/res/values-eo/strings.xml b/OsmAnd/res/values-eo/strings.xml index 727be72322..ece67180a8 100644 --- a/OsmAnd/res/values-eo/strings.xml +++ b/OsmAnd/res/values-eo/strings.xml @@ -73,7 +73,7 @@ Volapuko OsmAnd Mapoj kaj Navigado Inversa ordigo - Anstataŭigi komencpunkton per finpunkto + Anstataŭigi komencpunkton per celo Emblemoj de interesejoj Elemento forigita elementoj forigitaj @@ -742,7 +742,7 @@ Vidiga koloro tagoj Konekti - Prikalkuli kurson inter punktojn + Kalkuli kurson inter punktoj Ĉiam montri centrigitan pozicion Loko adresoj tutmondaj @@ -3357,7 +3357,7 @@ Eraro dum enporti %1$s: %2$s %1$s enportita. Blanka - Anstataŭigi %1$s per %2$s + Anstataŭigi: %1$s ⇄ %2$s Komencpunkto Anstataŭigi komencpunkton per celo Simuli vian pozicion uzante registritan GPX‑kurson. @@ -3925,4 +3925,11 @@ Ensaluti per OAuth Forigi ĵetonon OpenStreetMap OAuth Sukcese elsalutinta + Por veturi per motorsledo sur dediĉitaj vojoj. + Dosiero jam estas enportita al OsmAnd + Uzi 2-fazan A* algoritmon de navigo + Diagramo + Datumoj de %1$s estas disponeblaj nur por vojoj, vi devas kalkuli la kurson uzante “kalkuli kurson inter punktoj” por akiri ĝin. + Atendado ĝis la kurso estos rekalkulita. +\nDiagramo estos videbla post rekalkulado. \ No newline at end of file diff --git a/OsmAnd/res/values-es-rAR/phrases.xml b/OsmAnd/res/values-es-rAR/phrases.xml index 88c35ef6f9..4a15cc5cdd 100644 --- a/OsmAnd/res/values-es-rAR/phrases.xml +++ b/OsmAnd/res/values-es-rAR/phrases.xml @@ -3568,8 +3568,8 @@ Radioterapia Advertencia de peligro Categoría de dificultad - н/к (sin categoría) - н/к* (sin categoría, posible peligro) + s/c (sin categoría) + s/c* (sin categoría, posible peligro) 1A 1A* 1B diff --git a/OsmAnd/res/values-es-rAR/strings.xml b/OsmAnd/res/values-es-rAR/strings.xml index 5e5fae0268..b68eaba5e1 100644 --- a/OsmAnd/res/values-es-rAR/strings.xml +++ b/OsmAnd/res/values-es-rAR/strings.xml @@ -3929,4 +3929,11 @@ Ingresar a través de OAuth Vaciar llave OAuth de OpenStreetMap Sesión finalizada + Para caminos y senderos exclusivos de motos de nieve. + El archivo ya fue importado en OsmAnd + Usar el algoritmo de enrutamiento A* de 2 fases + Gráfico + %1$s datos disponibles sólo en los caminos, necesitas calcular una ruta usando «Ruta entre puntos» para obtenerla. + Espera el recálculo de la ruta. +\nEl gráfico estará disponible después del recálculo. \ No newline at end of file diff --git a/OsmAnd/res/values-et/phrases.xml b/OsmAnd/res/values-et/phrases.xml index 4cb42eee67..daafc22ac5 100644 --- a/OsmAnd/res/values-et/phrases.xml +++ b/OsmAnd/res/values-et/phrases.xml @@ -3559,20 +3559,20 @@ $0.5 mündid Laadimisjaam Oht - н/к - н/к* - - 1А* - - 1Б* - - 2А* - - 2Б* - - 3А* - - 3Б* + k/p + k/p* + 1A + 1A* + 1B + 1B* + 2A + 2A* + 2B + 2B* + 3A + 3A* + 3B + 3B* Gaasi põletamine;Hõõglamp Kustutatud objekt Kiiritusravi diff --git a/OsmAnd/res/values-et/strings.xml b/OsmAnd/res/values-et/strings.xml index fdd760f307..8ccdb58038 100644 --- a/OsmAnd/res/values-et/strings.xml +++ b/OsmAnd/res/values-et/strings.xml @@ -3775,4 +3775,11 @@ Arveldame tellimuse eest valitud ajavahemiku alusel. Seda saad sa vabalt valitud ajal tühistada AppGallery\'s. Keeruka teekonna koostamine Väljalogimine õnnestus + Arendus + Kustuta OpenStreetMap\'i OAuth\'i pääsuluba + Logi sisse OAuth abil + Kui sa soovid kasutada kaardi muutmise võimalusi, siis palun logi sisse OAuth abil + Meie uudised + Kasuta kahefaasilist A-klassi teekonna koostamise algoritmi + See fail on juba OsmAnd\'i imporditud \ No newline at end of file diff --git a/OsmAnd/res/values-fr/strings.xml b/OsmAnd/res/values-fr/strings.xml index 7df4716103..04e329659a 100644 --- a/OsmAnd/res/values-fr/strings.xml +++ b/OsmAnd/res/values-fr/strings.xml @@ -3900,4 +3900,16 @@ Connectez-vous avec OAuth Supprimer le jeton OAuth d\'OpenStreetMap Déconnexion réussie + Le fichier est déjà importé dans OsmAnd + Utiliser un algorithme de routage A* à 2 phases + Le paiement sera débité de votre compte AppGallery dès confirmation de l\'achat. +\n +\nA moins qu\'il ne soit annulé avant sa date de renouvellement, l\'abonnement sera automatiquement débité à chaque échéance (mensuelle / trimestrielle / annuelle). +\n +\nVous pouvez gérer et annuler vos abonnements dans vos paramètres AppGallery. + Seulement %1$s données disponibles sur les routes. Vous devez calculer l\'itinéraire via \"Itinéraire entre 2 points\". + Recalcul de l\'itinéraire en cours. +\nLe graphique sera disponible à l\'issue du calcul. + Pour la conduite en motoneige avec des routes et des pistes dédiées. + Graphique \ No newline at end of file diff --git a/OsmAnd/res/values-hu/phrases.xml b/OsmAnd/res/values-hu/phrases.xml index 0234cd76a2..eb5f1ef453 100644 --- a/OsmAnd/res/values-hu/phrases.xml +++ b/OsmAnd/res/values-hu/phrases.xml @@ -3553,20 +3553,20 @@ Sugárkezelés Veszély Nehézségi fok (az Orosz Túrasportszövetség skáláján) - н/к - н/к* - - 1А* - - 1Б* - - 2А* - - 2Б* - - 3А* - - 3Б* + N/A + N/A* + 1A + 1A* + 1B + 1B* + 2A + 2A* + 2B + 2B* + 3A + 3A* + 3B + 3B* Gázfáklya Törölt objektum Sugárkezelés diff --git a/OsmAnd/res/values-hu/strings.xml b/OsmAnd/res/values-hu/strings.xml index 1dd28463f8..ac040cd72f 100644 --- a/OsmAnd/res/values-hu/strings.xml +++ b/OsmAnd/res/values-hu/strings.xml @@ -3918,4 +3918,6 @@ Bejelentkezés OAuth segítségével OpenStreetMap OAuth token törlése Sikeresen kijelentkezett + Kétszakaszos A* útvonaltervezési algoritmus használata + A fájl már importálva van az OsmAndba \ No newline at end of file diff --git a/OsmAnd/res/values-iw/strings.xml b/OsmAnd/res/values-iw/strings.xml index 756dfe73dd..efe9cb3b27 100644 --- a/OsmAnd/res/values-iw/strings.xml +++ b/OsmAnd/res/values-iw/strings.xml @@ -3931,4 +3931,11 @@ להיכנס דרך OAuth למחוק את אסימון ה־OAuth של OpenStreetMap היציאה הצליחה + הקובץ כבר ייובא אל OsmAnd + להשתמש באלגוריתם חישוב מסלול דו־שלבי A*‎ + לנהיגה ברכבי שלג עם דרכים ומסלולים יעודיים. + הנתונים של %1$s זמינים בדרכים בלבד, עליך לחשב מסלול באמצעות „מסלול בין נקודות” כדי לקבל אותם. + תרשים + נא להמתין לחישוב המסלול מחדש. +\nהתרשים יהיה זמין לאחר החישוב מחדש. \ No newline at end of file diff --git a/OsmAnd/res/values-ja/phrases.xml b/OsmAnd/res/values-ja/phrases.xml index 66c5cc2a31..865fa35edc 100644 --- a/OsmAnd/res/values-ja/phrases.xml +++ b/OsmAnd/res/values-ja/phrases.xml @@ -50,8 +50,8 @@ インターネット有り レジャー クラブ - 食堂 - 軽食 + 飲食店 + カフェ・レストラン サービス 工芸 金融機関 @@ -568,9 +568,9 @@ 公園 レクリエーション広場 共有地 - 喫茶店・カフェ + カフェ ビアガーデン - レストラン・食堂 + レストラン ファーストフード バー・立ち呑み屋 フードコート @@ -1012,7 +1012,7 @@ 正面玄関 入り口 出口 - 高速道路の横断歩道 + 横断歩道 営業時間 収集時間 詳細 @@ -3834,4 +3834,5 @@ 行政区 ギブボックス(提供品置場) 簡易給水栓 + 液化天然ガス \ No newline at end of file diff --git a/OsmAnd/res/values-ja/strings.xml b/OsmAnd/res/values-ja/strings.xml index 16d59f00aa..86695fc95d 100644 --- a/OsmAnd/res/values-ja/strings.xml +++ b/OsmAnd/res/values-ja/strings.xml @@ -927,10 +927,10 @@ POIの更新は利用できません このOsmAnd 無料版はダウンロード数が%1$s個に制限されており、オフラインでのWikipedia記事利用もサポートしていません。 無料版 POIの説明文を表示 - 北米 + 北アメリカ アメリカ合衆国 - 中米 - 南米 + 中央アメリカ + 南アメリカ ヨーロッパ ヨーロッパ - フランス ヨーロッパ - ドイツ @@ -1936,7 +1936,7 @@ POIの更新は利用できません バス 鉄道 現在の経路 - バッテリーレベル + バッテリー残量 マーカーの位置を変更 マップ画面のドラッグでマーカー位置を調整できます @@ -3912,4 +3912,6 @@ POIの更新は利用できません OsmAnd Liveデータ 複雑なルート計算 カーナビゲーション向けの2段階ルート計算です。 + 2段階 A*ルーティングアルゴリズムを使用 + ファイルはすでにOsmAndにインポートされています \ No newline at end of file diff --git a/OsmAnd/res/values-nb/strings.xml b/OsmAnd/res/values-nb/strings.xml index 97364e7f2d..85bfc9b423 100644 --- a/OsmAnd/res/values-nb/strings.xml +++ b/OsmAnd/res/values-nb/strings.xml @@ -3866,4 +3866,6 @@ Logg inn via OAuth Hva er nytt Utlogget + Bruk 2-stegs A*-rutingsalgoritme + Filen er allerede importert i OsmAnd \ No newline at end of file diff --git a/OsmAnd/res/values-pt-rBR/phrases.xml b/OsmAnd/res/values-pt-rBR/phrases.xml index 07c80c478d..bcb7d4a63f 100644 --- a/OsmAnd/res/values-pt-rBR/phrases.xml +++ b/OsmAnd/res/values-pt-rBR/phrases.xml @@ -3561,14 +3561,14 @@ Radioterapia Perigo Categoria de dificuldade - н/к - н/к* - - 1А* + n/c + n/c* + 1A + 1A* 1B 1B* - 2А* + 2A* 2B 2B* diff --git a/OsmAnd/res/values-pt-rBR/strings.xml b/OsmAnd/res/values-pt-rBR/strings.xml index 514414ef4c..1ea7427da0 100644 --- a/OsmAnd/res/values-pt-rBR/strings.xml +++ b/OsmAnd/res/values-pt-rBR/strings.xml @@ -3921,4 +3921,11 @@ Entrar via OAuth Limpar token do OpenStreetMap OAuth Saída bem sucedida + O arquivo já foi importado para OsmAnd + Use o algoritmo de roteamento 2-phase A * + Para dirigir em motos de neve com estradas e trilhas exclusivas. + Gráfico + Dados de %1$s disponíveis apenas nas estradas, você precisa calcular uma rota usando “Rota entre pontos” para obtê-la. + Aguarde o recálculo da rota. +\nO gráfico estará disponível após o recálculo. \ No newline at end of file diff --git a/OsmAnd/res/values-pt/phrases.xml b/OsmAnd/res/values-pt/phrases.xml index fc6f81cb62..05bf64827a 100644 --- a/OsmAnd/res/values-pt/phrases.xml +++ b/OsmAnd/res/values-pt/phrases.xml @@ -3548,18 +3548,18 @@ Bonde Balsa Fonte de energia: biomassa - н/к - н/к* - - 1А* + n/c + n/c* + 1A + 1A* 1B 1B* - - 2А* + 2A + 2A* 2B 2B* - - 3А* + 3A + 3A* 3B 3B* Explosão de gás;Queimador de gás diff --git a/OsmAnd/res/values-pt/strings.xml b/OsmAnd/res/values-pt/strings.xml index 12f7810ed8..8179f41893 100644 --- a/OsmAnd/res/values-pt/strings.xml +++ b/OsmAnd/res/values-pt/strings.xml @@ -3928,4 +3928,11 @@ Fazer login via OAuth Limpar token do OpenStreetMap OAuth Logout bem sucedido + O ficheiro já é importado em OsmAnd + Usar algoritmo de roteamento de 2 fases A* + Para a condução de motos de neve com estradas e pistas dedicadas. + Gráfico + %1$s dados disponíveis apenas nas estradas, precisa calcular uma rota a usar \"Rota entre pontos\" para obtê-la. + Espere pelo recalculo da rota. +\nO gráfico estará disponível após o recalculo. \ No newline at end of file diff --git a/OsmAnd/res/values-ru/phrases.xml b/OsmAnd/res/values-ru/phrases.xml index d87b1f7c05..7b0db11a82 100644 --- a/OsmAnd/res/values-ru/phrases.xml +++ b/OsmAnd/res/values-ru/phrases.xml @@ -1737,7 +1737,7 @@ Тип приюта: для кошек Тип приюта: для собак и кошек Тип приюта: для лошадей - Исторический самолёт + Историческое воздушное судно Мёд С лифтом Без лифта diff --git a/OsmAnd/res/values-ru/strings.xml b/OsmAnd/res/values-ru/strings.xml index 50a4f8b4f6..1e5b9b274d 100644 --- a/OsmAnd/res/values-ru/strings.xml +++ b/OsmAnd/res/values-ru/strings.xml @@ -1336,7 +1336,7 @@ Данные о тайлах: %1$s Обзорная карта мира Время действия (в минутах) - Самолёт + Воздушное судно Лодка Пеший туризм Мотоцикл @@ -3242,8 +3242,8 @@ Буфер Logcat Настройки плагинов Язык и вывод - Переместить файлы данных OsmAnd в новое место назначения\? -\n%1$s > %2$s + Переместить файлы данных OsmAnd в новое место назначения\? +\n%1$s → %2$s По умолчанию %1$s • %2$s %1$s ГБ свободно (из %2$s ГБ) @@ -3349,7 +3349,7 @@ Выберите цвет Вы не можете удалить стандартные профили OsmAnd, но вы можете отключить их на предыдущем экране или переместить вниз. Редактировать профили - Режим навигации определяет правила расчета маршрутов. + Режим навигации определяет правила расчёта маршрутов. Внешний вид профиля Значок, цвет и имя Редактировать список профилей @@ -3580,7 +3580,7 @@ Примечание: проверка скорости > 0: большинство модулей GPS сообщают значение скорости только в том случае, если алгоритм определяет, что вы движетесь, и ничего, если вы не перемещаетесь. Следовательно, использование параметра > 0 в этом фильтре в некотором смысле приводит к обнаружению факта перемещения модуля GPS. Но даже если мы не производим данную фильтрацию во время записи, то всё равно эта функция используется при анализе GPX для определения скорректированного расстояния, то есть значение, отображаемое в этом поле, является расстоянием, записанным во время движения. Разделение записи Укажите веб-адрес со следующими параметрами: lat={0}, lon={1}, timestamp={2}, hdop={3}, altitude={4}, speed={5}, bearing={6}. - "Будут записываться только точки, отвечающие по показателю минимальной точности (в метрах или футах — зависит от настроек системы). Точность — это близость измерений к истинному положению, и она не связана напрямую с точностью, которая представляет собой разброс повторных измерений." + Будут записываться только точки, отвечающие по показателю минимальной точности (в метрах или футах — зависит от настроек системы). Точность — это близость измерений к истинному положению, и она не связана напрямую с точностью, которая представляет собой разброс повторных измерений. Рекомендация: попробуйте сначала воспользоваться детектором движения через фильтр минимального смещения (B), что может дать лучшие результаты и вы потеряете меньше данных. Если треки остаются шумными на низких скоростях, попробуйте использовать ненулевые значения. Обратите внимание, что некоторые измерения могут вообще не указывать значения скорости (некоторые сетевые методы), и в этом случае ничего не будет записываться. Для визуализации крутизны рельефа используются цвета. Подробнее об уклонах можно прочитать в %1$s. @@ -3882,7 +3882,7 @@ Остановка записи GPX при принудительном закрытии (через последние приложения). (Из панели уведомлений Android исчезнет значок фонового режима.) сохранен Добавьте хотя бы две точки. - ПОВТОРИТЬ + Повторить • Обновлённая функция планирования маршрута позволяет применять к сегментам разные режимы навигации и настраивать привязку к дорогам \n \n • Новые настройки вида треков: выбор цвета и толщины линии, указатели направления, метки начала и конца маршрута @@ -3906,9 +3906,9 @@ Избегать пешеходных дорожек Избегать пешеходных дорожек Подписка взимается за выбранный период. Отмените её в AppGallery в любое время. - Оплата будет снята с вашей учетной записи AppGallery при подтверждении покупки. + Оплата будет снята с вашей учётной записи AppGallery при подтверждении покупки. \n -\nПодписка продлевается автоматически, если она не будет отменена до даты продления. С вашего счета будет взиматься плата за период продления (месяц/три месяца/год) только в дату продления. +\nПодписка продлевается автоматически, если она не будет отменена до даты продления. С вашего счёта будет взиматься плата за период продления (месяц/три месяца/год) только в дату продления. \n \nВы можете управлять своими подписками и отменять их, перейдя в настройки AppGallery. Данные OsmAnd Live @@ -3920,4 +3920,8 @@ Войти через OAuth Очистить токен OAuth OpenStreetMap Выход выполнен - \ No newline at end of file + График + Файл уже импортирован + Дождитесь пересчёта маршрута. +\nГрафик будет доступен после пересчёта. + diff --git a/OsmAnd/res/values-sc/phrases.xml b/OsmAnd/res/values-sc/phrases.xml index 62f4c1ece8..e0a15ffcdb 100644 --- a/OsmAnd/res/values-sc/phrases.xml +++ b/OsmAnd/res/values-sc/phrases.xml @@ -3557,20 +3557,20 @@ Radioterapia Perìgulu Categoria de dificultade - н/к - н/к* - - 1А* - - 1Б* - - 2А* - - 2Б* - - 3А* - - 3Б* + n/c + n/c* + 1A + 1A* + 1B + 1B* + 2A + 2A* + 2B + 2B* + 3A + 3A* + 3B + 3B* Frama de gas;Tortza de brusiadura Ogetu iscantzelladu Radioterapia diff --git a/OsmAnd/res/values-sc/strings.xml b/OsmAnd/res/values-sc/strings.xml index ac6f4f667a..4a3d545b47 100644 --- a/OsmAnd/res/values-sc/strings.xml +++ b/OsmAnd/res/values-sc/strings.xml @@ -89,7 +89,7 @@ Preferèntzias de càrculu de s’àndala Imposta sa lestresa de sa boghe de sintetizatzione vocale (TTS). Lestresa de sa boghe - Càrculu lestru de s’àndala fallidu (%s), rinviu a su càlculu lentu. + Càrculu lestru de s’àndala fallidu (%s), rinviu a su càrculu lentu. Istuda su carculu de s’àndala in duas fases pro s’impreu in màchina. Istuta su carculu cumplessu de s’àndala Pidagnu @@ -1540,7 +1540,7 @@ Dislinda s’artària de su veìculu permìtida pro sos caminos. Non faghet rugrare sas fronteras intre sos istados Recàrculu intelligente de s’àndala - Pro biàgios longos, torra a carculare petzi su cantu initziale de s’àndala. + Torra a carculare petzi su cantu initziale de s’àndala. Podet èssere impreadu pro biàgios longos. Disabilitadu Essi Coloratzione a segunda de sa casta (afiliatzione) de àndala @@ -3824,8 +3824,8 @@ Subraiscrie sa rasta Sarva comente una rasta noa Fùrria s\'àndala - Sa rasta intrea at a èssere torrada a calculare impreende su profilu ischertadu. - Petzi su segmentu imbeniente at a èssere torradu a calculare impreende su profilu ischertadu. + Sa rasta intrea at a èssere torrada a carculare impreende su profilu ischertadu. + Petzi su segmentu imbeniente at a èssere torradu a carculare impreende su profilu ischertadu. Ischerta comente connètere sos puntos: cun una lìnia reta o calculende un\'àndala intre issos comente dislindadu inoghe in suta. Rasta intrea Segmentu imbeniente @@ -3913,4 +3913,22 @@ \nPodes amministrare e annullare sos abbonamentos tuos intrende in sas impostatziones de AppGallery tuas. Èvita sos martzapiedis Èvita sos martzapiedis + Ite b\'at de nou + Isvilupu + Datos de OsmAnd Live + Datos de OsmAnd Live + Càrculu de s\'àndala a duas fases pro sa navigatzione in màchina. + Isvilupu de sos trasportos pùblicos nativos + Cola a su càrculu de s\'àndala de sos trasportos pùblicos Java (seguru) + Intra cun OAuth pro impreare sas funtzionalidades osmedit + Intra impreende OAuth + Iscantzella su getone OAuth de OpenStreetMap + Essida fata chene problemas + Su documentu est giai importadu in OsmAnd + Imprea un\'algoritmu de càrculu de s\'àndala A* a duas fases + Pro sa ghia de motoislitas cun caminos e rastas dedicados. + Datos %1$s a disponimentu in sos caminos ebbia. Depes carculare un\'àndala impreende \"Àndala intre puntos\" pro los otènnere. + Gràficu + Iseta su càrculu nou de s\'àndala. +\nSu gràficu at a èssere a disponimentu a pustis de su càrculu. \ No newline at end of file diff --git a/OsmAnd/res/values-sk/strings.xml b/OsmAnd/res/values-sk/strings.xml index 971edf9dda..6575698d3a 100644 --- a/OsmAnd/res/values-sk/strings.xml +++ b/OsmAnd/res/values-sk/strings.xml @@ -3926,4 +3926,11 @@ Prihlásiť pomocou OAuth Vymazať token OpenStreetMap OAuth Odhlásenie úspešné + Pre jazdu na snežnom vozidle po na to určených cestách. + Súbor je už importovaný v OsmAnd + Použiť dvojfázový algoritmus A* na výpočet trasy + Graf + Údaje %1$s sú dostupné len na cestách, pre ich získanie musíte vypočítať trasu pomocou “Trasa medzi bodmi”. + Počkajte na prepočet trasy. +\nGraf bude dostupný po prepočte. \ No newline at end of file diff --git a/OsmAnd/res/values-tr/phrases.xml b/OsmAnd/res/values-tr/phrases.xml index 99b07f5d00..a4b87bee1b 100644 --- a/OsmAnd/res/values-tr/phrases.xml +++ b/OsmAnd/res/values-tr/phrases.xml @@ -269,7 +269,7 @@ Otoyol kavşağı Birleşim Dinlenme alanı - Su kaynağı + Su kuyusu Yangın musluğu Su işleri Tersane @@ -841,7 +841,7 @@ Düden Şelale Irmak - Akış + Dere Nehrin akıntılı yeri Değerli taş Pelerin @@ -1068,7 +1068,7 @@ Paket servisi Kokteyller Mikro bira imalathanesi - Servis + Hizmet Kabul edilen atık Şömine Mevsimlik @@ -1184,7 +1184,7 @@ Tırmanma kayalığı Evet Tarihi tank - Kar aracı erişimi + Kar arabası erişimi Otobüs erişimi Karavan erişimi Motokaravan erişimi @@ -1344,7 +1344,7 @@ Ziraat malzemeleri Döşeme malzemeleri Nüfus - Yeraltı + Yer altı Çok katlı Standlar Duvar döngüleri @@ -2804,15 +2804,15 @@ Sağlık çalışanının rolü: psikolog İlk yardım çantası Duvar - Yeraltı + Yer altı Sağlık merkezi türü: sahra hastanesi Sağlık merkezi türü: laboratuvar Sağlık hizmeti: aşılama: hayır Sağlık hizmeti: aşılama: evet Sağlık hizmeti: danışma: hayır Sağlık hizmeti: danışma: evet - Sağlık hizmeti: hasta bakıcılık: hayır - Sağlık hizmeti: hasta bakıcılık: evet + Sağlık hizmeti: hemşirelik: hayır + Sağlık hizmeti: hemşirelik: evet Geleneksel Tibet Geleneksel Moğol Geleneksel Çin @@ -2999,4 +2999,135 @@ Bandy Sokak dolabı Ateş çukuru + Ana + Musluk tarzı: wsh + Yer altı + Sokak + Park yeri + Şerit + Çimen + Kaldırım + Musluk akış kapasitesi + Musluk sayısı + Musluk basıncı + Musluk çapı + Ebe ofisi + Hemşirelik hizmeti + Psikolog ofisi + Şifacı ofisi + Podolog ofisi + Terapist ofisi + Doktor ofisi + Yatarak tedavi hizmetleri: yalnızca + Yatarak tedavi hizmetleri: hayır + Yatarak tedavi hizmetleri: evet + Danışma (şiddet): hayır + Danışma (şiddet): evet + Danışma (kurban): hayır + Danışma (kurban): evet + Danışma (cinsel istismar): hayır + Danışma (cinsel istismar): evet + Danışma (cinsellik): hayır + Danışma (cinsellik): evet + Danışma (rehabilitasyon): hayır + Danışma (rehabilitasyon): evet + Danışma (beslenme): hayır + Danışma (beslenme): evet + Danışma (evlilik): hayır + Danışma (evlilik): evet + Danışma (göçmen): hayır + Danışma (göçmen): evet + Danışma (eğitim): hayır + Danışma (eğitim): evet + Danışma (kriz): hayır + Danışma (kriz): evet + Danışma (çift): hayır + Danışma (çift): evet + Danışma (çocuk rehberliği): hayır + Danışma (çocuk rehberliği): evet + Danışma (doğum öncesi): evet + Danışma (doğum öncesi): hayır + Uzay üssü + Doğaya salma: hayır + Doğaya salma: evet + Sahiplenme: hayır + Sahiplenme: evet + Sahibi + Çocuk kampı + Fotoğraf stüdyosu + Beslenme takviyeleri + Hayvan besleme yeri + Destek: kule + Destek: çatı + Destek: askıda + Destek: tavan + Destek: reklam panosu + Destek: zemin + Destek: kaide + Destek: ağaç + Destek: duvar + Destek: direk + Tarih ekranı: hayır + Tarih ekranı + Pompa istasyonu + Çıkış: biyogaz + Biyogazın çıkış gücü + Çıkış: vakum + Çıkış: basınçlı hava + Basınçlı havanın çıkış gücü + Çıkış: soğuk su + Çıkış: sıcak hava + Çıkış: buhar + Çıkış: sıcak su + Sıcak suyun çıkış gücü + Çıkış (elektrik): hayır + Çıkış: elektrik + Çıkış gücü + Gerilim + Sera bahçeciliği + Yer çekimi + Meteorolojik + Kamu kullanımı için ölçekler + Konuk yönergeleri: hayır + Konuk yönergeleri: evet + Uçuşa yasak zaman (serbest uçuş) + Serbest uçuş alanı yönlendirmesi: KB + Serbest uçuş alanı yönlendirmesi: B + Serbest uçuş alanı yönlendirmesi: GB + Serbest uçuş alanı yönlendirmesi: G + Serbest uçuş alanı yönlendirmesi: GD + Serbest uçuş alanı yönlendirmesi: D + Serbest uçuş alanı yönlendirmesi: KD + Serbest uçuş alanı yönlendirmesi: K + Birden çok aile + Aile + Topluluk + Şişelenmiş su + Su deposu + Su tankeri + Sondaj + Pompa + Akan su + Boru hattı + Su kuyusu + Su arıtma tabletleri + Ters osmoz + Klor + Görünürlük: alan + Tartan + Sosyal hizmetler + Sosyal güvenlik + Elektronik tamir: alet + Güneş saati + Dijital ekran + Analog ekran + Ekran: hayır + Ekran: evet + Evet + Su deposu + Dere + Kuru varil + Sütun + Gölet + Gölet \ No newline at end of file diff --git a/OsmAnd/res/values-tr/strings.xml b/OsmAnd/res/values-tr/strings.xml index 07ec369a18..54debf38a3 100644 --- a/OsmAnd/res/values-tr/strings.xml +++ b/OsmAnd/res/values-tr/strings.xml @@ -8,7 +8,7 @@ Konum günlüğü hizmetlerini kullanmak için \"Yolculuk kaydı\" eklentisini etkinleştirin (GPX günlüğü, çevrim içi izleme) Uzak hedefler için tahmini rotayı hesapla Lütfen GPS\'yi ayarlardan açık konuma getirin - Log servisi + Günlük kayıt hizmetleri Rota yok Varış Noktasını kaldır Varış noktası %1$s @@ -78,7 +78,7 @@ Uygulamayı güvenli modda çalıştırın (yerel kod yerine daha yavaş Android kullanarak). Güvenli kip Uygulama güvenli modda çalışıyor (\'Ayarlar\'dan kapatın). - OsmAnd arka plan hizmeti hala çalışıyor. Onu da durdur\? + OsmAnd arka plan hizmeti hala çalışıyor. O da durdurulsun mu\? Ses/Video verisi Navigasyonu durdurmak istediğinizden emin misiniz\? Hedefi (ve ara hedefleri) temizlemek istediğinizden emin misiniz\? @@ -837,7 +837,7 @@ Konum sağlayıcı Ekran kapalıyken konumunuzu izler. Arka planda Osmand başlat - Arka plan navigasyon hizmeti açık olması bir konum sağlayıcı gerektirir. + Arka plan navigasyon hizmeti, bir konum sağlayıcının açık olmasını gerektirir. Süzgeci gizle Süzgeci göster Süzgeç @@ -881,7 +881,7 @@ Çevrim içi arama: Ev numarası, sokak, şehir Çevrim dışı arama Toplam uzaklık %1$s, seyahat süresi %2$d s %3$d dak. - Çevrim içi veya çevrim dışı navigasyon servisi. + Çevrim içi veya çevrim dışı navigasyon hizmeti. Bellek kartındaki depolama klasörüne erişilemiyor! {0} - {1} indir ? {0} için çevrim dışı veri zaten var ({1}). ({2}) güncellensin mi\? @@ -1065,7 +1065,7 @@ Tekrar deneyin Eski uyumsuz Wikipedia verileriniz var. Arşivle\? Ekstra Wikipedia verilerini indir (%1$s MB)\? - Konum servisi kapalı. Aç\? + Konum hizmeti kapalı. Açılsın mı\? Ayrıntıları göster Devre dışı Ev kapı numaraları @@ -1457,8 +1457,8 @@ OSM notları (çevrim içi) Haritayı hareket ettirmek için bir izleme topu aygıtı kullanın. İzleme topu kullan - Arka plan servisi tarafından kullanılan uyanma aralığı: - Arka plan servisi tarafından kullanılan konum yöntemi: + Arka plan hizmeti tarafından kullanılan uyanma aralığı: + Arka plan hizmeti tarafından kullanılan konum yöntemi: Düz gidin Ekran yönlendirme Hiçbir adres belirlenmedi @@ -1466,9 +1466,9 @@ Durakta ulaşım aracı ara Harita yönlendirme \'\'{0}\'\' indeks sürümü desteklenmemektedir - OsmAnd çevrim dışı navigasyon deneysel bir özelliktir ve yaklaşık 20 km\'den daha uzun mesafelerde çalışmaz. -\n -\nNavigasyon geçici olarak çevrim içi CloudMade servisine geçti. + OsmAnd çevrim dışı navigasyon deneysel bir özelliktir ve yaklaşık 20 km\'den daha uzun mesafelerde çalışmaz. +\n +\nNavigasyon geçici olarak çevrim içi CloudMade hizmetine geçti. OsmAnd Yükle - {1} {2} üzerinden {0} MB \? Yakınlaştırma {0} indirmek {1} fayans ({2} MB) Önceden yükleme için en fazla yakınlaştırma @@ -1595,7 +1595,7 @@ Baskça Belarusça Boşnakça - Noktalar arasındaki rotayı hesaplamak + Noktalar arasındaki güzergahı hesapla Konumu sürekli ortada tut Ses Çeşitli @@ -1791,7 +1791,7 @@ Svahili dili İbranice İleri - GPX kaydı açıksa, izleme verilerini belirtilen bir web servisine gönder. + GPX kaydı açıksa, izleme verilerini belirtilen bir web hizmetine gönder. Online izleme (GPX gerekli) Online izleme başlat Online izleme durdurun @@ -2282,7 +2282,7 @@ Geçilmiş-olanı göster Geçilmiş-olanı gizle Haritada harita işaretleyicilerine olan uzaklık ve yönün nasıl belirtileceğini seçin: - Harita oryantasyon eşiği + Harita yönlendirme eşiği Harita yönünün \'Hareket yönü\'nden \'Pusula yönü\'ne geçiş hızını aşağıdan seçin. Rota noktaları olarak kaydet Öncesinde nokta ekle @@ -2362,7 +2362,7 @@ Gezin İçerikler Sonuç - Seyehat + Seyahat rehberleri Toplam Tüm başlangıç noktalarını temizle Grup silindi @@ -3881,4 +3881,11 @@ OAuth ile oturum aç OpenStreetMap OAuth belirtecini temizle Oturum kapatma başarılı + Dosya zaten OsmAnd\'da içe aktarıldı + 2 aşamalı A* yönlendirme algoritması kullan + Ayrılmış yollar ve parkurlarla kar arabası sürüşü için. + Grafik + %1$s verileri yalnızca yollarda kullanılabilir, elde etmek için “Noktalar arasındaki güzergah” kullanarak bir rota hesaplamanız gerekir. + Güzergahın yeniden hesaplanmasını bekleyin. +\nGrafik yeniden hesaplandıktan sonra kullanılabilir olacak. \ No newline at end of file diff --git a/OsmAnd/res/values-tzm/strings.xml b/OsmAnd/res/values-tzm/strings.xml new file mode 100644 index 0000000000..a6b3daec93 --- /dev/null +++ b/OsmAnd/res/values-tzm/strings.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/OsmAnd/res/values-uk/strings.xml b/OsmAnd/res/values-uk/strings.xml index 8ba9a9906f..f93a7c0156 100644 --- a/OsmAnd/res/values-uk/strings.xml +++ b/OsmAnd/res/values-uk/strings.xml @@ -1147,7 +1147,7 @@ %1$s \nТрек %2$s З’єднатись - Розрахувати маршрут між точками + Обчислити маршрут між точками Відображати позицію завжди в центрі Голос Різне @@ -2293,17 +2293,17 @@ OsmAnd (OSM Automated Navigation Directions) — застосунок для мап і навігації з доступом до безкоштовних глобальних високоякісних даних OpenStreetMap (OSM). \n \nНасолоджуйтесь голосовою та візуальною навігацією, переглядом цікавих точок (англ. POI), створенням та керуванням GPX-треками, використовуючи відображення горизонталей та даних про висоту (за допомогою зовнішнього втулка), вибором між режимами автомобіліста, велосипедиста й пішохода, редагуванням OSM та ще багато чим іншим. - GPS навігація -\n • Вибір між автономним режимом (без зборів за роумінг за кордоном) або через Інтернет (швидше) -\n • Покрокові голосові підказки доставить Вас до місця призначення (записані чи синтезовані голоси) -\n • Повторна маршрутизація кожен раз після відхилення від маршруту -\n • Смуги руху, назви вулиць і приблизний час прибуття допоможуть Вам на шляху -\n • Для того, щоб зробити Вашу подорож безпечнішою, режим дня/ночі автоматично перемикається -\n • Відображення обмежень швидкості та попередження про її перевищення -\n • Мапа масштабується відповідно до Вашої швидкості -\n • Шукати місця за адресою, типом (наприклад, паркування, ресторан, готель, заправна станція, музей) чи географічними координатами -\n • Підтримка проміжних точок на Вашому маршруті -\n • Запис свого власного GPX-треку чи вивантаження готового і слідування за ним + GPS навігація +\n • Вибір між автономним режимом (без зборів за роумінг за кордоном) або через Інтернет (швидше) +\n • Покрокові голосові підказки доставить Вас до місця призначення (записані чи синтезовані голоси) +\n • Повторна маршрутизація кожен раз після відхилення від маршруту +\n • Смуги руху, назви вулиць і приблизний час прибуття допоможуть Вам на шляху +\n • Для того, щоб зробити Вашу подорож безпечнішою, режим дня/ночі автоматично перемикається +\n • Показ обмежень швидкості та попередження про її перевищення +\n • Мапа масштабується відповідно до Вашої швидкості +\n • Шукати місця за адресою, типом (наприклад, паркування, ресторан, готель, заправна станція, музей) чи географічними координатами +\n • Підтримка проміжних точок на Вашому маршруті +\n • Запис свого власного GPX-треку чи вивантаження готового і слідування за ним \n Мапа \n• Відображає POI (цікаві точки) навколо вас @@ -3922,4 +3922,11 @@ Уникати пішохідних шляхів Уникати пішохідних шляхів Розробка + Файл уже імпортовано до OsmAnd + Використання 2-фазного A* алгоритму маршрутизації + Для їзди на снігоходах із відведеними дорогами та трасами. + Графік + %1$s дані доступні лише для доріг, вам потрібно обчислити маршрут за допомогою «Маршрут між точками», щоб отримати його. + Дочекайтеся переобчислення маршруту. +\nГрафік буде доступний після переобчислення. \ No newline at end of file diff --git a/OsmAnd/res/values-zh-rTW/phrases.xml b/OsmAnd/res/values-zh-rTW/phrases.xml index e36aa4414d..add05fe4a7 100644 --- a/OsmAnd/res/values-zh-rTW/phrases.xml +++ b/OsmAnd/res/values-zh-rTW/phrases.xml @@ -3561,20 +3561,20 @@ 危險 難度分類 放射治療 - н/к - н/к* - - 1А* - - 1Б* - - 2А* - - 2Б* - - 3А* - - 3Б* + n/c + n/c* + 1A + 1A* + 1B + 1B* + 2A + 2A* + 2B + 2B* + 3A + 3A* + 3B + 3B* 燃燒塔 已刪除的物件 攀岩 diff --git a/OsmAnd/res/values-zh-rTW/strings.xml b/OsmAnd/res/values-zh-rTW/strings.xml index a5eb5c24fb..d84b6fcd82 100644 --- a/OsmAnd/res/values-zh-rTW/strings.xml +++ b/OsmAnd/res/values-zh-rTW/strings.xml @@ -3921,4 +3921,11 @@ 透過 OAuth 登入 清除 OpenStreetMap OAuth 權杖 成功登出 + 適用於有專用道路與軌道的雪地摩托車駕駛。 + 檔案已在 OsmAnd 匯入 + 使用 2 相的 A* 路線演算法 + 圖表 + %1$s 資料僅供道路使用,您需要使用「兩點間的路線」來計算路線。 + 等待路線重新計算。 +\n重新計算後即可使用圖表。 \ No newline at end of file diff --git a/OsmAnd/res/values/phrases.xml b/OsmAnd/res/values/phrases.xml index 87c5c7b4d6..04b193b923 100644 --- a/OsmAnd/res/values/phrases.xml +++ b/OsmAnd/res/values/phrases.xml @@ -4206,7 +4206,7 @@ Yes No - Signal to find the pole + Internet access: customers Only when walking is allowed Contrasted Primitive @@ -4259,5 +4259,10 @@ LNG + GPX point + + Rooftop + Sheds + Layby diff --git a/OsmAnd/src/net/osmand/plus/OsmandPlugin.java b/OsmAnd/src/net/osmand/plus/OsmandPlugin.java index 4e9ca3d420..e86b64df43 100644 --- a/OsmAnd/src/net/osmand/plus/OsmandPlugin.java +++ b/OsmAnd/src/net/osmand/plus/OsmandPlugin.java @@ -46,7 +46,6 @@ import net.osmand.plus.quickaction.QuickActionType; import net.osmand.plus.rastermaps.OsmandRasterMapsPlugin; import net.osmand.plus.search.QuickSearchDialogFragment; import net.osmand.plus.settings.backend.ApplicationMode; -import net.osmand.plus.settings.backend.OsmandSettings; import net.osmand.plus.settings.backend.CommonPreference; import net.osmand.plus.settings.backend.OsmandPreference; import net.osmand.plus.settings.fragments.BaseSettingsFragment; @@ -499,6 +498,9 @@ public abstract class OsmandPlugin { public void mapActivityResume(MapActivity activity) { } + public void mapActivityResumeOnTop(MapActivity activity) { + } + public void mapActivityPause(MapActivity activity) { } @@ -752,6 +754,12 @@ public abstract class OsmandPlugin { } } + public static void onMapActivityResumeOnTop(MapActivity activity) { + for (OsmandPlugin plugin : getEnabledPlugins()) { + plugin.mapActivityResumeOnTop(activity); + } + } + public static void onMapActivityPause(MapActivity activity) { for (OsmandPlugin plugin : getEnabledPlugins()) { plugin.mapActivityPause(activity); diff --git a/OsmAnd/src/net/osmand/plus/activities/MapActivity.java b/OsmAnd/src/net/osmand/plus/activities/MapActivity.java index 77acb11bf0..53d3fcf473 100644 --- a/OsmAnd/src/net/osmand/plus/activities/MapActivity.java +++ b/OsmAnd/src/net/osmand/plus/activities/MapActivity.java @@ -74,10 +74,6 @@ import net.osmand.plus.OsmAndConstants; import net.osmand.plus.OsmAndLocationSimulation; import net.osmand.plus.OsmandApplication; import net.osmand.plus.OsmandPlugin; -import net.osmand.plus.dashboard.DashBaseFragment; -import net.osmand.plus.helpers.DayNightHelper; -import net.osmand.plus.settings.backend.CommonPreference; -import net.osmand.plus.settings.backend.OsmandSettings; import net.osmand.plus.R; import net.osmand.plus.TargetPointsHelper; import net.osmand.plus.TargetPointsHelper.TargetPoint; @@ -88,6 +84,7 @@ import net.osmand.plus.base.ContextMenuFragment; import net.osmand.plus.base.FailSafeFuntions; import net.osmand.plus.base.MapViewTrackingUtilities; import net.osmand.plus.chooseplan.OsmLiveCancelledDialog; +import net.osmand.plus.dashboard.DashBaseFragment; import net.osmand.plus.dashboard.DashboardOnMap; import net.osmand.plus.dialogs.CrashBottomSheetDialogFragment; import net.osmand.plus.dialogs.ImportGpxBottomSheetDialogFragment; @@ -101,13 +98,14 @@ import net.osmand.plus.download.ui.DataStoragePlaceDialogFragment; import net.osmand.plus.firstusage.FirstUsageWelcomeFragment; import net.osmand.plus.firstusage.FirstUsageWizardFragment; import net.osmand.plus.helpers.AndroidUiHelper; +import net.osmand.plus.helpers.DayNightHelper; import net.osmand.plus.helpers.DiscountHelper; -import net.osmand.plus.importfiles.ImportHelper; import net.osmand.plus.helpers.IntentHelper; import net.osmand.plus.helpers.LockHelper; import net.osmand.plus.helpers.LockHelper.LockUIAdapter; import net.osmand.plus.helpers.ScrollHelper; import net.osmand.plus.helpers.ScrollHelper.OnScrollEventListener; +import net.osmand.plus.importfiles.ImportHelper; import net.osmand.plus.mapcontextmenu.AdditionalActionsBottomSheetDialogFragment; import net.osmand.plus.mapcontextmenu.MapContextMenu; import net.osmand.plus.mapcontextmenu.MenuController; @@ -133,7 +131,9 @@ import net.osmand.plus.search.QuickSearchDialogFragment; import net.osmand.plus.search.QuickSearchDialogFragment.QuickSearchTab; import net.osmand.plus.search.QuickSearchDialogFragment.QuickSearchType; import net.osmand.plus.settings.backend.ApplicationMode; +import net.osmand.plus.settings.backend.CommonPreference; import net.osmand.plus.settings.backend.OsmAndAppCustomization.OsmAndAppCustomizationListener; +import net.osmand.plus.settings.backend.OsmandSettings; import net.osmand.plus.settings.fragments.BaseSettingsFragment; import net.osmand.plus.settings.fragments.BaseSettingsFragment.SettingsScreenType; import net.osmand.plus.settings.fragments.ConfigureProfileFragment; @@ -886,6 +886,13 @@ public class MapActivity extends OsmandActionBarActivity implements DownloadEven settings.USE_SYSTEM_SCREEN_TIMEOUT.addListener(useSystemScreenTimeoutListener); } + @Override + public void onTopResumedActivityChanged(boolean isTopResumedActivity) { + if (isTopResumedActivity) { + OsmandPlugin.onMapActivityResumeOnTop(this); + } + } + public void applyScreenOrientation() { if (settings.MAP_SCREEN_ORIENTATION.get() != getRequestedOrientation()) { setRequestedOrientation(settings.MAP_SCREEN_ORIENTATION.get()); diff --git a/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java b/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java index a68a8bc749..0a99d15b03 100644 --- a/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java +++ b/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java @@ -893,7 +893,7 @@ public class AudioVideoNotesPlugin extends OsmandPlugin { } @Override - public void mapActivityResume(MapActivity activity) { + public void mapActivityResumeOnTop(MapActivity activity) { this.mapActivity = activity; // ((AudioManager) activity.getSystemService(Context.AUDIO_SERVICE)).registerMediaButtonEventReceiver( // new ComponentName(activity, MediaRemoteControlReceiver.class)); diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/PointEditorFragmentNew.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/PointEditorFragmentNew.java index 0bc215c366..c487b7acc6 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/PointEditorFragmentNew.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/PointEditorFragmentNew.java @@ -632,7 +632,7 @@ public abstract class PointEditorFragmentNew extends BaseOsmAndFragment { iconCategoriesRecyclerView.setAdapter(horizontalSelectionAdapter); iconCategoriesRecyclerView.setLayoutManager(new LinearLayoutManager(app, RecyclerView.HORIZONTAL, false)); horizontalSelectionAdapter.notifyDataSetChanged(); - iconCategoriesRecyclerView.smoothScrollToPosition(horizontalSelectionAdapter.getItemPosition(selectedIconCategory)); + iconCategoriesRecyclerView.smoothScrollToPosition(horizontalSelectionAdapter.getItemPositionByTitle(selectedIconCategory)); for (String name : iconNameList) { selectIcon.addView(createIconItemView(name, selectIcon), new FlowLayout.LayoutParams(0, 0)); } diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/other/HorizontalSelectionAdapter.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/other/HorizontalSelectionAdapter.java index 0eb3c3b21e..06783d6f50 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/other/HorizontalSelectionAdapter.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/other/HorizontalSelectionAdapter.java @@ -110,13 +110,16 @@ public class HorizontalSelectionAdapter extends RecyclerView.Adapter getAllRouteSegments() { - // prepare data for sorting - List fullList = new ArrayList<>(); - for (Map.Entry, RoadSegmentData> entry : roadSegmentData.entrySet()) { - fullList.add(new TmpRouteSegmentData( - entry.getKey().first, - entry.getKey().second, - entry.getValue().getSegments())); - } - // sorting data by connecting together - while (fullList.size() > 1) { - TmpRouteSegmentData firstInList = fullList.get(0); - for (int i = 1; i < fullList.size(); i++) { - TmpRouteSegmentData other = fullList.get(i); - boolean isMatched = false; - - if (firstInList.isAfterOf(other)) { - isMatched = true; - firstInList.joinBefore(other); - } else if (firstInList.isBeforeOf(other)) { - isMatched = true; - firstInList.joinAfter(other); - } - - if (isMatched) { - fullList.remove(other); - break; + List allSegments = new ArrayList<>(); + for (Pair key : getOrderedRoadSegmentDataKeys()) { + RoadSegmentData data = roadSegmentData.get(key); + if (data != null) { + List segments = data.getSegments(); + if (segments != null) { + allSegments.addAll(segments); } } } - return fullList.size() > 0 ? fullList.get(0).getRouteSegments() : null; - } - - private static class TmpRouteSegmentData { - private WptPt start; - private WptPt end; - private List routeSegments; - - public TmpRouteSegmentData(WptPt start, WptPt end, - List routeSegments) { - this.start = start; - this.end = end; - this.routeSegments = new ArrayList<>(routeSegments); - } - - boolean isAfterOf(TmpRouteSegmentData other) { - return Algorithms.objectEquals(this.start, other.end); - } - - boolean isBeforeOf(TmpRouteSegmentData other) { - return Algorithms.objectEquals(this.end, other.start); - } - - void joinAfter(TmpRouteSegmentData other) { - end = other.end; - routeSegments.addAll(other.routeSegments); - } - - void joinBefore(TmpRouteSegmentData other) { - start = other.start; - routeSegments.addAll(0, other.routeSegments); - } - - public List getRouteSegments() { - return routeSegments; - } + return allSegments.size() > 0 ? allSegments : null; } void splitSegments(int position) { @@ -501,6 +447,16 @@ public class MeasurementEditingContext { return res; } + private List> getOrderedRoadSegmentDataKeys() { + List> keys = new ArrayList<>(); + for (List points : Arrays.asList(before.points, after.points)) { + for (int i = 0; i < points.size() - 1; i++) { + keys.add(new Pair<>(points.get(i), points.get(i + 1))); + } + } + return keys; + } + private void recreateCacheForSnap(TrkSegment cache, TrkSegment original, boolean calculateIfNeeded) { boolean hasDefaultModeOnly = true; if (original.points.size() > 1) { diff --git a/OsmAnd/src/net/osmand/plus/osmedit/OpenstreetmapRemoteUtil.java b/OsmAnd/src/net/osmand/plus/osmedit/OpenstreetmapRemoteUtil.java index 393dd7d965..b90a22c0b9 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/OpenstreetmapRemoteUtil.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/OpenstreetmapRemoteUtil.java @@ -18,6 +18,7 @@ import net.osmand.osm.edit.Entity.EntityType; import net.osmand.osm.edit.EntityInfo; import net.osmand.osm.edit.Node; import net.osmand.osm.edit.Way; +import net.osmand.osm.io.Base64; import net.osmand.osm.io.NetworkUtils; import net.osmand.osm.io.OsmBaseStorage; import net.osmand.plus.OsmandApplication; @@ -30,10 +31,8 @@ import org.apache.commons.logging.Log; import org.xmlpull.v1.XmlPullParserException; import org.xmlpull.v1.XmlSerializer; -import java.io.ByteArrayInputStream; -import java.io.File; -import java.io.IOException; -import java.io.StringWriter; +import java.io.*; +import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.text.MessageFormat; import java.util.HashMap; @@ -108,14 +107,16 @@ public class OpenstreetmapRemoteUtil implements OpenstreetmapUtil { boolean doAuthenticate) { log.info("Sending request " + url); //$NON-NLS-1$ try { - if (doAuthenticate){ - OsmOAuthAuthorizationAdapter client = new OsmOAuthAuthorizationAdapter(ctx); - Response response = client.performRequest(url,requestMethod,requestBody); - return response.getBody(); - } - else { - OsmOAuthAuthorizationAdapter client = new OsmOAuthAuthorizationAdapter(ctx); - Response response = client.performRequestWithoutAuth(url,requestMethod,requestBody); + OsmOAuthAuthorizationAdapter client = new OsmOAuthAuthorizationAdapter(ctx); + if (doAuthenticate) { + if (client.isValidToken()) { + Response response = client.performRequest(url, requestMethod, requestBody); + return response.getBody(); + } else { + return performBasicAuthRequest(url, requestMethod, requestBody, userOperation); + } + } else { + Response response = client.performRequestWithoutAuth(url, requestMethod, requestBody); return response.getBody(); } } catch (NullPointerException e) { @@ -135,7 +136,7 @@ public class OpenstreetmapRemoteUtil implements OpenstreetmapUtil { log.error(userOperation + " " + ctx.getString(R.string.failed_op), e); //$NON-NLS-1$ showWarning(MessageFormat.format(ctx.getResources().getString(R.string.shared_string_action_template) + ": " + ctx.getResources().getString(R.string.shared_string_unexpected_error), userOperation)); - } catch (ExecutionException e) { + } catch (Exception e) { log.error(userOperation + " " + ctx.getString(R.string.failed_op), e); //$NON-NLS-1$ showWarning(MessageFormat.format(ctx.getResources().getString(R.string.shared_string_action_template) + ": " + ctx.getResources().getString(R.string.shared_string_unexpected_error), userOperation)); @@ -144,6 +145,55 @@ public class OpenstreetmapRemoteUtil implements OpenstreetmapUtil { return null; } + private String performBasicAuthRequest(String url, String requestMethod, String requestBody, String userOperation) throws IOException { + HttpURLConnection connection = NetworkUtils.getHttpURLConnection(url); + connection.setConnectTimeout(15000); + connection.setRequestMethod(requestMethod); + connection.setRequestProperty("User-Agent", Version.getFullVersion(ctx)); //$NON-NLS-1$ + StringBuilder responseBody = new StringBuilder(); + String token = settings.USER_NAME.get() + ":" + settings.USER_PASSWORD.get(); //$NON-NLS-1$ + connection.addRequestProperty("Authorization", "Basic " + Base64.encode(token.getBytes("UTF-8"))); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + connection.setDoInput(true); + if (requestMethod.equals("PUT") || requestMethod.equals("POST") || requestMethod.equals("DELETE")) { //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + connection.setDoOutput(true); + connection.setRequestProperty("Content-type", "text/xml"); //$NON-NLS-1$ //$NON-NLS-2$ + OutputStream out = connection.getOutputStream(); + if (requestBody != null) { + BufferedWriter bwr = new BufferedWriter(new OutputStreamWriter(out, "UTF-8"), 1024); //$NON-NLS-1$ + bwr.write(requestBody); + bwr.flush(); + } + out.close(); + } + connection.connect(); + if (connection.getResponseCode() != HttpURLConnection.HTTP_OK) { + String msg = userOperation + + " " + ctx.getString(R.string.failed_op) + " : " + connection.getResponseMessage(); //$NON-NLS-1$//$NON-NLS-2$ + log.error(msg); + showWarning(msg); + } else { + log.info("Response : " + connection.getResponseMessage()); //$NON-NLS-1$ + // populate return fields. + responseBody.setLength(0); + InputStream i = connection.getInputStream(); + if (i != null) { + BufferedReader in = new BufferedReader(new InputStreamReader(i, "UTF-8"), 256); //$NON-NLS-1$ + String s; + boolean f = true; + while ((s = in.readLine()) != null) { + if (!f) { + responseBody.append("\n"); //$NON-NLS-1$ + } else { + f = false; + } + responseBody.append(s); + } + } + return responseBody.toString(); + } + return null; + } + public long openChangeSet(String comment) { long id = -1; StringWriter writer = new StringWriter(256); diff --git a/OsmAnd/src/net/osmand/plus/settings/bottomsheets/VehicleParametersBottomSheet.java b/OsmAnd/src/net/osmand/plus/settings/bottomsheets/VehicleParametersBottomSheet.java index 9d3275e8fd..b3f160f910 100644 --- a/OsmAnd/src/net/osmand/plus/settings/bottomsheets/VehicleParametersBottomSheet.java +++ b/OsmAnd/src/net/osmand/plus/settings/bottomsheets/VehicleParametersBottomSheet.java @@ -122,7 +122,7 @@ public class VehicleParametersBottomSheet extends BasePreferenceBottomSheet { } selectedItem = preference.getEntryFromValue(String.valueOf(currentValue)); adapter.setSelectedItemByTitle(selectedItem); - int itemPosition = adapter.getItemPosition(selectedItem); + int itemPosition = adapter.getItemPositionByTitle(selectedItem); if (itemPosition >= 0) { recyclerView.smoothScrollToPosition(itemPosition); }