diff --git a/OsmAnd-java/src/net/osmand/osm/MapPoiTypes.java b/OsmAnd-java/src/net/osmand/osm/MapPoiTypes.java index 73256ca461..004dad0f1e 100644 --- a/OsmAnd-java/src/net/osmand/osm/MapPoiTypes.java +++ b/OsmAnd-java/src/net/osmand/osm/MapPoiTypes.java @@ -168,7 +168,8 @@ public class MapPoiTypes { public Map getAllTranslatedNames(boolean skipNonEditable) { Map translation = new HashMap(); - for (PoiCategory pc : categories) { + for (int i = 0; i < categories.size(); i++) { + PoiCategory pc = categories.get(i); if (skipNonEditable && pc.isNotEditableOsm()) { continue; } diff --git a/OsmAnd-java/src/net/osmand/util/GeoPointParserUtil.java b/OsmAnd-java/src/net/osmand/util/GeoPointParserUtil.java index 8f472ce0a0..ca351448c2 100644 --- a/OsmAnd-java/src/net/osmand/util/GeoPointParserUtil.java +++ b/OsmAnd-java/src/net/osmand/util/GeoPointParserUtil.java @@ -368,6 +368,12 @@ public class GeoPointParserUtil { System.out.println("url: " + url); actual = GeoPointParserUtil.parse(url); assertGeoPoint(actual, new GeoParsedPoint(ilat, ilon, z)); + + // https://maps.google.com/maps?q=loc:-21.8835112,-47.7838932 (Name) + url = "https://maps.google.com/maps?q=loc:" + dlat + "," + dlon + " (Name)" ; + System.out.println("url: " + url); + actual = GeoPointParserUtil.parse(url); + assertGeoPoint(actual, new GeoParsedPoint(dlat, dlon)); // http://maps.google.com/maps/ll=34.99393,-106.61568,z=11 url = "http://maps.google.com/maps/ll=" + dlat + "," + dlon + ",z=" + z; diff --git a/OsmAnd/.gitignore b/OsmAnd/.gitignore index 44d8d7654f..a80b324b3d 100644 --- a/OsmAnd/.gitignore +++ b/OsmAnd/.gitignore @@ -1,3 +1,7 @@ +gradle +gradlew +gradlew.bat + valgrind/ bin/ dist/ diff --git a/OsmAnd/build.gradle b/OsmAnd/build.gradle index f6ba50073e..38697f2e4b 100644 --- a/OsmAnd/build.gradle +++ b/OsmAnd/build.gradle @@ -385,10 +385,10 @@ dependencies { // compile project(':eclipse-compile:design') // compile project(':eclipse-compile:cardview') // compile project(':eclipse-compile:gridlayout') - compile 'com.android.support:gridlayout-v7:25.3.1' - compile 'com.android.support:cardview-v7:25.3.1' - compile 'com.android.support:appcompat-v7:25.3.1' - compile 'com.android.support:design:25.3.1' + compile 'com.android.support:gridlayout-v7:25.+' + compile 'com.android.support:cardview-v7:25.+' + compile 'com.android.support:appcompat-v7:25.+' + compile 'com.android.support:design:25.+' compile fileTree(include: ['*.jar'], exclude: ['QtAndroid-bundled.jar', 'QtAndroidAccessibility-bundled.jar', 'OsmAndCore_android.jar', 'OsmAndCore_wrapper.jar', 'android-support-multidex.jar'], dir: 'libs') legacyCompile "net.osmand:OsmAndCore_android:0.1-SNAPSHOT@jar" qtcoredebugCompile "net.osmand:OsmAndCore_androidNativeDebug:0.1-SNAPSHOT@aar" diff --git a/OsmAnd/project.properties b/OsmAnd/project.properties index 888b636da6..8fd374a9b4 100644 --- a/OsmAnd/project.properties +++ b/OsmAnd/project.properties @@ -10,7 +10,7 @@ # Indicates whether an apk should be generated for each density. split.density=false # Project target. -target=android-23 +target=android-26 dex.force.jumbo=true android.library.reference.1=../eclipse-compile/appcompat android.library.reference.2=../eclipse-compile/design diff --git a/OsmAnd/res/layout-land/map_hud_top.xml b/OsmAnd/res/layout-land/map_hud_top.xml index 0d57ea346b..e651de0368 100644 --- a/OsmAnd/res/layout-land/map_hud_top.xml +++ b/OsmAnd/res/layout-land/map_hud_top.xml @@ -399,7 +399,7 @@ android:layout_height="56dp" android:layout_gravity="top" android:contentDescription="@string/back_to_search" - android:src="@drawable/abc_ic_ab_back_material"/> + android:src="@drawable/ic_arrow_back"/> + android:src="@drawable/ic_arrow_back"/> diff --git a/OsmAnd/res/layout/gpx_split_segment_fragment.xml b/OsmAnd/res/layout/gpx_split_segment_fragment.xml index 788f97561c..4741ce93ef 100644 --- a/OsmAnd/res/layout/gpx_split_segment_fragment.xml +++ b/OsmAnd/res/layout/gpx_split_segment_fragment.xml @@ -309,7 +309,7 @@ android:layout_height="wrap_content" android:layout_marginTop="3dp" android:background="@null" - android:text="@string/range" + android:text="@string/range_min_max" android:textColor="?android:attr/textColorSecondary" android:textSize="@dimen/default_split_segments_sub" /> diff --git a/OsmAnd/res/layout/map_hud_quick_actions.xml b/OsmAnd/res/layout/map_hud_quick_actions.xml index 27ca1ada1c..d6536d8d4c 100644 --- a/OsmAnd/res/layout/map_hud_quick_actions.xml +++ b/OsmAnd/res/layout/map_hud_quick_actions.xml @@ -15,7 +15,6 @@ android:id="@+id/map_quick_actions_button" android:layout_width="@dimen/map_button_size" android:layout_height="@dimen/map_button_size" - android:background="@drawable/btn_circle_blue" android:contentDescription="@string/configure_screen_quick_action" android:layout_gravity="bottom|right" android:visibility="gone" diff --git a/OsmAnd/res/layout/map_hud_top.xml b/OsmAnd/res/layout/map_hud_top.xml index 8965c3c2a4..5b1ac584ba 100644 --- a/OsmAnd/res/layout/map_hud_top.xml +++ b/OsmAnd/res/layout/map_hud_top.xml @@ -176,7 +176,7 @@ android:layout_height="56dp" android:layout_gravity="top" android:contentDescription="@string/back_to_search" - android:src="@drawable/abc_ic_ab_back_material"/> + android:src="@drawable/ic_arrow_back"/> زمن التنقل نطاق أقصى/أدنى + المدى = الأدنى/الأقصى diff --git a/OsmAnd/res/values-az/strings.xml b/OsmAnd/res/values-az/strings.xml index 93ed866e06..2d98ac11c4 100644 --- a/OsmAnd/res/values-az/strings.xml +++ b/OsmAnd/res/values-az/strings.xml @@ -1628,4 +1628,5 @@ Düzəlişlərin sayı Hesabat: Fayl adında dəstəklənməyən simvol var + Qeyd edilən izləri aylıq qovluqlarda saxla diff --git a/OsmAnd/res/values-be-rBY/strings.xml b/OsmAnd/res/values-be-rBY/strings.xml index 1965be517a..08cec45129 100644 --- a/OsmAnd/res/values-be-rBY/strings.xml +++ b/OsmAnd/res/values-be-rBY/strings.xml @@ -2932,4 +2932,5 @@ Moduli: Čas ruchu Maks./Min. Interval + Adliehlasć = Min./Maks. diff --git a/OsmAnd/res/values-be/strings.xml b/OsmAnd/res/values-be/strings.xml index d8082dbcd5..cc16df621e 100644 --- a/OsmAnd/res/values-be/strings.xml +++ b/OsmAnd/res/values-be/strings.xml @@ -2981,4 +2981,5 @@ OsmAnd мае адкрыты зыходны код і актыўна разві Час руху Макс./Мін. Інтэрвал + Адлегласць = Мін./Макс. diff --git a/OsmAnd/res/values-ca/phrases.xml b/OsmAnd/res/values-ca/phrases.xml index 462c8a109e..05bb276c05 100644 --- a/OsmAnd/res/values-ca/phrases.xml +++ b/OsmAnd/res/values-ca/phrases.xml @@ -89,7 +89,7 @@ Estació de protecció civil Gual Tanca llevadissa - Punt de control duaner + Control de fronteres Banda reductora Ressalt Coixí berlinès diff --git a/OsmAnd/res/values-ca/strings.xml b/OsmAnd/res/values-ca/strings.xml index ae3c611230..c9af5d07e7 100644 --- a/OsmAnd/res/values-ca/strings.xml +++ b/OsmAnd/res/values-ca/strings.xml @@ -358,10 +358,8 @@ Memòria proporcional %4$s MB (límit de l\'Android %5$s MB, Dalvik %6$s MB).Llegint les tessel·les emmagatzemades… No s\'ha trobat la carpeta especificada. Carpeta d\'emmagatzematge de dades - "OsmAnd (OSM Automated Navigation Directions) L\'OsmAnd és una aplicació de navegació de codi obert amb accés a una gran varietat de dades globals d\'OpenStreetMap (OSM). Totes les dades dels mapes (siguin mapes vectorials o de tessel·les), es poden desar a la targeta de memòria del telèfon pel seu en desconnexió. L\'OsmAnd també calcula rutes, amb connexió o sense, incloent l\'orientació per veu. Algunes de les característiques principals: - Funcionament complet en desconnexió (desa localment els mapes vectorials i de tessel·les baixats) - Mapes vectorials compactes de tot el món per usar en desconnexió -\n - Baixada il·limitada de mapes nacionals o regionals directament des de l\'aplicació - Diverses capes de mapes alhora, com traces GPX o de navegació, PDIs, favorits, parades de transport públic, etc. amb nivell d\'opacitat personalitzada - Cerca, fora de línia, d\'adreces i llocs - Càlcul de rutes, fora de línia, fins la mitjana distància -\n - Modalitats cotxe, bicicleta i vianant - Canvi automàtic de vista diürna a nocturna, opcional - Ampliació automàtica del mapa segons la velocitat, opcional - Alineació automàtica del mapa segons la brúixola o la direcció del moviment, opcional - Indicació de carril, velocitat màxima permesa, veus enregistrades i/o sintetitzades Limitacions d\'aquesta versió gratuïta de OsmAnd: - Limitació en el nombre de mapes baixats - No té accés als PDIs fora de línia de Viquipèdia L\'OsmAnd està en desenvolupament actiu i el nostre projecte i el seu futur progrés depenen de les donacions per ajudar al desenvolupament i proves de noves funcions. Si us plau, considereu la possibilitat de comprar l\'OsmAnd+ o bé fer una donació per impulsar una nova característica, o fer una donació de manera general a la pàgina osmand.net." - "OsmAnd+ (OSM Automated Navigation Directions) L\'OsmAnd+ és una aplicació de navegació de codi obert amb accés a una gran varietat de dades de la col·lecció oberta de mapes OpenStreetMap. Totes les dades, incloent mapes de tessel·les i de vectors, poden emmagatzemar-se a la targeta de memòria del telèfon pel seu ús fora de línia. L\'OsmAnd també té la funcionalitat de càlcul de rutes tant en línia com fora de línia, incloent a més l\'orientació per veu. L\'OsmAnd+ és la versió de pagament; comprant-la estareu donant suport al projecte, ajudareu al desenvolupament de noves funcions i rebreu les darreres actualitzacions. Algunes de les característiques centrals són: - Funcionalitat completa fora de línia (desa en el dispositiu d\'emmagatzemament els mapes vectorials i de mosaic baixats) - Mapes de vectors compactes de tot el món per usar fora de línia - Baixada il·limitada de mapes nacionals o regionals directament des de l\'aplicació - Disponibilitat fora de línia dels PDI baixats prèviament de Viquipèdia, és genial per fer turisme - Diverses capes de mapes alhora, com traces GPX o de navegació, PDIs, favorits, parades de transport públic, etc. amb nivell d\'opacitat personalitzada - Cerca fora de línia d\'adreces i llocs - Càlcul de rutes fora de línia fins la mitjana distància - Modalitats cotxe, bicicleta i vianant - Canvi automàtic de vista diürna a nocturna, opcional - Ampliació automàtica del mapa segons la velocitat, opcional - Alineació automàtica del mapa segons la brúixola o la direcció del moviment, opcional - Indicació de carril, velocitat màxima permesa, veus enregistrades i/o sintetitzades" + "OsmAnd (OSM Automated Navigation Directions) L\'OsmAnd és una aplicació de navegació de codi obert amb accés a una gran varietat de dades globals d\'OpenStreetMap (OSM). Totes les dades dels mapes (siguin mapes vectorials o de tessel·les), es poden desar a la targeta de memòria del telèfon pel seu en desconnexió. L\'OsmAnd també calcula rutes, amb connexió o sense, incloent l\'orientació per veu. Algunes de les característiques principals: - Funcionament complet en desconnexió (desa localment els mapes vectorials i de tessel·les baixats) - Mapes vectorials compactes de tot el món per usar en desconnexió - Baixada il·limitada de mapes nacionals o regionals directament des de l\'aplicació - Diverses capes de mapes alhora, com traces GPX o de navegació, PDIs, favorits, parades de transport públic, etc. amb nivell d\'opacitat personalitzada - Cerca, fora de línia, d\'adreces i llocs - Càlcul de rutes fora de línia fins per distàncies d\'abast mitjà. - Modalitats cotxe, bicicleta i vianant - Canvi automàtic de vista diürna a nocturna, opcional - Ampliació automàtica del mapa segons la velocitat, opcional - Alineació automàtica del mapa segons la brúixola o la direcció del moviment, opcional - Indicació de carril, velocitat màxima permesa, veus enregistrades i/o sintetitzades Limitacions d\'aquesta versió gratuïta de OsmAnd: - Limitació en el nombre de mapes baixats - No té accés als PDIs fora de línia de Viquipèdia L\'OsmAnd està en desenvolupament actiu i el nostre projecte i el seu futur progrés depenen de les donacions per ajudar al desenvolupament i proves de noves funcions. Si us plau, considereu la possibilitat de comprar l\'OsmAnd+ o bé fer una donació per impulsar una nova característica, o fer una donació de manera general a la pàgina osmand.net." + "OsmAnd+ (OSM Automated Navigation Directions) L\'OsmAnd+ és una aplicació de navegació de codi obert amb accés a una gran varietat de dades de la col·lecció oberta de mapes OpenStreetMap. Totes les dades, incloent mapes de tessel·les i de vectors, poden emmagatzemar-se a la targeta de memòria del telèfon pel seu ús fora de línia. L\'OsmAnd també té la funcionalitat de càlcul de rutes tant en línia com fora de línia, incloent a més l\'orientació per veu. L\'OsmAnd+ és la versió de pagament; comprant-la estareu donant suport al projecte, ajudareu al desenvolupament de noves funcions i rebreu les darreres actualitzacions. Algunes de les característiques centrals són: - Funcionalitat completa fora de línia (desa en el dispositiu d\'emmagatzemament els mapes vectorials i de mosaic baixats) - Mapes de vectors compactes de tot el món per usar fora de línia - Baixada il·limitada de mapes nacionals o regionals directament des de l\'aplicació - Disponibilitat fora de línia dels PDI baixats prèviament de Viquipèdia, és genial per fer turisme - Diverses capes de mapes alhora, com traces GPX o de navegació, PDIs, favorits, parades de transport públic, etc. amb nivell d\'opacitat personalitzada - Cerca fora de línia d\'adreces i llocs - Càlcul de rutes fora de línia per distàncies \'abast mitjà - Modalitats cotxe, bicicleta i vianant - Canvi automàtic de vista diürna a nocturna, opcional - Ampliació automàtica del mapa segons la velocitat, opcional - Alineació automàtica del mapa segons la brúixola o la direcció del moviment, opcional - Indicació de carril, velocitat màxima permesa, veus enregistrades i/o sintetitzades" Seleccioneu el nivell mínim de zoom per mostrar el mapa si està disponible. Caldrà el fitxer SRTM separat: Aquest connector mostra la configuració de característiques per al desenvolupament i depuració com la verificació o simulació de rutes, el rendiment del renderitzat o les indicacions de veu. Aquestes configuracions s\'adrecen a desenvolupadors i no són d\'utilitat per a un usuari normal. En consonància amb la configuració global del sistema @@ -725,7 +723,7 @@ Memòria proporcional %4$s MB (límit de l\'Android %5$s MB, Dalvik %6$s MB).Gireu fortament a la dreta i continueu Gireu lleugerament a la dreta i continueu Gireu a l\'esquerra i continueu - Gireu fortamanent a l\'esquerra i continueu + Gireu fortament a l\'esquerra i continueu Gireu lleugerament a l\'esquerra i continueu Feu un gir en forma d\'U i continueu Cerca propera a la posició actual al mapa @@ -1031,8 +1029,8 @@ Memòria proporcional %4$s MB (límit de l\'Android %5$s MB, Dalvik %6$s MB).o Sense escalat automàtic Apropa\'t - Mig - Allunya\'t + Abast mitjà + Abast màxim Escalat del mapa Mapa mundial Versió: @@ -1557,10 +1555,10 @@ Afganistan, Albània, Alemanya, Antilles Holandeses, Algèria, Andorra, Angola, Interval d\'enregistrament general Velocitat màxima Control de fronteres - Estació de peatge + Barrera de peatge Senyal d\'stop Ressalt - Càmera de control de velocitat + Radar de trànsit Avís de circulació Premeu qualsevol indicació existent per veure més detalls, mantingueu premuda per desactivar o esborrar. Dades actuals al dispositiu (%1$s lliure): Definiu la mida del text en el mapa. @@ -2615,7 +2613,7 @@ Abasta l\'àrea: %1$s x %2$s \n Gaudiu del guiatge visual i de veu, representant PDIs (punts d\'interès), creant i gestionat traces GPX, activant la representació de corbes de nivell i d\'informació d\'elevació (requereix connector), optant entre els modes de conducció amb vehicle, bicicleta o com vianant, editant d\'OSM i molt més. Recupera les compres Tipus de lletra pel mapa - Navegació GPS • Podeu triar el mode desconnectat (no hi hauran càrrecs de roaming si sou a l\'estranger) o el mode en línia (més àgil) • El guiatge de veu gir-a-gir us dirigeix pel camí (veus enregistrades i sintètiques) • La ruta es tornarà a calcular si us desvieu de la proposta anterior • Les indicacions de carril, els noms de carrer i el temps d\'arribada estimat us ajudaran pel camí • Per fer el vostre viatge més segur, els canvis entre mode diurn i nocturn són automàtics • Podeu activar la indicació dels límits de velocitat i d\'advertiments si els supereu • L\'escala del mapa s\'ajusta a la vostra velocitat • Podeu cercar destinacions per adreça, per tipus (p. ex.: aparcament, restaurant, hotel, gasolinera, museu), o per les coordenades geogràfiques • Gestiona els punts de pas en el vostre itinerari • Podeu enregistrar el vostre trajecte o pujar una traça GPX i seguir-la + Navegació GPS • Podeu triar el mode desconnectat (no hi hauran càrrecs de roaming si sou a l\'estranger) o el mode en línia (més àgil) • El guiatge de veu gir-a-gir us dirigeix pel camí (veus enregistrades i sintètiques) • La ruta es tornarà a calcular si us desvieu de la proposta anterior • Les indicacions de carril, els noms de carrer i el temps d\'arribada estimat us ajudaran pel camí • Per fer el vostre viatge més segur, els canvis entre mode diürn i nocturn són automàtics • Podeu activar la indicació dels límits de velocitat i d\'advertiments si els supereu • L\'escala del mapa s\'ajusta a la vostra velocitat • Podeu cercar destinacions per adreça, per tipus (p. ex.: aparcament, restaurant, hotel, gasolinera, museu), o per les coordenades geogràfiques • Gestiona els punts de pas en el vostre itinerari • Podeu enregistrar el vostre trajecte o pujar una traça GPX i seguir-la El connector de mapes d\'esquí d\'OsmAnd us permet veure les pistes segons la seva dificultat i d\'altres informacions addicionals, com ara la ubicació dels ascensors i altres equipaments. Ciclisme • Podreu trobar les vies de ciclisme en el mapa • La navegació GPS en mode ciclisme genera la vostra ruta utilitzant vies de ciclisme • Podreu veure la vostra velocitat i altitud • L\'opció d\'enregistrar traces GPX us permet també compartir-les • El connector addicional Via us permet activar les corbes de nivell i l\'ombrejat de relleu A peu, fent senderisme, o visitant una ciutat • El mapa mostra les rutes per vianants i de senderisme • La Viquipèdia, en el vostre idioma preferit, us pot ajudar molt visitant una ciutat • Parades de transport públic (autobús, tramvia, tren), incloent-hi noms de línia, suport per la navegació en una ciutat nova • La navegació GPS en mode de vianants genera la vostra ruta per camins • Podeu baixar i seguir una traça GPX o enregistrar i compartir les vostres @@ -2647,7 +2645,7 @@ Abasta l\'àrea: %1$s x %2$s Llibreria de mapes que contenen isòbates i fondàries puntuals. En pausa Mapa • Mostra els PDIs (punts d\'interès) al vostre voltant • Ajusta l\'orientació del mapa a la vostra direcció del moviment (o al nord) • Mostra on sou i com esteu orientat • Compartiu la vostra ubicació perquè els vostres amics us puguin trobar • Manté els vostres llocs més importants a Preferits • Permet escollir com es mostren els noms al mapa: en anglès, llengues locals o amb ortografia fonètica • Mostra representacions especialitzades disponibles a la xarxa, imatges de satèl·lit (Bing), diferents superposicions com traces GPX d\'exploració/navegació i capes addicionals amb un grau transparència variable - "Navegació • Funciona en línia (ràpid) o sense connexió (sense càrrecs de roaming quan sigueu a l\'estranger) • Indicacions de veu a cada gir (amb missatges gravats i sintetitzats) • Orientació opcional del carril visualització del nom de la via i el temps estimat d\'arribada • Suporta punts d\'itinerari intermedis • Revisió automàtica de la ruta quan us aparteu de la ruta proposada • Cerca de llocs per adreça, tipus (per exemple: restaurant, hotel, gasolinera, museu) o coordenades geogràfiques" + Navegació • Funciona en línia (ràpid) o sense connexió (sense càrrecs de roaming quan sigueu a l\'estranger) • Indicacions de veu a cada gir (amb missatges gravats i sintetitzats) • Orientació opcional del carril, visualització del nom de la via i el temps estimat d\'arribada • Admet punts de pas intermedis • Revisió automàtica de la ruta quan us aparteu de la ruta proposada • Cerca de llocs per adreça, tipus (per exemple: restaurant, hotel, gasolinera, museu) o coordenades geogràfiques OsmAnd + (OSM Automated Navigation Directions) és una aplicació per consulta de mapes i de navegació, amb accés a les dades obertes d\'OpenStreetMap (OSM), d\'abast mundial i gran qualitat. Navegueu amb indicacions visuals i de veu, mostrant PDIs (punts d\'interès), creant i gestionant traces GPX, disposant de corbes de nivell i cotes puntuals, seleccioneu la navegació per vehicle, bicicleta o vianant, editeu OSM i molt més. OsmAnd + és la versió de pagament de l\'aplicació. En comprar-la, recolzareu el projecte, finançant el desenvolupament de noves característiques i rebreu les darreres actualitzacions. Característiques principals: Introduïu el poble o ciutat Introduïu el codi postal @@ -2734,4 +2732,5 @@ Abasta l\'àrea: %1$s x %2$s Temps en moviment Màx/Mín Interval + Interval = Mín/Màx diff --git a/OsmAnd/res/values-da/phrases.xml b/OsmAnd/res/values-da/phrases.xml index 804896cfb2..dc62ad8629 100644 --- a/OsmAnd/res/values-da/phrases.xml +++ b/OsmAnd/res/values-da/phrases.xml @@ -3490,4 +3490,8 @@ Standard Slusebassin - + Output (el): nej + +Ejer + + diff --git a/OsmAnd/res/values-da/strings.xml b/OsmAnd/res/values-da/strings.xml index 16e29d2765..0e4c3c7f80 100644 --- a/OsmAnd/res/values-da/strings.xml +++ b/OsmAnd/res/values-da/strings.xml @@ -2818,12 +2818,12 @@ Repræsenterer område: %1$s x %2$s Filen kan ikke flyttes. Flyt Varighed - Max + Maks Starttidspunkt Sluttidspunkt Farve Tid i bevægelse - Max hastighed + Maks-hastighed Gennemsnitshastighed Spor Punkter slettet. diff --git a/OsmAnd/res/values-de/phrases.xml b/OsmAnd/res/values-de/phrases.xml index 386d8dbc74..db4a5b8a22 100644 --- a/OsmAnd/res/values-de/phrases.xml +++ b/OsmAnd/res/values-de/phrases.xml @@ -1868,7 +1868,7 @@ Geschenkkarte nicht akzeptiert Golden Crown Golden Crown Karte nicht akzeptiert - "PRO100 " + PRO100 PRO100 Karte nicht akzeptiert Union Karte Union Karte nicht akzeptiert @@ -2273,7 +2273,7 @@ Zelten nicht gestattet Ja Nein - Pfadfinderlager: ja + Ja Pfadfinderlager: nein Nur Gruppen: ja Nur Gruppen: nein @@ -3016,8 +3016,8 @@ Typ Zahlungsart Zusätzlich -Fahrrad laden: ja - Fahrrad laden: nein +Ladestation: ja + Ladestation: nein Geschäft für Kunsthandwerksbedarf diff --git a/OsmAnd/res/values-de/strings.xml b/OsmAnd/res/values-de/strings.xml index c30a490752..942338dbaf 100644 --- a/OsmAnd/res/values-de/strings.xml +++ b/OsmAnd/res/values-de/strings.xml @@ -447,7 +447,7 @@ Einige der Kernfunktionen: In der Nähe suchen Route als GPX-Track speichern Route erfolgreich gespeichert als \'%1$s\'. - "Dateiname: " + Dateiname: Datei mit gleichem Namen besteht bereits. Speichern @@ -634,7 +634,7 @@ Einige der Kernfunktionen: Alle markieren Aktualisieren Schnellste Route - "Zur Berechnung der schnellsten Route aktivieren , für eine kraftstoffsparende Route deaktivieren " + Zur Berechnung der schnellsten Route aktivieren, für eine kraftstoffsparende Route deaktivieren Bei Zoomlevel {0} lade {1} Kacheln\n ({2} MB) Karte herunterladen Größte zu ladende Vergrößerung wählen @@ -2110,7 +2110,7 @@ Lon %2$s Sicher? Alle ungesicherten Änderungen gehen verloren. Fortfahren? Straßen - Auch bei OsmAnd+ das Banner der kostenlosen Version anzeigen + Auch in OsmAnd+ das Banner der kostenlosen Version anzeigen Geplante Objekte Aktualisieren @@ -2497,10 +2497,10 @@ Wenn Sie OsmAnd und OSM lieben und unterstützen wollen, so ist dies die perfekt Berechtigung erteilen Standortbestimmung zulassen Erhalten Sie Wegbeschreibungen und entdecken Sie neue Orte ohne Internetverbindung - Meinen Standort suchen + Meinen Standort bestimmen Keine Aktualisierungen anzeigen Herunterladen der Karten überspringen - Keine aktuellen Meldungen zu neuen Versionen, Angeboten von OsmAnd abfragen + Keine Versionsaktualisierungen oder OsmAnd-Angebote abfragen Meilen/Meter Unbegrenzt Karten herunterladen und sie nicht nur einmal pro Monat, sondern wöchentlich, täglich oder stündlich aktualisieren. Vollversion von OsmAnd mit unbegrenzten Karten-Downloads und monatlichen Kartenaktualisierungen. @@ -2866,4 +2866,14 @@ Abgedeckte Fläche: %1$s x %2$s Von Bilder betrachten, die in einem bestimmten Zeitabschnitt eingestellt wurden. Datumswerte + Durchschnitt + max/min + Zurücksetzen + Aufstieg/Abstieg + Aufgezeichnete Tracks in Monatsordnern speichern + Aufgezeichnete Tracks in nach Aufzeichnungsmonat benannten Unterordnern speichern (z. B. 2017-01). + Lineal + Zirkel + %1$d von %2$d + Zeit in Bewegung diff --git a/OsmAnd/res/values-eo/strings.xml b/OsmAnd/res/values-eo/strings.xml index f23e6e3ad1..336eb2d839 100644 --- a/OsmAnd/res/values-eo/strings.xml +++ b/OsmAnd/res/values-eo/strings.xml @@ -2857,4 +2857,5 @@ Indikas lokon: %1$s x %2$s" Movada tempo Maks./min. Variejo + Variejo = min/maks diff --git a/OsmAnd/res/values-es-rAR/phrases.xml b/OsmAnd/res/values-es-rAR/phrases.xml index 83530a34ef..83b8a04dec 100644 --- a/OsmAnd/res/values-es-rAR/phrases.xml +++ b/OsmAnd/res/values-es-rAR/phrases.xml @@ -3456,4 +3456,6 @@ Estándar Compuerta de cuenca - + Salida (electricidad): No + + diff --git a/OsmAnd/res/values-es-rAR/strings.xml b/OsmAnd/res/values-es-rAR/strings.xml index 80af98f5f8..8b4403458c 100644 --- a/OsmAnd/res/values-es-rAR/strings.xml +++ b/OsmAnd/res/values-es-rAR/strings.xml @@ -870,11 +870,7 @@ Se aprecia la participación activa, y las contribuciones pueden hacerse directa Pausar música Navegación y Mapas OsmAnd Visor y navegador móvil global de mapas OSM con y sin conexión - OsmAnd (OSM Automated Navigation Directions, y en español, Guía de Navegación Automatizada de OSM) -\n -\n OsmAnd es una aplicación de navegación de código abierto con acceso a una amplia variedad de datos globales de OpenStreetMap (OSM). -\n -\nTodos los datos del mapa (vectores y teselas) pueden ser almacenados en la memoria del teléfono para su uso sin conexión. OsmAnd también ofrece funcionalidad de rutas con y sin conexión, incluyendo indicaciones giro-a-giro mediante voz. + "OsmAnd (OSM Automated Navigation Directions, y en español, Guía de Navegación Automatizada de OSM), es una aplicación de navegación de código abierto con acceso a una amplia variedad de datos globales de OpenStreetMap (OSM). Todos los datos del mapa (vectores y teselas) pueden ser almacenados en la memoria del teléfono para su uso sin conexión. OsmAnd también ofrece funcionalidad de rutas con y sin conexión, incluyendo indicaciones giro-a-giro por voz. \n \n Algunas de las funciones fundamentales: \n - Completa funcionalidad sin conexión (almacena los mapas vectoriales o teselas descargados en la memoria del dispositivo) @@ -883,18 +879,18 @@ Se aprecia la participación activa, y las contribuciones pueden hacerse directa \n - Posibilidad de superponer varias capas de mapa, como GPX o rutas de navegación, Puntos de Interés (PDI), favoritos, curvas de nivel, paradas de transporte público, mapas adicionales con transparencia personalizable \n - Búsqueda sin conexión de direcciones y lugares (PDI) \n - Rutas sin conexión para distancias de rango medio -\n -\n - Modos de automóvil, bicicleta, y peatón con: -\n - opción de cambio automático de vista día/noche -\n - opción de ampliación según la velocidad -\n - alineación opcional del mapa, según brújula o dirección del movimiento -\n - opción de indicación de carriles, visualización de límites de velocidad, voces grabadas y sintetizadas. +\n +\n - Modos de automóvil, bicicleta y peatón con: +\n - (Opcional) Cambio automático de vista día/noche +\n - (Opcional) Ampliación del mapa según la velocidad +\n - (Opcional) Alineación del mapa, según brújula o dirección del movimiento +\n - (Opcional) Indicación de carriles, mostrar límites de velocidad, voces grabadas y sintetizadas \n \n Limitaciones de la versión gratuita de OsmAnd: \n - Límite del número de mapas descargados \n - Sin acceso a los PDIs descargados de Wikipedia. \n -\n OsmAnd está siendo desarrollado activamente. Nuestro proyecto y su progreso adicional se basa en contribuciones económicas para financiar el desarrollo y las pruebas de nuevas funcionalidades. Por favor, considera comprar OsmAnd+, financiar nuevas funciones o hacer una donación general en OsmAnd.net. +\n OsmAnd está siendo desarrollado activamente. Nuestro proyecto y su progreso adicional se basa en contribuciones económicas para financiar el desarrollo y las pruebas de nuevas funcionalidades. Por favor, considera comprar OsmAnd+, financiar nuevas funciones o hacer una donación general en OsmAnd.net." " OsmAnd (OSM Automated Navigation Directions, o traducido al español, Guía de navegación automatizada OSM) es un mapa y una aplicación de navegación con acceso a datos de todo el mundo, de alta calidad y gratuitos de OpenStreetMap (OSM). Todos los datos de los mapas se pueden almacenar en la tarjeta de memoria del dispositivo para su uso sin conexión. A través del GPS de tu dispositivo, OsmAnd ofrece indicaciones de navegación, visuales y por voz, para automóvil, bicicleta y peatones. Todas las funciones principales funcionan tanto conectado como sin conexión (no necesita Internet). OsmAnd+ es la versión de pago de la aplicación. Comprándola das soporte al proyecto, financias el desarrollo de nuevas funciones y obtienes las últimas actualizaciones. Puedes probar la aplicación antes de comprarla instalando la versión libre llamada OsmAnd. @@ -968,19 +964,18 @@ Afganistán, Albania, Alemania, Andorra, Angola, Anguila, Antigua y Barbuda, Ant " Navegación y Mapas OsmAnd+ Visor y navegador móvil global de mapas OSM con y sin conexión - "OsmAnd+ (OSM Automated Navigation Directions, y en español, Guía de Navegación Automatizada de OSM) -\n -\n OsmAnd+ es una aplicación de navegación de código abierto con acceso a una amplia variedad de datos globales de OpenStreetMap (OSM). Todos los datos del mapa (vectores y teselas), pueden ser almacenados en la memoria del teléfono para su uso sin conexión. OsmAnd también ofrece funcionalidad de rutas con y sin conexión con guía giro-a-giro mediante voz. -\n + "OsmAnd+ (OSM Automated Navigation Directions, y en español, Guía de Navegación Automatizada de OSM), es una aplicación de navegación de código abierto con acceso a una amplia variedad de datos globales de OpenStreetMap (OSM). Todos los datos del mapa (vectores y teselas), pueden ser almacenados en la memoria del teléfono para su uso sin conexión. OsmAnd también ofrece funcionalidad de rutas con y sin conexión con guía giro-a-giro por voz. +\n \n OsmAnd+ es la versión de pago de la aplicación, comprándola das soporte al proyecto, financias el desarrollo de nuevas funciones, y recibes las últimas actualizaciones. -\n +\n \n Algunas de las funciones fundamentales: \n - Completa funcionalidad sin conexión (guarda los mapas vectoriales o teselas descargados en el almacenamiento del dispositivo) \n - Mapas mundiales vectoriales compactos disponibles \n - Descarga ilimitada de mapas de países o regiones directamente desde la aplicación \n - Posibilidad de superponer varias capas de mapa, como GPX o rutas de navegación, Puntos de Interés, favoritos, curvas de nivel, paradas de transporte público, mapas adicionales con transparencia personalizable \n - Búsqueda sin conexión de direcciones y lugares (PDIs) -\n - Rutas sin conexión para distancias de rango medio +\n - Rutas sin conexión para distancias de rango medio +\n \n - Modos de automóvil, bicicleta y peatón con: \n - (Opcional) Cambio automático de vista día/noche \n - (Opcional) Ampliación del mapa según la velocidad @@ -2866,4 +2861,5 @@ Representa el área: %1$s x %2$s Tiempo moviéndose Máx/Min Rango + Rango = Min/Máx diff --git a/OsmAnd/res/values-es-rUS/phrases.xml b/OsmAnd/res/values-es-rUS/phrases.xml index a711383223..6ab33cd79d 100644 --- a/OsmAnd/res/values-es-rUS/phrases.xml +++ b/OsmAnd/res/values-es-rUS/phrases.xml @@ -3218,4 +3218,6 @@ Estándar Compuerta de cuenca - + Salida (electricidad): No + + diff --git a/OsmAnd/res/values-es-rUS/strings.xml b/OsmAnd/res/values-es-rUS/strings.xml index 3e4cce0a1e..ad00d6bf67 100644 --- a/OsmAnd/res/values-es-rUS/strings.xml +++ b/OsmAnd/res/values-es-rUS/strings.xml @@ -870,28 +870,27 @@ Se aprecia la participación activa, y las contribuciones pueden hacerse directa Pausar música Navegación y Mapas OsmAnd Visor y navegador móvil global de mapas OSM con y sin conexión - OsmAnd (OSM Automated Navigation Directions, y en español, Guía de Navegación Automatizada de OSM) -\n -\n OsmAnd es una aplicación de navegación de código abierto con acceso a una amplia variedad de datos globales de OpenStreetMap (OSM). Todos los datos del mapa (vectores y teselas) pueden ser almacenados en la memoria del teléfono para su uso sin conexión. OsmAnd también ofrece funcionalidad de rutas con y sin conexión, incluyendo indicaciones giro-a-giro mediante voz. + "OsmAnd (OSM Automated Navigation Directions, y en español, Guía de Navegación Automatizada de OSM), es una aplicación de navegación de código abierto con acceso a una amplia variedad de datos globales de OpenStreetMap (OSM). Todos los datos del mapa (vectores y teselas) pueden ser almacenados en la memoria del teléfono para su uso sin conexión. OsmAnd también ofrece funcionalidad de rutas con y sin conexión, incluyendo indicaciones giro-a-giro por voz. \n \n Algunas de las funciones fundamentales: \n - Completa funcionalidad sin conexión (almacena los mapas vectoriales o teselas descargados en la memoria del dispositivo) \n - Mapas vectoriales compactos disponibles de todo el planeta -\n - Descarga de mapa del país o región directamente desde la aplicación +\n - Descarga el mapa del país o región directamente desde la aplicación \n - Posibilidad de superponer varias capas de mapa, como GPX o rutas de navegación, Puntos de Interés (PDI), favoritos, curvas de nivel, paradas de transporte público, mapas adicionales con transparencia personalizable \n - Búsqueda sin conexión de direcciones y lugares (PDI) \n - Rutas sin conexión para distancias de rango medio -\n - Modos de automóvil, bicicleta, y peatón con: -\n - opción de cambio automático de vista día/noche -\n - opción de ampliación según la velocidad -\n - alineación opcional del mapa, según brújula o dirección del movimiento -\n - opción de indicación de carriles, visualización de límites de velocidad, voces grabadas y sintetizadas. +\n +\n - Modos de automóvil, bicicleta y peatón con: +\n - (Opcional) Cambio automático de vista día/noche +\n - (Opcional) Ampliación del mapa según la velocidad +\n - (Opcional) Alineación del mapa, según brújula o dirección del movimiento +\n - (Opcional) Indicación de carriles, mostrar límites de velocidad, voces grabadas y sintetizadas \n \n Limitaciones de la versión gratuita de OsmAnd: \n - Límite del número de mapas descargados \n - Sin acceso a los PDIs descargados de Wikipedia. \n -\n OsmAnd está siendo desarrollado activamente. Nuestro proyecto y su progreso adicional se basa en contribuciones económicas para financiar el desarrollo y las pruebas de nuevas funcionalidades. Por favor, considera comprar OsmAnd+, financiar nuevas funciones o hacer una donación general en OsmAnd.net. +\n OsmAnd está siendo desarrollado activamente. Nuestro proyecto y su progreso adicional se basa en contribuciones económicas para financiar el desarrollo y las pruebas de nuevas funcionalidades. Por favor, considera comprar OsmAnd+, financiar nuevas funciones o hacer una donación general en OsmAnd.net." " OsmAnd (OSM Automated Navigation Directions, o traducido al español, Guía de navegación automatizada OSM) es un mapa y una aplicación de navegación con acceso a datos de todo el mundo, de alta calidad y gratuitos de OpenStreetMap (OSM). Todos los datos de los mapas se pueden almacenar en la tarjeta de memoria del dispositivo para su uso sin conexión. A través del GPS de tu dispositivo, OsmAnd ofrece indicaciones de navegación, visuales y por voz, para automóvil, bicicleta y peatones. Todas las funciones principales funcionan tanto conectado como sin conexión (no necesita Internet). OsmAnd+ es la versión de pago de la aplicación. Comprándola das soporte al proyecto, financias el desarrollo de nuevas funciones y obtienes las últimas actualizaciones. Puedes probar la aplicación antes de comprarla instalando la versión libre llamada OsmAnd. @@ -965,19 +964,18 @@ Afganistán, Albania, Alemania, Andorra, Angola, Anguila, Antigua y Barbuda, Ant " Navegación y Mapas OsmAnd+ Visor y navegador móvil global de mapas OSM con y sin conexión - "OsmAnd+ (OSM Automated Navigation Directions, y en español, Guía de Navegación Automatizada de OSM) -\n -\n OsmAnd+ es una aplicación de navegación de código abierto con acceso a una amplia variedad de datos globales de OpenStreetMap (OSM). Todos los datos del mapa (vectores y teselas), pueden ser almacenados en la memoria del teléfono para su uso sin conexión. OsmAnd también ofrece funcionalidad de rutas con y sin conexión con guía giro-a-giro mediante voz. -\n + "OsmAnd+ (OSM Automated Navigation Directions, y en español, Guía de Navegación Automatizada de OSM), es una aplicación de navegación de código abierto con acceso a una amplia variedad de datos globales de OpenStreetMap (OSM). Todos los datos del mapa (vectores y teselas), pueden ser almacenados en la memoria del teléfono para su uso sin conexión. OsmAnd también ofrece funcionalidad de rutas con y sin conexión con guía giro-a-giro por voz. +\n \n OsmAnd+ es la versión de pago de la aplicación, comprándola das soporte al proyecto, financias el desarrollo de nuevas funciones, y recibes las últimas actualizaciones. -\n -\n Algunas de las funciones fundamentales: +\n +\n Algunas de las funciones fundamentales: \n - Completa funcionalidad sin conexión (guarda los mapas vectoriales o teselas descargados en el almacenamiento del dispositivo) \n - Mapas mundiales vectoriales compactos disponibles \n - Descarga ilimitada de mapas de países o regiones directamente desde la aplicación \n - Posibilidad de superponer varias capas de mapa, como GPX o rutas de navegación, Puntos de Interés, favoritos, curvas de nivel, paradas de transporte público, mapas adicionales con transparencia personalizable \n - Búsqueda sin conexión de direcciones y lugares (PDIs) -\n - Rutas sin conexión para distancias de rango medio +\n - Rutas sin conexión para distancias de rango medio +\n \n - Modos de automóvil, bicicleta y peatón con: \n - (Opcional) Cambio automático de vista día/noche \n - (Opcional) Ampliación del mapa según la velocidad @@ -2864,4 +2862,5 @@ Representa el área: %1$s x %2$s Tiempo moviéndose Máx/Min Rango + Rango = Min/Máx diff --git a/OsmAnd/res/values-eu/strings.xml b/OsmAnd/res/values-eu/strings.xml index 9774e1b531..7f58d342f8 100644 --- a/OsmAnd/res/values-eu/strings.xml +++ b/OsmAnd/res/values-eu/strings.xml @@ -2905,4 +2905,8 @@ Area honi dagokio: %1$s x %2$s Denbora mugimenduan Max/Min Barrutia + Barrutia = Min/Max + Mapa • Bistaratu inguruko interesezko puntuak (POI) • Egokitu mapa zure mugimenduaren (edo iparrorratzaren) norabidera • Non zauden eta nora begiratzen duzun erakusten du • Partekatu zure kokalekua lagunek aurkitu zaitzaten • Gorde zuretzat garrantzitsuak diren tokiak gogokoetan • Mapan izenak nola bistaratu aukeratzen uzten dizu: zure hizkuntzan, tokiko hizkuntzan, edo ahoskera fonetikoa • Interneteko tesela mapak erakusten ditu, satelite ikuspegia (Bingek eskainia), hainbat gainazal, esaterako turismorako edo nabigaziorako GPX lorratzak eta azal gehigarriak gardentasun aldagarriarekin + Bizikleta • Bizikletentzako bideak aurki ditzakezu mapan • Bizikletarako GPS nabigazioak ibilbideak bizikletentzako bideak erabiliz eraikiko du • Zure abiadura eta altuera ikusi ditzakezu • GPX grabaketak zure bidaia grabatu eta partekatzea ahalbidetzen dizu • Gehigarriekin sestra-kurbak eta erliebe-itzalak gaitu ditzakezu + Bizikleta eta oinezkoentzako ezaugarriak • Oinez, mendian, eta bizikletarekin egiteko bideak eta aktibitateak ikusi • Bizikleta eta oinezkoentzako ibilbide eta ikuspegi bereziak • Aukeran garraio publikoaren geltokiak (autobusa, tranbia, trena) lineen izenak barne • Aukeran bidaiaren grabaketa tokiko GPX fitxategira edo interneteko zerbitzari batera • AUkeran abiadura eta altuera bistaratu • Biostaratu sestra-kurbak eta erliebe-itzalak (plug-in gehigarriarekin) diff --git a/OsmAnd/res/values-fr/strings.xml b/OsmAnd/res/values-fr/strings.xml index 7f68637efe..569072ff22 100644 --- a/OsmAnd/res/values-fr/strings.xml +++ b/OsmAnd/res/values-fr/strings.xml @@ -1991,7 +1991,7 @@ Pour revenir à l’un des styles de carte classique de OsmAnd, désactivez simp Limite de hauteur Précisez la hauteur du véhicule qui doit être respectée sur les routes empruntées Recalcule intelligent de l\'itinéraire - Recalculer uniquement le début de l\'itinéraire pour les longs trajets + Pour les longs trajets, recalculer uniquement le début de l\'itinéraire Partager ma position Se déconnecter Désactivé @@ -3022,4 +3022,7 @@ Fonctionnalités principales : Afficher les images ajoutées par certains utilisateurs. Vous pouvez filtrer les images par date ou nom d\'utilisateur, le filtre est appliqué après avoir zoomé. Réinitialiser + Moyenne + Croissant / Décroissant + Max / Min diff --git a/OsmAnd/res/values-it/strings.xml b/OsmAnd/res/values-it/strings.xml index b5873eb412..eba3d6304f 100644 --- a/OsmAnd/res/values-it/strings.xml +++ b/OsmAnd/res/values-it/strings.xml @@ -2657,10 +2657,10 @@ Se ami OsmAnd e OSM e vuoi sostenerli, questo è un modo perfetto per farlo.Marrone scuro Integrità della superficie stradale Filtro: imposta la velocità minima per la registrazione di un punto - Soglia del movimento di registrazione - Scegliere la distanza minima dal precedente punto a cui avverrà la registrazione di un nuovo punto + Soglia minima dello spostamento per la registrazione + Filtro: imposta la distanza minima dal precedente punto a cui avverrà la registrazione di un nuovo punto Precisione minima per la registrazione - Impostare la minima precisione per la registrazione di un punto + Filtro: impostare la minima precisione per la registrazione di un punto Colorazione delle linee isoipse Digitare il nome del pdi, città, indirizzo Continua @@ -2812,41 +2812,22 @@ Rappresenta l\'area: %1$s x %2$s Mostra contorni e punti in profondità "\\022 Nuove funzionalità: Pulsante azione veloce \n -\n -\n \n • Migliorata la risposta del touch screen ai gesti (es. zoommare e allargare) \n -\n -\n \n • Nuovi caratteri della mappa mappa per estendere la copertura di più lingue \n -\n -\n -\n \n • Supporto TTS per le lingue locali (e accenti) \n -\n -\n \n • Miglioramento della visibilità in molti stili mappa e wikipedia \n -\n -\n \n • Supporto all\'Open Location Code (OLC) \n -\n -\n \n • Visualizzazione di un profilo altimetrico, pendenza, e velocità per i GPX registrati e percorsi calcolati \n -\n -\n \n • Impostazione e miglioramenti della logica dello \"Stile guida\" nella guida svolta per svolta in bicicletta \n -\n -\n \n • Molti altri miglioramenti e correzioni di errori \n -\n -\n \n e altro ancora…" Stile di guida Guida sicura, veloce o bilanciata @@ -2932,7 +2913,7 @@ Rappresenta l\'area: %1$s x %2$s Seleziona le strade in %1$s Scrivi l\'indirizzo - Anima la mia localizzazione + Simula la mia posizione In navigazione abilita l\'interpolazione della mia localizzazione Panoramica Mostra dal livello di zoom @@ -3043,7 +3024,7 @@ Copertura e qualità approssimativamente: Scrivi il nome utente Visualizza le immagini aggiunte da un certo utente. Nome utente - Puoi filtrare le immagini per nome dell\'utente o per data, i filtri si possono applicare solo per gli zoom più elevati. + Puoi filtrare le immagini per nome dell\'utente o per data. I filtri si possono applicare solo per gli zoom più elevati. Salva le tracce registrate in cartelle mensili Salva le tracce registrate in sottocartelle per mese di registrazione (come 2017-01). Reimposta diff --git a/OsmAnd/res/values-ja/phrases.xml b/OsmAnd/res/values-ja/phrases.xml index 5414a16126..e8a78d232a 100644 --- a/OsmAnd/res/values-ja/phrases.xml +++ b/OsmAnd/res/values-ja/phrases.xml @@ -988,7 +988,7 @@ 宗教関係エリア(Religious area) 森林の切れ目(Cutline) - シャワー(Shower) + シャワー 樹木(Tree) 軍事事務所(Military office) ウィキペディア(Wikipedia) @@ -1138,7 +1138,7 @@ 支払いの種類(Payment type) 視覚障害者用信号機音声 視覚障害者誘導用ブロック(Tactile paving) - セルフサービス(Self service) + セルフサービス式か否か(Self service) 自動化(Automated) 地下鉄駅(Subway station) 貨物(Cargo) @@ -1148,7 +1148,7 @@ 古墳(Tumulus) 砦・要塞(Fortification) 開拓・居留地(Settlement) - 都市(City) + 都市遺跡(City) 環状列石(Hut circle) 巨大墓所または荒廃都市(Necropolis) 壁画・彫刻(Petroglyph) @@ -1188,7 +1188,7 @@ ギャンブルの種類 宝くじ パチンコ - スロットマシーン + スロットマシン 賭け事全般 ビンゴ @@ -1201,12 +1201,12 @@ マッサージサービス(Massage services) ゲレンデ難易度(Piste difficulty) ゲレンデの対応種・状態(Piste grooming) - 簡単・初級者用(Easy) - 普通・中級者用(Intermediate) - 上級者用(Advanced) - すごく簡単・初心者用(Novice) - 難しい・上級者用(Expert) - フリーライド・競技用(Freeride) + 斜度30-35°・初級者用(Easy) + 斜度35-40°・中級者用(Intermediate) + 斜度40-45°上級者用(Advanced) + 斜度0-30°・初心者用(Novice) + 斜度45-50°・上級者用(Expert) + 斜度50-55°・非圧雪面、コース外等(Freeride) 一般的なアルペン・ノルディックスキー用(Classic) 一般的コース+スケート可(Classic+skating) バックカントリー(Backcountry) @@ -1250,26 +1250,26 @@ 化学処理トイレ(Toilets disposal: chemical) バケツトイレ(Toilets disposal: bucket) - バックカントリー・管理区域外エリア(Backcountry) - 可(Yes) - 不可(No) + バックカントリー・管理区域外エリアへの進入 + + 不可 キャンピングカー・トレーラー(Caravans) - 可(Yes) - キャンピングカー:不可(Caravans: no) - 街頭時計の付属表示(Additional) - 気圧計・晴雨計(Barometer) - 気圧計:無し(Barometer: no) - 日付表示(Date display) - 日付表示:無し(Date display: no) + + キャンピングカー:不可 + 街頭時計の付属物 + 気圧計・晴雨計 + 気圧計:無し + 日付表示 + 日付表示:無し - 湿度計(Hygrometer) - 湿度計:無し(Hygrometer: no) - 温度計(Thermometer) - 温度計:無し(Thermometer: no) + 湿度計 + 湿度計:無し + 温度計 + 温度計:無し 宗派(Denomination) 暖炉(Fireplace) - 有り(Yes) - 暖炉無し(No fireplace) + 有り + 暖炉無し 展示内容・コンテンツ(Contents) 天文学(Astronomy) @@ -1296,43 +1296,43 @@ ルートマーカー(Route marker) 道しるべ(Trail blaze) 宗教(Religion) - レクリエーションセンター(Recreation center) + 保養施設(Recreation center) 電源(Power supply) - 電源:無し(Power supply: no) + 電源:無し 電源ソケット形状:CEE 17 青(Power supply (socket): CEE 17 blue) 電源ソケット形状:CEE 7/4(Power supply (socket): CEE 7/4) 電源ソケット形状:CEE 7/5(Power supply (socket): CEE 7/5) 電源ソケット形状:NEMA 5-15(Power supply (socket): NEMA 5-15) - 星評価(Star rating) - 1 ツーリスト(1 (Tourist)) - 1S ツーリスト上位(1S (Superior Tourist)) - 2 スタンダード(2 (Standard)) - 2S スタンダード上位(2S (Superior Standard)) - 3 コンフォート(3 (Comfort)) - 3S コンフォート上位(3S (Superior Comfort)) - 4 ファーストクラス(4 (First Class)) - 4S ファーストクラス上位(4S (Superior First Class)) - 5 ラグジュアリー(5 (Luxury)) - 5S ラグジュアリー上位(5S (Superior Luxury)) + 格付け(Star rating) + ☆(Tourist) + ☆S(Superior Tourist) + ☆☆(Standard) + ☆☆S(Superior Standard) + ☆☆☆(Comfort) + ☆☆☆S(Superior Comfort) + ☆☆☆☆(First Class) + ☆☆☆☆S(Superior First Class) + ☆☆☆☆☆(Luxury) + ☆☆☆☆☆S(Superior Luxury) テント(Tents) - テント不可(Tents not allowed) - 許可(Allowed) + テント不可(又は設営に不向き) + 許可 洗濯機(Washing machine) - 洗濯機:無し(Washing machine: no) - 洗車場:無し(Car wash: no) + 洗濯機:無し + 洗車場:無し エアーコンプレッサー(Compressed air) - 有り(Yes) - エアーコンプレッサー:無し(Compressed air: no) + 有り + エアーコンプレッサー:無し - 肯定(Yes) - 否定(No self-service) + セルフサービス式 + セルフサービスではない 掃除機(Vacuum cleaner) - 有り(Yes) - 掃除機:無し(Vacuum cleaner: no) + 有り + 掃除機:無し 掃除機(Vacuum cleaner) アドブルー・尿素水還元剤(AdBlue fuel) @@ -1362,54 +1362,54 @@ ドーナツ(Donut) ラーメン(Ramen) クレープ(Crepe) - 朝食(Breakfast) + 01営業形態_朝食(Breakfast) 牛丼(Gyudon) ステーキ・肉魚切り身等の焼き料理(Steak) タパス・前菜・小皿料理(Tapas) - ガストロパブ・バー兼レストラン(Gastropub) - ホイリゲ・ワイン酒場・居酒屋(Heuriger) + 01営業形態_ガストロパブ・バー兼レストラン(Gastropub) + 01営業形態_イリゲ・ワイン酒場・居酒屋(Heuriger) カレー(Curry) - 居酒屋(Buschenschank) + 01営業形態_居酒屋(Buschenschank) グリル・鉄板、焼き網料理(Grill) ベーグル(Bagel) - ダイナー・簡易食堂(Diner) + 01営業形態_ダイナー・簡易食堂(Diner) ソーセージ(Sausage) ケーキ(Cake) パンケーキ・ホットケーキ(Pancake) パスタ(Pasta) - ファストフード(Fast food) + 01営業形態_ファストフード(Fast food) ジュース(Juice) 蕎麦(Soba) - 高級レストラン(Fine dining) + 01営業形態_高級レストラン(Fine dining) 茶・紅茶(Tea) - ティーショップ(Tea shop) + 01営業形態_ティーショップ(Tea shop) スープ(Soup) パイ(Pie) ホットドッグ(Hotdog) - デリ・総菜屋(Deli) + 01営業形態_デリ・総菜屋(Deli) サラダ(Salad) フローズンヨーグルト(Frozen yogurt) 揚げ物(Fried food) 具入りパンケーキ・チヂミ・お好み焼き等(Savory pancakes) - 大衆食堂(Bistro) - パン屋(Bakery) + 01営業形態_大衆食堂(Bistro) + 01営業形態_パン屋(Bakery) クスクス(Couscous) フライドチキン(Fried chicken) デザート(Dessert) - PX・社員食堂(Canteen) + 01営業形態_社員食堂・学食・酒保(Canteen) タコス(Tacos) ピアディーナ(Piadina) ファラフェル・ひよこ豆、そらまめのコロッケ(Falafel) スムージー(Smoothie) スブラキ・串焼き(Souvlaki) - スナック(Snack) + 軽食(Snack) ヨーグルト(Yogurt) ギロピタ・ドネルケバブ(Gyros) エンパナーダ・具入りパン(Empanada) クレープ(Crepes) 焼肉(Yakiniku) うどん(Udon) - ブラッスリー・カフェレストラン(Brasserie) + 01営業形態_ブラッスリー・カフェレストラン(Brasserie) タピオカティー(Bubble tea) 焼き鳥(Yakitori) 肉(Meat) @@ -1418,7 +1418,7 @@ チョコレート(Chocolate) ワイン(Wine) ジャガイモ(Potato) - ブランチ(Brunch) + 01営業形態_ブランチ(Brunch) サンドイッチ(Sub) ピタパン(Pita) フォンデュ(Fondue) @@ -1507,10 +1507,10 @@ チベット料理(Tibetan) 出前・宅配(Delivery) - 可(Yes) - 宅配可(Delivery) - 宅配不可(No delivery) - 宅配のみ(Delivery only) + + 宅配可 + 宅配不可 + 宅配のみ ダイエット・食事制限(Diet) ベジタリアン(Vegetarian) @@ -1542,28 +1542,28 @@ 料理(Dish) クルド語 wiki(Kurdish wiki) 地ビール醸造所(Microbrewery) - 地ビール醸造有り(Microbrewery) - 地ビール醸造無し + 地ビール有り + 地ビール無し 有り 無し 自然食品のみ取り扱い 屋外席(Outdoor seating) - 有り(Yes) - 屋外席:有り(Outdoor seating: yes) - 屋外席無し(No outdoor seating) - 屋外席:テラス(Outdoor seating: terrace) - 屋外席:歩道側(Outdoor seating: sidewalk) - 屋外席:歩行者ゾーン(Outdoor seating: pedestrian zone) - 屋外席:庭(Outdoor seating: garden) - 屋外席:中庭(Outdoor seating: patio) + 有り + 屋外席:有り + 屋外席:無し + 屋外席:テラス(terrace) + 屋外席:歩道(sidewalk) + 屋外席:歩行者天国(pedestrian zone) + 屋外席:庭(arden) + 屋外席:中庭(patio) - テイクアウト・持ち帰り(Takeaway) - 有り(Yes) - テイクアウト・持ち帰り有り(Takeaway) - 持ち帰り無し(No takeaway) - テイクアウト・持ち帰りのみ(Takeaway only) + テイクアウト・持ち帰り + 可能 + 持ち帰り可 + 持ち帰り不可 + テイクアウト・持ち帰りのみ 遺跡の種類 医療機関(Health specialty) @@ -1631,7 +1631,7 @@ 鍼治療(Acupuncture) ホメオパシー(民間療法)(Homeopathy) 東洋医学(Traditional chinese medicine) - レイキ・霊気(民間療法)Reiki + レイキ・霊気(民間療法)(Reiki) 本草学(Herbalism) カイロプラクティック(Chiropractic) 自然療法(Naturopathy) @@ -1668,13 +1668,13 @@ 営業期(Seasonal) ドライブイン(Drive in) 無し - 有り(Yes) + 有り ボーイスカウト用キャンプ(Scout camp) 肯定(Scout camp: yes) 否定(Scout camp: no) - 有り(Yes) - 有り(Yes) - 有り(Yes) + 有り + 有り + 有り 送金の種類(Payment type (transport)) 硬貨 @@ -1686,7 +1686,7 @@ クレジットカード不可 紙幣(Banknotes) 紙幣不可(Banknotes not accepted) - 電子マネー可 + 電子マネー 電子マネー不可 現金不可(Cash not accepted) デビットカード @@ -1703,10 +1703,10 @@ クレジットカード_American Express(AMEX)不可 クレジットカード_ダイナースクラブ クレジットカード_ダイナースクラブカード不可 - 燃料カード_DKV(DKV) - 燃料カード_DKV不可(DKV not accepted) - 燃料カード_UTA(UTA) - 燃料カード_UTA不可(UTA cards not accepted) + 燃料カード_DKV + 燃料カード_DKV不可 + 燃料カード_UTA + 燃料カード_UTA不可 デビットカード_Girocard デビットカード_Girocard不可 クレジットカード_ディスカバーカード @@ -1720,17 +1720,17 @@ 有料道路_PIKEPASS(PIKEPASS) 有料道路_PIKEPASS不可(PIKEPASS not accepted) 有料道路_PIKEPASS指定(PIKEPASS (designated)) - デビットカード_Visaデビットカード - デビットカード_Visaデビットカード不可 + デビットカード_Visaデビット + デビットカード_Visaデビット不可 暗号通貨不可(Cryptocurrencies not accepted) その他(Others) その他該当支払い方法不可(Other payment methods not accepted) - 燃料カード_Routex(Routex) - 燃料カード_Routex不可(Routex fuel cards not accepted) + 燃料カード_Routex + 燃料カード_Routex不可 デビットカード_Bancomat デビットカード_Bancomat不可 - 公共交通機関_ICストアドフェアカード(Suica等)(IC Stored Fare) - 公共交通機関_ICストアドフェアカード(Suica等)(IC Stored Fare) + 公共交通機関_ICストアドフェアカード(Suica等) + 公共交通機関_ICストアドフェアカード(Suica等) 公共交通機関_プリペイドチケット(Prepaid tickets) クレジットカード_JCB クレジットカード_JCB不可 @@ -1738,8 +1738,8 @@ デビットカード_Laser不可 電子マネー_Quick 電子マネー_Quickカード不可 - 燃料カード_Eurowag(Eurowag) - 燃料カード_Eurowag不可(Eurowag cards not accepted) + 燃料カード_Eurowag + 燃料カード_Eurowag不可 有料道路_E-ZPass(E‑ZPass) 有料道路_E-ZPass不可(E‑ZPass not accepted) 燃料カード_Euroshell @@ -1820,12 +1820,12 @@ 有り 無し - バスク伝統サイダー(リンゴ酒・ワイン)ハウス(Sagardotegia) + 01営業形態_バスク伝統サイダー(リンゴ酒・ワイン)ハウス(Sagardotegia) 肯定 非自動化 非回転ブラシ洗車の有無(Brushless) - 肯定 - 否定 + 有り + 非回転ブラシ洗車:無し 障害者専用コーナーの有無(Dedicated places for disabled) 有り 無し @@ -2096,7 +2096,7 @@ 無し 歩行許可時のみ - リゾート種別(Type) + 保養地、援助施設 望遠鏡の種類 光学望遠鏡 電波望遠鏡 @@ -3227,4 +3227,19 @@ カウンセリング(親密なパートナーあるいは家庭内暴力):対応 カウンセリング(親密なパートナーあるいは家庭内暴力):対応できず + 出力電力 + 出力:電気 + 熱水発電 + 出力:熱水 + 出力:蒸気 + 出力:熱風 + 出力:冷水 + 圧縮空気発電 + 出力:圧縮空気 + 出力:真空 + バイオガス発電 + 出力:バイオガス + + 出力(電力):無し + diff --git a/OsmAnd/res/values-ja/strings.xml b/OsmAnd/res/values-ja/strings.xml index 870cee5214..caa2ca1cbe 100644 --- a/OsmAnd/res/values-ja/strings.xml +++ b/OsmAnd/res/values-ja/strings.xml @@ -2088,7 +2088,7 @@ POIの更新は利用できません バックグラウンドで実行 お気に入りの情報 移動シミュレーションの停止 - 計算されたルート、またはGPXに記録されたルートを使用して移動時のシミュレートをします + 計算されたルート、またはGPXに記録されたルートを使用して移動のシミュレーションをします お気に入りに追加 よろしいですか? 未保存の変更は失われます。続行しますか? @@ -2421,7 +2421,7 @@ OsmAndとOSMをサポートする方法として現状最適な方法である OSMライブナビゲーション 目的地が設定されていません 道を外れてもルートを変更しない - 適切でない案内だった場合ルートを変更しない + 反対方向へ向かった場合ルートを変更しない 目的地の方向と逆進した場合、自動的にルートの再計算をしないようにします スマート音声案内 目的地への方向が変更されたときのみ通知します @@ -2452,7 +2452,7 @@ OsmAndとOSMをサポートする方法として現状最適な方法である フォローはこちらから 音シグナルで案内 振動シグナルで案内 - 案内されたルートから大きく離れた場合、自動的にルートの再計算をしないようにします + ルートから離れた場合に、自動的にルートの再計算をしないようにします 検索に戻る 選択された履歴を削除しますか? マップ上に%1$sを表示 @@ -2487,7 +2487,7 @@ OsmAndとOSMをサポートする方法として現状最適な方法である 磁方位 レガシー検索 レガシー検索を表示 - ドロワーリスト型のレガシー(旧型)検索も使用できるようにします + メニューリストで旧型検索も使用できるようにします 高速道路を許可 高速道路を使用可能とみなします " • クイックアクションボタンの実装 @@ -2583,7 +2583,7 @@ OsmAndとOSMをサポートする方法として現状最適な方法である 場所が見つかりません マップのダウンロードにはインターネット接続が必要です。 現在地取得 - OsmAndのアップデート情報や、割引に関しての情報をチェックしません + OsmAndのバージョン更新や、割引に関しての情報をチェックしません 更新情報を非表示 すべてのマップを今すぐ更新しますか? お気に入り %1$sを置き換えてよろしいですか? @@ -2976,8 +2976,8 @@ OsmAndとOSMをサポートする方法として現状最適な方法である 皆で共有する路上写真です。新たな場所の発見に、協力しあい、この世界を写真で保存しましょう。 インストール OsmAndは指定したファイルをインポートできません。OsmAndにその場所からファイルを読み取る権限があるか確認して下さい。 - 同心円 - 2点間距離測定 + 同心円測定器 + 2点間測定器 権限 上に移動 美麗 @@ -2990,8 +2990,13 @@ OsmAndとOSMをサポートする方法として現状最適な方法である 指定の期間に追加された画像だけを表示します。 日付 ユーザー名を入力 - 指定のユーザーによって追加された画像のみを表示します。 + 指定のユーザーに追加された画像だけを表示します。 ユーザー名 - 投稿者または日付で投稿された画像をフィルタリングできます。 フィルタは拡大ズームにのみ適用されます。 + 投稿者と日付で投稿された画像をフィルタリングできます。 +\nマップが一定値以上に拡大された場合のみフィルタは適用されます。 距離補正済み + リセット + 月ごとのフォルダ別に記録経路を保存 + サブフォルダ(例:2017-01)を作成して記録した月ごとに経路を保存します。 + 平均 diff --git a/OsmAnd/res/values-lt/phrases.xml b/OsmAnd/res/values-lt/phrases.xml index fae8c97d99..f619b657d2 100644 --- a/OsmAnd/res/values-lt/phrases.xml +++ b/OsmAnd/res/values-lt/phrases.xml @@ -1,6 +1,6 @@ Parduotuvė - Maisto parduotuvė + Maisto parduotuvė ir supermarketas Pagalbos tarnybos Transportas Kelio kliūtis @@ -364,4 +364,35 @@ Nekilnojamo turto agentūra Visuomeninė organizacija + Dieta + Medicininė specializacija + Palapinės + Automobilių priekabos + Elektros energijos šaltinis + Medicininė sistema + Namų aplankymas + Mokėjimo tipas (transportas) + Suspaustas oras + Charakteristika + Valgykla + Tipas + Paslaugos + Motociklo tipas + +Avarinė infrastruktūra + Mobilių telefonų parduotuvė + Motociklų parduotuvė + Optika + Ekologiški maisto produktai + Aktyvaus poilsio prekių parduotuvė + Dažų parduotuvė + Gyvūnų parduotuvė + Foto parduotuvė + Radijo technikos parduotuvė + Naudotų daiktų parduotuvė + Nardymo prekių parduotuvė + Laivų aptrūpinimo agentas + Stalo įrankių parduotuvė + Turgelis + Padangų parduotuvė diff --git a/OsmAnd/res/values-lt/strings.xml b/OsmAnd/res/values-lt/strings.xml index 7be5dbe761..b1ca6758c9 100644 --- a/OsmAnd/res/values-lt/strings.xml +++ b/OsmAnd/res/values-lt/strings.xml @@ -2842,4 +2842,55 @@ Tai yra puikus būdas paremti OsmAnd ir OSM, jei jie jums patinka. Naudoti SRTM, ASTER ir EU-DEM pateikiamus vietovės aukščio duomenis Rodyti gylio kontūrus ir taškus Vandenyno gylio kontūrai + \\022 Nauja funkcija: Greito veiksmo mygtukas +\n +\n • Patobulinta liečiamo ekrano veiksmų reakcija (t.y. mąstelio keitimas ir žemėlapio stūmimas tuo pačiu metu) +\n +\n • Nauji žemėlapio fontai tinkantys daugiau kalbų +\n +\n • Teksto vertimo į kalbą (TTS) palaikymas regioniniams kalbų variantams (ir akcentams) +\n +\n • Kelių žemėlapių stilių ir vikipedijos matomumo patobulinimai +\n +\n • Open Location Code (OLC) palaikymas +\n +\n • Aukščio, įkalnės ir greičio profilio rodymas į GPX įrašytiems ir apskaičiuotiems maršrutams +\n +\n • \"Vairavimo stiliaus\" nustatyms ir logikos patobulinimai dviračių maršrutų skaičiavimams +\n +\n • Nustatymai aukščio infromaciją dviračių maršrutų skaičiavimams +\n +\n • Keltas kitų patobulinimų ir klaidų ištaisymų +\n +\n ir dar daugiau… + Automatinis įrašo padalinimas po pertraukimo + Pradėti naują segmentą po 6 minučių tarpo, naują kelio įrašą po 2 valandų, arba naują failą jie po ilgesnio tarpo pasikeitė data. + Kontūrų linijų tankis + Konturų linijų tankis + Konturų linijų plotis + Konturų linijų plotis + Priedėti senąją paiešką prie stalčiaus sąrašo + Leisti greitkelius + Šalia esantys Vikipedijos straipsniai + Sukite į %1$d išvažiavimą ir keliaukite + Jūs dar neturite išsaugotų kelių + Jūs taip pat galite išsaugoti kelius segtuve + Rodyti pranešimą kuris leidžia pradėti kelionės įrašymą paspaudus \"Įrašyti\" mygtuką + \\022 INteraktyvios žemėlapio ikonos +\n +\n • Galingas LV paieškos filtras: ieškoti restoranų pvz. pagal virtuvę ar kempingų pagal su specifinėm paslaugom +\n +\n • Naujas Topo žemėlapio stilius dviratininkams ir keliautojams +\n +\n • Patobulintas kelionės įrašymas +\n +\n • Patobulinti navigaciniai pranešimai (Android Wear) +\n +\n • Daugelis kitų patobulinimų ir klaidų pataisymų +\n +\n ir dar daugiau… + Filtras: Nustatyti minimalų greitų kad taškas būtų pažymėtas + Minimalus atstumas pažymėjimui + Filtras: Nustatyti minimalų atstumą nuo ankstesnės pozicijos kad taškas būtų išsaugotas + Minimalus išsaugojimo tikslumas diff --git a/OsmAnd/res/values-nb/strings.xml b/OsmAnd/res/values-nb/strings.xml index 30f70b8168..e8aa6576c4 100644 --- a/OsmAnd/res/values-nb/strings.xml +++ b/OsmAnd/res/values-nb/strings.xml @@ -1755,7 +1755,7 @@ Søk etter by eller region Søk (gamlemåten) Vis søk (gamlemåten) - Aktiver søk (gamlemåten) i sidemenyen + Legg til søk (gamlemåten) i sidemenyen Tillat motorveier Tillat motorveier Last opp interessepunkt @@ -2274,4 +2274,11 @@ Representerer området: %1$s x %2$s Tillatelser OsmAnd kan ikke importere filen. Kontroller om OsmAnd har leserettighet for fillagringsstedet. Korrigert avstand + Last på nytt + Feil brukernavn! + Til + Fra + Datoer + Skriv inn brukernavn + Brukernavn diff --git a/OsmAnd/res/values-pl/strings.xml b/OsmAnd/res/values-pl/strings.xml index d9c22d6cbf..8048526db4 100644 --- a/OsmAnd/res/values-pl/strings.xml +++ b/OsmAnd/res/values-pl/strings.xml @@ -2891,7 +2891,7 @@ Reprezentuje obszar: %1$s x %2$s Stopień przybliżenia: %1$s Zestaw kolorów Wyświetlanie od stopnia przybliżenia - Zezwolenie na dostęp prywatny + Uwzględnianie prywatnych obszarów Zezwala na dostęp do prywatnych obszarów Ta trasa może być zbyt długa do wyznaczenia. Prosimy dodać punkty pośrednie, jeżeli nie dostaniesz wyniku w ciągu 10 minut. Nazwa zawiera zbyt wiele wielkich liter. Czy chcesz kontynuować? @@ -2947,8 +2947,8 @@ Reprezentuje obszar: %1$s x %2$s Proszę wprowadzić nazwę użytkownika Można filtrować obrazy według nazwy użytkownika lub daty. Filtry mają zastosowanie dla większych przybliżeń. Wyświetla obrazy dodane przez określonego użytkownika. - Zapisz zarejestrowane ślady w miesięcznych katalogach - Zapisz zarejestrowane ślady w podfolderach na każdy rejestrowany miesiąc (np. 2017-01). + Ślady w miesięcznych katalogach + Przechowuje zarejestrowane ślady w podkatalogach odpowiadającym miesiącom (np. 2017-01). Resetuj Przeładuj kafelki, aby je uaktualnić. Średnia diff --git a/OsmAnd/res/values-ru/phrases.xml b/OsmAnd/res/values-ru/phrases.xml index 8cc26e1da2..0449f0ad8c 100644 --- a/OsmAnd/res/values-ru/phrases.xml +++ b/OsmAnd/res/values-ru/phrases.xml @@ -3426,6 +3426,8 @@ Двойного назначения Классика + Не вырабатывает электричество + Владелец \ No newline at end of file diff --git a/OsmAnd/res/values-sc/strings.xml b/OsmAnd/res/values-sc/strings.xml index 1d522e110a..3fa9897ef2 100644 --- a/OsmAnd/res/values-sc/strings.xml +++ b/OsmAnd/res/values-sc/strings.xml @@ -1673,7 +1673,7 @@ Memòria in proportzione %4$s MB (lìmite de Android %5$s MB, Dalvik %6$s MB).Limite de lestresa Casellu Cartellu de Stop - Controllu doganale + Puntu de controllu Minimadore de lestresa Autovelox Avisu de tràficu diff --git a/OsmAnd/res/values-sk/phrases.xml b/OsmAnd/res/values-sk/phrases.xml index 4a6b9ed637..0158976c19 100644 --- a/OsmAnd/res/values-sk/phrases.xml +++ b/OsmAnd/res/values-sk/phrases.xml @@ -1912,7 +1912,7 @@ Akvakultúra: mušle Teleskop/Ďalekohľad - Teleskop: optický + Optický Teleskop: rádiový Teleskop: gamma-žiarenie Výbuch: priemer krátera @@ -1921,12 +1921,12 @@ Tlak v hydrante Počet hydrantov Prietok v hydrante - Umiestnenie hydrantu: na chodníku - Umiestnenie hydrantu: na trávniku - Umiestnenie hydrantu: v jazdnom pruhu - Umiestnenie hydrantu: na parkovisku - Umiestnenie hydrantu: na ulici - Umiestnenie hydrantu: pod zemou + Na chodníku + Na trávniku + V jazdnom pruhu + Na parkovisku + Na ulici + Pod zemou Vzhľad hydrantu: wsh Vodovod Rybník @@ -2451,7 +2451,7 @@ Stany nepovolené Otvorený oheň polovený Otvorený oheň nepolovený - Skautský tábor: áno + Áno Skautský tábor: nie Len skupiny: áno Len skupiny: nie @@ -2494,8 +2494,8 @@ Technický monument - Nabíjanie bicyklov: áno - Nabíjanie bicyklov: nie + Nabíjanie: áno + Nabíjanie: nie Stanica na vlastnú opravu bicyklov Vojenský kontrolný bod diff --git a/OsmAnd/res/values-sk/strings.xml b/OsmAnd/res/values-sk/strings.xml index efb2b8c908..19633ee9b4 100644 --- a/OsmAnd/res/values-sk/strings.xml +++ b/OsmAnd/res/values-sk/strings.xml @@ -2906,4 +2906,5 @@ Zodpovedá oblasti: %1$s x %2$s Trvanie presunu Max/Min Úsek + Rozsah = Min/Max diff --git a/OsmAnd/res/values-zh-rTW/strings.xml b/OsmAnd/res/values-zh-rTW/strings.xml index 80d4de1b44..e9616c12e1 100644 --- a/OsmAnd/res/values-zh-rTW/strings.xml +++ b/OsmAnd/res/values-zh-rTW/strings.xml @@ -257,7 +257,7 @@ 向左方 左前方 點鐘 - 接近 + 朝向 精確性 海拔高度 沒有數據 @@ -656,15 +656,15 @@ SD卡無法存取。\n您將無法看到地圖或找地點。 SD 卡是唯讀模式。\n您只能看預載的地圖且無法由網路下載。 解壓縮檔案… - 右轉之後直行 - 右後轉之後直行 - 轉入右前方之後直行 - 左轉之後直行 - 左後轉之後直行 - 轉入右前方之後直行 - 迴轉之後直行 + 右轉後直行 + 向右急轉後直行 + 向右急轉後直行 + 左轉後直行 + 向左急轉後直行 + 向左急轉後直行 + 迴轉後直行 前方 - 繼續 + 隨後 下載地區 搜尋訊號中… 查尋目前地圖中心附近 @@ -2077,7 +2077,7 @@ OsmAnd (Automated Navigation Directions) 是一個地圖和導航的應用程式 地形陰影圖層停用 請啟動航線標識外掛元件 請啟動 SRTM 外掛元件 - 接著 + 隨後 完整版 地區 @@ -2884,11 +2884,12 @@ Facebook:https://www.facebook.com/osmandapp 圖磚快取 重置 在每月的資料夾中存儲已記錄的軌跡 - 在每個月已記錄的子資料夾中存儲記錄的軌跡 (例如 2017-01)。 + 存儲已記錄的軌跡以月份記錄在子資料夾中 (例如 2017-01)。 平均 %1$d 的 %2$d 上升/下降 移動時間 最大/最小 範圍 + 範圍 = 最小/最大 diff --git a/OsmAnd/res/values/phrases.xml b/OsmAnd/res/values/phrases.xml index 58ffcbece5..697e749f93 100644 --- a/OsmAnd/res/values/phrases.xml +++ b/OsmAnd/res/values/phrases.xml @@ -3395,4 +3395,8 @@ Dualsport Standard + Output (electricity): no + + Owner + diff --git a/OsmAnd/src/net/osmand/aidl/IOsmAndAidlInterface.aidl b/OsmAnd/src/net/osmand/aidl/IOsmAndAidlInterface.aidl index adfccdbdf1..94df40d166 100644 --- a/OsmAnd/src/net/osmand/aidl/IOsmAndAidlInterface.aidl +++ b/OsmAnd/src/net/osmand/aidl/IOsmAndAidlInterface.aidl @@ -39,18 +39,10 @@ import net.osmand.aidl.maplayer.AddMapLayerParams; import net.osmand.aidl.maplayer.RemoveMapLayerParams; import net.osmand.aidl.maplayer.UpdateMapLayerParams; +// NOTE: Add new methods at the end of file!!! + interface IOsmAndAidlInterface { - boolean refreshMap(); - - boolean addFavoriteGroup(in AddFavoriteGroupParams params); - boolean removeFavoriteGroup(in RemoveFavoriteGroupParams params); - boolean updateFavoriteGroup(in UpdateFavoriteGroupParams params); - - boolean addFavorite(in AddFavoriteParams params); - boolean removeFavorite(in RemoveFavoriteParams params); - boolean updateFavorite(in UpdateFavoriteParams params); - boolean addMapMarker(in AddMapMarkerParams params); boolean removeMapMarker(in RemoveMapMarkerParams params); boolean updateMapMarker(in UpdateMapMarkerParams params); @@ -74,4 +66,15 @@ interface IOsmAndAidlInterface { boolean setMapLocation(in SetMapLocationParams params); boolean calculateRoute(in CalculateRouteParams params); + + boolean refreshMap(); + + boolean addFavoriteGroup(in AddFavoriteGroupParams params); + boolean removeFavoriteGroup(in RemoveFavoriteGroupParams params); + boolean updateFavoriteGroup(in UpdateFavoriteGroupParams params); + + boolean addFavorite(in AddFavoriteParams params); + boolean removeFavorite(in RemoveFavoriteParams params); + boolean updateFavorite(in UpdateFavoriteParams params); + } \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/aidl/OsmandAidlApi.java b/OsmAnd/src/net/osmand/aidl/OsmandAidlApi.java index 351e511ea5..41c8037ae5 100644 --- a/OsmAnd/src/net/osmand/aidl/OsmandAidlApi.java +++ b/OsmAnd/src/net/osmand/aidl/OsmandAidlApi.java @@ -5,6 +5,7 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.net.Uri; +import android.os.AsyncTask; import android.os.ParcelFileDescriptor; import android.view.View; @@ -20,13 +21,16 @@ import net.osmand.data.FavouritePoint; import net.osmand.data.LatLon; import net.osmand.data.PointDescription; import net.osmand.plus.FavouritesDbHelper; +import net.osmand.plus.GPXDatabase.GpxDataItem; import net.osmand.plus.GPXUtilities; import net.osmand.plus.GPXUtilities.GPXFile; +import net.osmand.plus.GpxSelectionHelper; import net.osmand.plus.GpxSelectionHelper.SelectedGpxFile; import net.osmand.plus.MapMarkersHelper; import net.osmand.plus.MapMarkersHelper.MapMarker; import net.osmand.plus.OsmandApplication; import net.osmand.plus.activities.MapActivity; +import net.osmand.plus.dialogs.ConfigureMapMenu; import net.osmand.plus.helpers.ColorDialogs; import net.osmand.plus.views.AidlMapLayer; import net.osmand.plus.views.MapInfoLayer; @@ -631,13 +635,71 @@ public class OsmandAidlApi { return false; } - boolean importGpxFromFile(File source, String destinationPath) { + private void finishGpxImport(boolean destinationExists, File destination, String color, boolean show) { + int col = ConfigureMapMenu.GpxAppearanceAdapter.parseTrackColor( + app.getRendererRegistry().getCurrentSelectedRenderer(), color); + if (!destinationExists) { + GpxDataItem gpxDataItem = new GpxDataItem(destination, col); + app.getGpxDatabase().add(gpxDataItem); + } else { + GpxDataItem item = app.getGpxDatabase().getItem(destination); + if (item != null) { + app.getGpxDatabase().updateColor(item, col); + } + } + final GpxSelectionHelper helper = app.getSelectedGpxHelper(); + final SelectedGpxFile selectedGpx = helper.getSelectedFileByName(destination.getName()); + if (selectedGpx != null) { + if (show) { + new AsyncTask() { + + @Override + protected GPXFile doInBackground(File... files) { + return GPXUtilities.loadGPXFile(app, files[0]); + } + + @Override + protected void onPostExecute(GPXFile gpx) { + if (gpx.warning == null) { + selectedGpx.setGpxFile(gpx); + refreshMap(); + } + } + + }.execute(destination); + } else { + helper.selectGpxFile(selectedGpx.getGpxFile(), false, false); + refreshMap(); + } + } else if (show) { + new AsyncTask() { + + @Override + protected GPXFile doInBackground(File... files) { + return GPXUtilities.loadGPXFile(app, files[0]); + } + + @Override + protected void onPostExecute(GPXFile gpx) { + if (gpx.warning == null) { + helper.selectGpxFile(gpx, true, false); + refreshMap(); + } + } + + }.execute(destination); + } + } + + boolean importGpxFromFile(File source, String destinationPath, String color, boolean show) { if (source != null && !Algorithms.isEmpty(destinationPath)) { if (source.exists() && source.canRead()) { File destination = app.getAppPath(IndexConstants.GPX_INDEX_DIR + destinationPath); if (destination.getParentFile().canWrite()) { + boolean destinationExists = destination.exists(); try { Algorithms.fileCopy(source, destination); + finishGpxImport(destinationExists, destination, color, show); return true; } catch (IOException e) { e.printStackTrace(); @@ -648,18 +710,20 @@ public class OsmandAidlApi { return false; } - boolean importGpxFromUri(Uri gpxUri, String destinationPath) { + boolean importGpxFromUri(Uri gpxUri, String destinationPath, String color, boolean show) { if (gpxUri != null && !Algorithms.isEmpty(destinationPath)) { File destination = app.getAppPath(IndexConstants.GPX_INDEX_DIR + destinationPath); - ParcelFileDescriptor gpxParcelDescriptor = null; + ParcelFileDescriptor gpxParcelDescriptor; try { gpxParcelDescriptor = app.getContentResolver().openFileDescriptor(gpxUri, "r"); if (gpxParcelDescriptor != null) { + boolean destinationExists = destination.exists(); FileDescriptor fileDescriptor = gpxParcelDescriptor.getFileDescriptor(); InputStream is = new FileInputStream(fileDescriptor); FileOutputStream fout = new FileOutputStream(destination); try { Algorithms.streamCopy(is, fout); + finishGpxImport(destinationExists, destination, color, show); } finally { try { is.close(); @@ -681,14 +745,16 @@ public class OsmandAidlApi { return false; } - boolean importGpxFromData(String sourceRawData, String destinationPath) { + boolean importGpxFromData(String sourceRawData, String destinationPath, String color, boolean show) { if (!Algorithms.isEmpty(sourceRawData) && !Algorithms.isEmpty(destinationPath)) { File destination = app.getAppPath(IndexConstants.GPX_INDEX_DIR + destinationPath); try { InputStream is = new ByteArrayInputStream(sourceRawData.getBytes()); FileOutputStream fout = new FileOutputStream(destination); + boolean destinationExists = destination.exists(); try { Algorithms.streamCopy(is, fout); + finishGpxImport(destinationExists, destination, color, show); } finally { try { is.close(); @@ -713,9 +779,23 @@ public class OsmandAidlApi { if (!Algorithms.isEmpty(fileName)) { File f = app.getAppPath(IndexConstants.GPX_INDEX_DIR + fileName); if (f.exists()) { - GPXFile gpx = GPXUtilities.loadGPXFile(app, f); - app.getSelectedGpxHelper().selectGpxFile(gpx, true, false); - refreshMap(); + new AsyncTask() { + + @Override + protected GPXFile doInBackground(File... files) { + return GPXUtilities.loadGPXFile(app, files[0]); + } + + @Override + protected void onPostExecute(GPXFile gpx) { + if (gpx.warning == null) { + app.getSelectedGpxHelper().selectGpxFile(gpx, true, false); + refreshMap(); + } + } + + }.execute(f); + return true; } } diff --git a/OsmAnd/src/net/osmand/aidl/OsmandAidlService.java b/OsmAnd/src/net/osmand/aidl/OsmandAidlService.java index 2a40acb86a..ce7152edd8 100644 --- a/OsmAnd/src/net/osmand/aidl/OsmandAidlService.java +++ b/OsmAnd/src/net/osmand/aidl/OsmandAidlService.java @@ -227,11 +227,14 @@ public class OsmandAidlService extends Service { public boolean importGpx(ImportGpxParams params) throws RemoteException { if (params != null && !Algorithms.isEmpty(params.getDestinationPath())) { if (params.getGpxFile() != null) { - return getApi().importGpxFromFile(params.getGpxFile(), params.getDestinationPath()); + return getApi().importGpxFromFile(params.getGpxFile(), params.getDestinationPath(), + params.getColor(), params.isShow()); } else if (params.getGpxUri() != null) { - return getApi().importGpxFromUri(params.getGpxUri(), params.getDestinationPath()); + return getApi().importGpxFromUri(params.getGpxUri(), params.getDestinationPath(), + params.getColor(), params.isShow()); } else if (params.getSourceRawData() != null) { - return getApi().importGpxFromData(params.getSourceRawData(), params.getDestinationPath()); + return getApi().importGpxFromData(params.getSourceRawData(), params.getDestinationPath(), + params.getColor(), params.isShow()); } } return false; diff --git a/OsmAnd/src/net/osmand/aidl/gpx/ImportGpxParams.java b/OsmAnd/src/net/osmand/aidl/gpx/ImportGpxParams.java index 4776cf8503..6d2ed2cb88 100644 --- a/OsmAnd/src/net/osmand/aidl/gpx/ImportGpxParams.java +++ b/OsmAnd/src/net/osmand/aidl/gpx/ImportGpxParams.java @@ -12,20 +12,28 @@ public class ImportGpxParams implements Parcelable { private Uri gpxUri; private String sourceRawData; private String destinationPath; + private String color; + private boolean show; - public ImportGpxParams(File gpxFile, String destinationPath) { + public ImportGpxParams(File gpxFile, String destinationPath, String color, boolean show) { this.gpxFile = gpxFile; this.destinationPath = destinationPath; + this.color = color; + this.show = show; } - public ImportGpxParams(Uri gpxUri, String destinationPath) { + public ImportGpxParams(Uri gpxUri, String destinationPath, String color, boolean show) { this.gpxUri = gpxUri; this.destinationPath = destinationPath; + this.color = color; + this.show = show; } - public ImportGpxParams(String sourceRawData, String destinationPath) { + public ImportGpxParams(String sourceRawData, String destinationPath, String color, boolean show) { this.sourceRawData = sourceRawData; this.destinationPath = destinationPath; + this.color = color; + this.show = show; } public ImportGpxParams(Parcel in) { @@ -59,6 +67,14 @@ public class ImportGpxParams implements Parcelable { return destinationPath; } + public String getColor() { + return color; + } + + public boolean isShow() { + return show; + } + public void writeToParcel(Parcel out, int flags) { if (gpxFile != null) { out.writeString(gpxFile.getAbsolutePath()); @@ -68,6 +84,8 @@ public class ImportGpxParams implements Parcelable { out.writeParcelable(gpxUri, flags); out.writeString(sourceRawData); out.writeString(destinationPath); + out.writeString(color); + out.writeByte((byte) (show ? 1 : 0)); } private void readFromParcel(Parcel in) { @@ -78,9 +96,11 @@ public class ImportGpxParams implements Parcelable { gpxUri = in.readParcelable(Uri.class.getClassLoader()); sourceRawData = in.readString(); destinationPath = in.readString(); + color = in.readString(); + show = in.readByte() == 1; } public int describeContents() { return 0; } -} +} \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/plus/GPXDatabase.java b/OsmAnd/src/net/osmand/plus/GPXDatabase.java index 62b8eae644..c3539cd40f 100644 --- a/OsmAnd/src/net/osmand/plus/GPXDatabase.java +++ b/OsmAnd/src/net/osmand/plus/GPXDatabase.java @@ -13,7 +13,7 @@ import java.util.List; public class GPXDatabase { private static final String DB_NAME = "gpx_database"; - private static final int DB_VERSION = 2; + private static final int DB_VERSION = 3; private static final String GPX_TABLE_NAME = "gpxTable"; private static final String GPX_COL_NAME = "fileName"; private static final String GPX_COL_DIR = "fileDir"; @@ -38,6 +38,7 @@ public class GPXDatabase { private static final String GPX_COL_WPT_POINTS = "wptPoints"; private static final String GPX_COL_COLOR = "color"; + private static final String GPX_COL_FILE_LAST_MODIFIED_TIME = "fileLastModifiedTime"; private static final String GPX_TABLE_CREATE = "CREATE TABLE IF NOT EXISTS " + GPX_TABLE_NAME + " (" + GPX_COL_NAME + " TEXT, " + @@ -61,14 +62,30 @@ public class GPXDatabase { GPX_COL_POINTS + " int, " + GPX_COL_WPT_POINTS + " int, " + - GPX_COL_COLOR + " TEXT);"; + GPX_COL_COLOR + " TEXT, " + + GPX_COL_FILE_LAST_MODIFIED_TIME + " long);"; - private static final String GPX_TABLE_SELECT = "SELECT " + GPX_COL_NAME + ", " + GPX_COL_DIR + "," + GPX_COL_TOTAL_DISTANCE + ", " + - GPX_COL_TOTAL_TRACKS + ", " + GPX_COL_START_TIME + ", " + GPX_COL_END_TIME + ", " + - GPX_COL_TIME_SPAN + ", " + GPX_COL_TIME_MOVING + ", " + GPX_COL_TOTAL_DISTANCE_MOVING + ", " + - GPX_COL_DIFF_ELEVATION_UP + ", " + GPX_COL_DIFF_ELEVATION_DOWN + ", " + GPX_COL_AVG_ELEVATION + ", " + - GPX_COL_MIN_ELEVATION + ", " + GPX_COL_MAX_ELEVATION + ", " + GPX_COL_MAX_SPEED + ", " + - GPX_COL_AVG_SPEED + ", " + GPX_COL_POINTS + ", " + GPX_COL_WPT_POINTS + ", " + GPX_COL_COLOR + + private static final String GPX_TABLE_SELECT = "SELECT " + + GPX_COL_NAME + ", " + + GPX_COL_DIR + "," + + GPX_COL_TOTAL_DISTANCE + ", " + + GPX_COL_TOTAL_TRACKS + ", " + + GPX_COL_START_TIME + ", " + + GPX_COL_END_TIME + ", " + + GPX_COL_TIME_SPAN + ", " + + GPX_COL_TIME_MOVING + ", " + + GPX_COL_TOTAL_DISTANCE_MOVING + ", " + + GPX_COL_DIFF_ELEVATION_UP + ", " + + GPX_COL_DIFF_ELEVATION_DOWN + ", " + + GPX_COL_AVG_ELEVATION + ", " + + GPX_COL_MIN_ELEVATION + ", " + + GPX_COL_MAX_ELEVATION + ", " + + GPX_COL_MAX_SPEED + ", " + + GPX_COL_AVG_SPEED + ", " + + GPX_COL_POINTS + ", " + + GPX_COL_WPT_POINTS + ", " + + GPX_COL_COLOR + ", " + + GPX_COL_FILE_LAST_MODIFIED_TIME + " FROM " + GPX_TABLE_NAME; private OsmandApplication context; @@ -77,12 +94,18 @@ public class GPXDatabase { private File file; private GPXTrackAnalysis analysis; private int color; + private long fileLastModifiedTime; public GpxDataItem(File file, GPXTrackAnalysis analysis) { this.file = file; this.analysis = analysis; } + public GpxDataItem(File file, int color) { + this.file = file; + this.color = color; + } + public File getFile() { return file; } @@ -95,8 +118,8 @@ public class GPXDatabase { return color; } - public void setColor(int color) { - this.color = color; + public long getFileLastModifiedTime() { + return fileLastModifiedTime; } } @@ -106,18 +129,19 @@ public class GPXDatabase { private SQLiteConnection openConnection(boolean readonly) { SQLiteConnection conn = context.getSQLiteAPI().getOrCreateDatabase(DB_NAME, readonly); - if (conn.getVersion() == 0 || DB_VERSION != conn.getVersion()) { + int version = conn.getVersion(); + if (version == 0 || DB_VERSION != version) { if (readonly) { conn.close(); conn = context.getSQLiteAPI().getOrCreateDatabase(DB_NAME, readonly); } - if (conn.getVersion() == 0) { + version = conn.getVersion(); + conn.setVersion(DB_VERSION); + if (version == 0) { onCreate(conn); } else { - onUpgrade(conn, conn.getVersion(), DB_VERSION); + onUpgrade(conn, version, DB_VERSION); } - conn.setVersion(DB_VERSION); - } return conn; } @@ -130,6 +154,33 @@ public class GPXDatabase { if (oldVersion < 2) { db.execSQL("ALTER TABLE " + GPX_TABLE_NAME + " ADD " + GPX_COL_COLOR + " TEXT"); } + if (oldVersion < 3) { + db.execSQL("ALTER TABLE " + GPX_TABLE_NAME + " ADD " + GPX_COL_FILE_LAST_MODIFIED_TIME + " long"); + List items = getItems(); + for (GpxDataItem item : items) { + updateLastModifiedTime(item); + } + } + } + + private boolean updateLastModifiedTime(GpxDataItem item) { + SQLiteConnection db = openConnection(false); + if (db != null) { + try { + String fileName = getFileName(item.file); + String fileDir = getFileDir(item.file); + long fileLastModifiedTime = item.file.lastModified(); + db.execSQL("UPDATE " + GPX_TABLE_NAME + " SET " + + GPX_COL_FILE_LAST_MODIFIED_TIME + " = ? " + + " WHERE " + GPX_COL_NAME + " = ? AND " + GPX_COL_DIR + " = ?", + new Object[] { fileLastModifiedTime, fileName, fileDir }); + item.fileLastModifiedTime = fileLastModifiedTime; + } finally { + db.close(); + } + return true; + } + return false; } public boolean rename(File currentFile, File newFile) { @@ -163,7 +214,7 @@ public class GPXDatabase { GPX_COL_COLOR + " = ? " + " WHERE " + GPX_COL_NAME + " = ? AND " + GPX_COL_DIR + " = ?", new Object[] { (color == 0 ? "" : Algorithms.colorToString(color)), fileName, fileDir }); - item.setColor(color); + item.color = color; } finally { db.close(); } @@ -225,11 +276,57 @@ public class GPXDatabase { } else { color = Algorithms.colorToString(item.color); } - db.execSQL( - "INSERT INTO " + GPX_TABLE_NAME + " VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", - new Object[] { fileName, fileDir, a.totalDistance, a.totalTracks, a.startTime, a.endTime, - a.timeSpan, a.timeMoving, a.totalDistanceMoving, a.diffElevationUp, a.diffElevationDown, - a.avgElevation, a.minElevation, a.maxElevation, a.maxSpeed, a.avgSpeed, a.points, a.wptPoints, color }); + if (a != null) { + db.execSQL( + "INSERT INTO " + GPX_TABLE_NAME + " VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + new Object[]{ fileName, fileDir, a.totalDistance, a.totalTracks, a.startTime, a.endTime, + a.timeSpan, a.timeMoving, a.totalDistanceMoving, a.diffElevationUp, a.diffElevationDown, + a.avgElevation, a.minElevation, a.maxElevation, a.maxSpeed, a.avgSpeed, a.points, a.wptPoints, + color, item.file.lastModified() }); + } else { + db.execSQL( + "INSERT INTO " + GPX_TABLE_NAME + "(" + GPX_COL_NAME + ", " + GPX_COL_DIR + ", " + + GPX_COL_COLOR + ", " + GPX_COL_FILE_LAST_MODIFIED_TIME + ") VALUES (?, ?, ?, ?)", + new Object[]{ fileName, fileDir, color, 0 }); + } + } + + public boolean updateAnalysis(GpxDataItem item, GPXTrackAnalysis a) { + SQLiteConnection db = openConnection(false); + if (db != null && a != null) { + try { + String fileName = getFileName(item.file); + String fileDir = getFileDir(item.file); + db.execSQL("UPDATE " + GPX_TABLE_NAME + " SET " + + GPX_COL_TOTAL_DISTANCE + " = ?, " + + GPX_COL_TOTAL_TRACKS + " = ?, " + + GPX_COL_START_TIME + " = ?, " + + GPX_COL_END_TIME + " = ?, " + + GPX_COL_TIME_SPAN + " = ?, " + + GPX_COL_TIME_MOVING + " = ?, " + + GPX_COL_TOTAL_DISTANCE_MOVING + " = ?, " + + GPX_COL_DIFF_ELEVATION_UP + " = ?, " + + GPX_COL_DIFF_ELEVATION_DOWN + " = ?, " + + GPX_COL_AVG_ELEVATION + " = ?, " + + GPX_COL_MIN_ELEVATION + " = ?, " + + GPX_COL_MAX_ELEVATION + " = ?, " + + GPX_COL_MAX_SPEED + " = ?, " + + GPX_COL_AVG_SPEED + " = ?, " + + GPX_COL_POINTS + " = ?, " + + GPX_COL_WPT_POINTS + " = ?, " + + GPX_COL_FILE_LAST_MODIFIED_TIME + " = ? " + + " WHERE " + GPX_COL_NAME + " = ? AND " + GPX_COL_DIR + " = ?", + new Object[]{ a.totalDistance, a.totalTracks, a.startTime, a.endTime, + a.timeSpan, a.timeMoving, a.totalDistanceMoving, a.diffElevationUp, + a.diffElevationDown, a.avgElevation, a.minElevation, a.maxElevation, + a.maxSpeed, a.avgSpeed, a.points, a.wptPoints, item.file.lastModified(), + fileName, fileDir }); + } finally { + db.close(); + } + return true; + } + return false; } private GpxDataItem readItem(SQLiteCursor query) { @@ -252,6 +349,7 @@ public class GPXDatabase { int points = (int)query.getInt(16); int wptPoints = (int)query.getInt(17); String color = query.getString(18); + long fileLastModifiedTime = query.getLong(19); GPXTrackAnalysis a = new GPXTrackAnalysis(); a.totalDistance = totalDistance; @@ -280,10 +378,11 @@ public class GPXDatabase { } GpxDataItem item = new GpxDataItem(new File(dir, fileName), a); try { - item.setColor(Algorithms.isEmpty(color) ? 0 : Algorithms.parseColor(color)); + item.color = Algorithms.isEmpty(color) ? 0 : Algorithms.parseColor(color); } catch (IllegalArgumentException e) { - item.setColor(0); + item.color = 0; } + item.fileLastModifiedTime = fileLastModifiedTime; return item; } diff --git a/OsmAnd/src/net/osmand/plus/GPXUtilities.java b/OsmAnd/src/net/osmand/plus/GPXUtilities.java index ec73ad3bdd..be8990d1a3 100644 --- a/OsmAnd/src/net/osmand/plus/GPXUtilities.java +++ b/OsmAnd/src/net/osmand/plus/GPXUtilities.java @@ -275,7 +275,7 @@ public class GPXUtilities { public double minElevation = 99999; public double maxElevation = -100; - public float minSpeed = 0; + public float minSpeed = Float.MAX_VALUE; public float maxSpeed = 0; public float avgSpeed; @@ -519,13 +519,9 @@ public class GPXUtilities { hasElevationData = true; } + minSpeed = Math.min(speed, minSpeed); if (speed > 0) { totalSpeedSum += speed; - if (minSpeed == 0) { - minSpeed = speed; - } else { - minSpeed = Math.min(speed, minSpeed); - } maxSpeed = Math.max(speed, maxSpeed); speedCount++; } @@ -813,9 +809,11 @@ public class GPXUtilities { for (int i = 0; i < tracks.size(); i++) { Track subtrack = tracks.get(i); for (TrkSegment segment : subtrack.segments) { - g.totalTracks++; - if (segment.points.size() > 1) { - splitSegments.add(new SplitSegment(segment)); + if (!segment.generalSegment) { + g.totalTracks++; + if (segment.points.size() > 1) { + splitSegments.add(new SplitSegment(segment)); + } } } } diff --git a/OsmAnd/src/net/osmand/plus/OsmandApplication.java b/OsmAnd/src/net/osmand/plus/OsmandApplication.java index aa1ed3efcf..3cab9d3105 100644 --- a/OsmAnd/src/net/osmand/plus/OsmandApplication.java +++ b/OsmAnd/src/net/osmand/plus/OsmandApplication.java @@ -14,7 +14,6 @@ import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.Message; -import android.preference.PreferenceManager; import android.support.multidex.MultiDex; import android.support.multidex.MultiDexApplication; import android.support.v7.app.AlertDialog; diff --git a/OsmAnd/src/net/osmand/plus/activities/ActionBarPreferenceActivity.java b/OsmAnd/src/net/osmand/plus/activities/ActionBarPreferenceActivity.java index 19ba8f76e1..93abbc07dd 100644 --- a/OsmAnd/src/net/osmand/plus/activities/ActionBarPreferenceActivity.java +++ b/OsmAnd/src/net/osmand/plus/activities/ActionBarPreferenceActivity.java @@ -44,7 +44,7 @@ public abstract class ActionBarPreferenceActivity extends AppCompatPreferenceAct shadowView = null; } tb.setClickable(true); - tb.setNavigationIcon(((OsmandApplication) getApplication()).getIconsCache().getIcon(R.drawable.abc_ic_ab_back_material)); + tb.setNavigationIcon(((OsmandApplication) getApplication()).getIconsCache().getIcon(R.drawable.ic_arrow_back)); tb.setNavigationContentDescription(R.string.access_shared_string_navigate_up); tb.setBackgroundColor(getResources().getColor(getResIdFromAttribute(this, R.attr.pstsTabBackground))); tb.setTitleTextColor(getResources().getColor(getResIdFromAttribute(this, R.attr.pstsTextColor))); diff --git a/OsmAnd/src/net/osmand/plus/activities/FavoritesSearchFragment.java b/OsmAnd/src/net/osmand/plus/activities/FavoritesSearchFragment.java index 5151d7a3d4..e4419afe3b 100644 --- a/OsmAnd/src/net/osmand/plus/activities/FavoritesSearchFragment.java +++ b/OsmAnd/src/net/osmand/plus/activities/FavoritesSearchFragment.java @@ -105,7 +105,7 @@ public class FavoritesSearchFragment extends DialogFragment { } toolbar = (Toolbar) view.findViewById(R.id.toolbar); - toolbar.setNavigationIcon(app.getIconsCache().getThemedIcon(R.drawable.abc_ic_ab_back_material)); + toolbar.setNavigationIcon(app.getIconsCache().getThemedIcon(R.drawable.ic_arrow_back)); toolbar.setNavigationContentDescription(R.string.access_shared_string_navigate_up); toolbar.setNavigationOnClickListener( new View.OnClickListener() { diff --git a/OsmAnd/src/net/osmand/plus/activities/OsmandActionBarActivity.java b/OsmAnd/src/net/osmand/plus/activities/OsmandActionBarActivity.java index e0d2a7d75f..19bc1c2597 100644 --- a/OsmAnd/src/net/osmand/plus/activities/OsmandActionBarActivity.java +++ b/OsmAnd/src/net/osmand/plus/activities/OsmandActionBarActivity.java @@ -17,7 +17,7 @@ public class OsmandActionBarActivity extends AppCompatActivity { //should be called after set content view protected void setupHomeButton(){ - Drawable back = ((OsmandApplication)getApplication()).getIconsCache().getIcon(R.drawable.abc_ic_ab_back_material); + Drawable back = ((OsmandApplication)getApplication()).getIconsCache().getIcon(R.drawable.ic_arrow_back); back.setColorFilter(ContextCompat.getColor(this, R.color.color_white), PorterDuff.Mode.MULTIPLY); final ActionBar supportActionBar = getSupportActionBar(); if (supportActionBar != null) { diff --git a/OsmAnd/src/net/osmand/plus/activities/ShowRouteInfoDialogFragment.java b/OsmAnd/src/net/osmand/plus/activities/ShowRouteInfoDialogFragment.java index 001447d25a..84c0bb80fd 100644 --- a/OsmAnd/src/net/osmand/plus/activities/ShowRouteInfoDialogFragment.java +++ b/OsmAnd/src/net/osmand/plus/activities/ShowRouteInfoDialogFragment.java @@ -108,7 +108,7 @@ public class ShowRouteInfoDialogFragment extends DialogFragment { view = inflater.inflate(R.layout.route_info_layout, container, false); Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar); - toolbar.setNavigationIcon(getMyApplication().getIconsCache().getThemedIcon(R.drawable.abc_ic_ab_back_material)); + toolbar.setNavigationIcon(getMyApplication().getIconsCache().getThemedIcon(R.drawable.ic_arrow_back)); toolbar.setNavigationContentDescription(R.string.shared_string_close); toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override diff --git a/OsmAnd/src/net/osmand/plus/activities/TrackActivity.java b/OsmAnd/src/net/osmand/plus/activities/TrackActivity.java index 86cbbc353e..b0286a90e6 100644 --- a/OsmAnd/src/net/osmand/plus/activities/TrackActivity.java +++ b/OsmAnd/src/net/osmand/plus/activities/TrackActivity.java @@ -48,6 +48,10 @@ public class TrackActivity extends TabActivity { private List originalGroups = new ArrayList<>(); private boolean stopped = false; + public PagerSlidingTabStrip getSlidingTabLayout() { + return slidingTabLayout; + } + @Override public void onCreate(Bundle icicle) { ((OsmandApplication) getApplication()).applyTheme(this); @@ -235,6 +239,9 @@ public class TrackActivity extends TabActivity { } } getSupportFragmentManager().popBackStack(); + if (isHavingWayPoints() || isHavingRoutePoints()) { + getSlidingTabLayout().setVisibility(View.VISIBLE); + } return true; } } @@ -265,6 +272,9 @@ public class TrackActivity extends TabActivity { } } getSupportFragmentManager().popBackStack(); + if (isHavingWayPoints() || isHavingRoutePoints()) { + getSlidingTabLayout().setVisibility(View.VISIBLE); + } return; } } diff --git a/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNoteRecordingMenuFullScreenFragment.java b/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNoteRecordingMenuFullScreenFragment.java index ddcbdd7591..8b824feb8f 100644 --- a/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNoteRecordingMenuFullScreenFragment.java +++ b/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNoteRecordingMenuFullScreenFragment.java @@ -38,7 +38,7 @@ public class AudioVideoNoteRecordingMenuFullScreenFragment extends Fragment { @Override public void onDestroyView() { super.onDestroyView(); - if (!dismissing) { + if (!dismissing && menu != null) { menu.finishRecording(); } } diff --git a/OsmAnd/src/net/osmand/plus/dashboard/DashboardOnMap.java b/OsmAnd/src/net/osmand/plus/dashboard/DashboardOnMap.java index 8d421d359d..5c7003965b 100644 --- a/OsmAnd/src/net/osmand/plus/dashboard/DashboardOnMap.java +++ b/OsmAnd/src/net/osmand/plus/dashboard/DashboardOnMap.java @@ -487,7 +487,7 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks, DynamicLis lst.setVisibility(View.GONE); ImageView back = (ImageView) dashboardView.findViewById(R.id.toolbar_back); back.setImageDrawable( - getMyApplication().getIconsCache().getIcon(R.drawable.abc_ic_ab_back_material)); + getMyApplication().getIconsCache().getIcon(R.drawable.ic_arrow_back)); back.setOnClickListener(new View.OnClickListener() { @Override diff --git a/OsmAnd/src/net/osmand/plus/download/ui/DownloadResourceGroupFragment.java b/OsmAnd/src/net/osmand/plus/download/ui/DownloadResourceGroupFragment.java index eb3c7df454..6ae4e7b33c 100644 --- a/OsmAnd/src/net/osmand/plus/download/ui/DownloadResourceGroupFragment.java +++ b/OsmAnd/src/net/osmand/plus/download/ui/DownloadResourceGroupFragment.java @@ -101,7 +101,7 @@ public class DownloadResourceGroupFragment extends DialogFragment implements Dow activity.getAccessibilityAssistant().registerPage(view, DownloadActivity.DOWNLOAD_TAB_NUMBER); toolbar = (Toolbar) view.findViewById(R.id.toolbar); - toolbar.setNavigationIcon(getMyApplication().getIconsCache().getIcon(R.drawable.abc_ic_ab_back_material)); + toolbar.setNavigationIcon(getMyApplication().getIconsCache().getIcon(R.drawable.ic_arrow_back)); toolbar.setNavigationContentDescription(R.string.access_shared_string_navigate_up); toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override diff --git a/OsmAnd/src/net/osmand/plus/download/ui/SearchDialogFragment.java b/OsmAnd/src/net/osmand/plus/download/ui/SearchDialogFragment.java index ca02e24d17..ba8eaa4f7d 100644 --- a/OsmAnd/src/net/osmand/plus/download/ui/SearchDialogFragment.java +++ b/OsmAnd/src/net/osmand/plus/download/ui/SearchDialogFragment.java @@ -97,7 +97,7 @@ public class SearchDialogFragment extends DialogFragment implements DownloadEven searchText = ""; Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar); - toolbar.setNavigationIcon(R.drawable.abc_ic_ab_back_material); + toolbar.setNavigationIcon(R.drawable.ic_arrow_back); toolbar.setNavigationContentDescription(R.string.access_shared_string_navigate_up); toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override diff --git a/OsmAnd/src/net/osmand/plus/liveupdates/OsmLiveActivity.java b/OsmAnd/src/net/osmand/plus/liveupdates/OsmLiveActivity.java index d3915d43a6..7acf7f6cd9 100644 --- a/OsmAnd/src/net/osmand/plus/liveupdates/OsmLiveActivity.java +++ b/OsmAnd/src/net/osmand/plus/liveupdates/OsmLiveActivity.java @@ -79,6 +79,12 @@ public class OsmLiveActivity extends AbstractDownloadActivity implements Downloa } } + @Override + protected void onPause() { + super.onPause(); + getMyApplication().getDownloadThread().resetUiActivity(this); + } + @Override protected void onDestroy() { super.onDestroy(); diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/PointEditorFragment.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/PointEditorFragment.java index 0273f49e57..15f9925d72 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/PointEditorFragment.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/PointEditorFragment.java @@ -49,7 +49,7 @@ public abstract class PointEditorFragment extends Fragment { Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar); toolbar.setTitle(getToolbarTitle()); - toolbar.setNavigationIcon(getMyApplication().getIconsCache().getIcon(R.drawable.abc_ic_ab_back_material)); + toolbar.setNavigationIcon(getMyApplication().getIconsCache().getIcon(R.drawable.ic_arrow_back)); toolbar.setNavigationContentDescription(R.string.access_shared_string_navigate_up); toolbar.setTitleTextColor(getResources().getColor(getResIdFromAttribute(getMapActivity(), R.attr.pstsTextColor))); toolbar.setNavigationOnClickListener(new View.OnClickListener() { diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/other/TrackDetailsMenuFragment.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/other/TrackDetailsMenuFragment.java index af40b1b262..604ba1e53d 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/other/TrackDetailsMenuFragment.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/other/TrackDetailsMenuFragment.java @@ -168,7 +168,7 @@ public class TrackDetailsMenuFragment extends Fragment { ImageButton backButton = (ImageButton) mainView.findViewById(R.id.top_bar_back_button); if (backButton != null) { - backButton.setImageDrawable(ctx.getMyApplication().getIconsCache().getIcon(R.drawable.abc_ic_ab_back_material, R.color.color_white)); + backButton.setImageDrawable(ctx.getMyApplication().getIconsCache().getIcon(R.drawable.ic_arrow_back, R.color.color_white)); } } diff --git a/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java b/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java index 5b682404cf..ad6d7bd6d3 100644 --- a/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java +++ b/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java @@ -27,6 +27,8 @@ import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; +import android.view.inputmethod.InputMethodManager; +import android.widget.AbsListView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.CheckBox; @@ -46,6 +48,7 @@ import net.osmand.data.PointDescription; import net.osmand.plus.ContextMenuAdapter; import net.osmand.plus.ContextMenuAdapter.ItemClickListener; import net.osmand.plus.ContextMenuItem; +import net.osmand.plus.GPXDatabase; import net.osmand.plus.GPXDatabase.GpxDataItem; import net.osmand.plus.GPXUtilities; import net.osmand.plus.GPXUtilities.GPXFile; @@ -86,6 +89,7 @@ import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.Date; +import java.util.HashMap; import java.util.HashSet; import java.util.LinkedHashMap; import java.util.LinkedHashSet; @@ -327,6 +331,22 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment { listView.setAdapter(this.adapter); } + listView.setOnScrollListener(new AbsListView.OnScrollListener() { + @Override + public void onScrollStateChanged(AbsListView absListView, int i) { + View currentFocus = getActivity().getCurrentFocus(); + if (currentFocus != null) { + InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); + imm.hideSoftInputFromWindow(currentFocus.getWindowToken(), 0); + } + } + + @Override + public void onScroll(AbsListView absListView, int i, int i1, int i2) { + + } + }); + return v; } @@ -1511,12 +1531,13 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment { public class ProcessGpxTask extends AsyncTask { - private List processedDataFiles = new ArrayList<>(); + private Map processedDataFiles = new HashMap<>(); + private GPXDatabase db = app.getGpxDatabase(); ProcessGpxTask() { - List dataItems = app.getGpxDatabase().getItems(); + List dataItems = db.getItems(); for (GpxDataItem item : dataItems) { - processedDataFiles.add(item.getFile()); + processedDataFiles.put(item.getFile(), item); } } @@ -1545,17 +1566,23 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment { String sub = gpxSubfolder.length() == 0 ? gpxFile.getName() : gpxSubfolder + "/" + gpxFile.getName(); processGPXFolder(gpxFile, sub); - } else if (gpxFile.isFile() && gpxFile.getName().toLowerCase().endsWith(".gpx") && !processedDataFiles.contains(gpxFile)) { - GPXFile f = GPXUtilities.loadGPXFile(app, gpxFile); - GPXTrackAnalysis analysis = f.getAnalysis(gpxFile.lastModified()); - GpxDataItem newItem = new GpxDataItem(gpxFile, analysis); - app.getGpxDatabase().add(newItem); - - if (isCancelled()) { - break; + } else if (gpxFile.isFile() && gpxFile.getName().toLowerCase().endsWith(".gpx")) { + GpxDataItem item = processedDataFiles.get(gpxFile); + if (item == null || item.getFileLastModifiedTime() != gpxFile.lastModified()) { + GPXFile f = GPXUtilities.loadGPXFile(app, gpxFile); + GPXTrackAnalysis analysis = f.getAnalysis(gpxFile.lastModified()); + if (item == null) { + item = new GpxDataItem(gpxFile, analysis); + db.add(item); + } else { + db.updateAnalysis(item, analysis); + } } - processedDataFiles.add(gpxFile); - publishProgress(newItem); + processedDataFiles.put(gpxFile, item); + publishProgress(item); + } + if (isCancelled()) { + break; } } } diff --git a/OsmAnd/src/net/osmand/plus/myplaces/SplitSegmentFragment.java b/OsmAnd/src/net/osmand/plus/myplaces/SplitSegmentFragment.java index b0d52a599f..67314082a6 100644 --- a/OsmAnd/src/net/osmand/plus/myplaces/SplitSegmentFragment.java +++ b/OsmAnd/src/net/osmand/plus/myplaces/SplitSegmentFragment.java @@ -544,7 +544,7 @@ public class SplitSegmentFragment extends OsmAndListFragment { String maxSpeed = OsmAndFormatter.getFormattedSpeed(analysis.maxSpeed, app); String minSpeed = OsmAndFormatter.getFormattedSpeed(analysis.minSpeed, app); - String max_min_speed = maxSpeed.substring(0, maxSpeed.indexOf(" ")).concat("/").concat(minSpeed.substring(0, minSpeed.indexOf(" "))); + String max_min_speed = maxSpeed.substring(0, maxSpeed.indexOf(" ")).concat("/").concat(minSpeed); if (minSpeed.substring(0, minSpeed.indexOf(" ")).equals("0") || minSpeed.substring(0, minSpeed.indexOf(" ")).equals("0.0")) { (convertView.findViewById(R.id.max_speed_value)) .setVisibility(View.VISIBLE); diff --git a/OsmAnd/src/net/osmand/plus/myplaces/TrackSegmentFragment.java b/OsmAnd/src/net/osmand/plus/myplaces/TrackSegmentFragment.java index 0ddbe9373f..bf4587fc83 100644 --- a/OsmAnd/src/net/osmand/plus/myplaces/TrackSegmentFragment.java +++ b/OsmAnd/src/net/osmand/plus/myplaces/TrackSegmentFragment.java @@ -1477,6 +1477,7 @@ public class TrackSegmentFragment extends OsmAndListFragment { .replace(R.id.track_activity_layout, new SplitSegmentFragment()) .addToBackStack(SplitSegmentFragment.TAG) .commit(); + getMyActivity().getSlidingTabLayout().setVisibility(View.GONE); } private class SplitTrackAsyncTask extends AsyncTask { diff --git a/OsmAnd/src/net/osmand/plus/osmedit/EditPoiDialogFragment.java b/OsmAnd/src/net/osmand/plus/osmedit/EditPoiDialogFragment.java index 086902381f..7855c932f5 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/EditPoiDialogFragment.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/EditPoiDialogFragment.java @@ -132,7 +132,7 @@ public class EditPoiDialogFragment extends BaseOsmAndDialogFragment { Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar); toolbar.setTitle(isAddingPoi ? R.string.poi_create_title : R.string.poi_edit_title); - toolbar.setNavigationIcon(R.drawable.abc_ic_ab_back_material); + toolbar.setNavigationIcon(R.drawable.ic_arrow_back); toolbar.setNavigationContentDescription(R.string.access_shared_string_navigate_up); toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override diff --git a/OsmAnd/src/net/osmand/plus/osmo/OsMoGroupsActivity.java b/OsmAnd/src/net/osmand/plus/osmo/OsMoGroupsActivity.java index 533fc29957..fdbc759692 100644 --- a/OsmAnd/src/net/osmand/plus/osmo/OsMoGroupsActivity.java +++ b/OsmAnd/src/net/osmand/plus/osmo/OsMoGroupsActivity.java @@ -713,7 +713,7 @@ public class OsMoGroupsActivity extends OsmandExpandableListActivity implements ll.setOrientation(LinearLayout.VERTICAL); Toolbar tb = new Toolbar(this); tb.setClickable(true); - Drawable back = ((OsmandApplication) getApplication()).getIconsCache().getIcon(R.drawable.abc_ic_ab_back_material); + Drawable back = ((OsmandApplication) getApplication()).getIconsCache().getIcon(R.drawable.ic_arrow_back); tb.setNavigationIcon(back); tb.setNavigationContentDescription(R.string.access_shared_string_navigate_up); tb.setTitle(R.string.osmo_sign_in); diff --git a/OsmAnd/src/net/osmand/plus/quickaction/CreateEditActionDialog.java b/OsmAnd/src/net/osmand/plus/quickaction/CreateEditActionDialog.java index 184630056d..42124d947b 100644 --- a/OsmAnd/src/net/osmand/plus/quickaction/CreateEditActionDialog.java +++ b/OsmAnd/src/net/osmand/plus/quickaction/CreateEditActionDialog.java @@ -152,7 +152,7 @@ public class CreateEditActionDialog extends DialogFragment { toolbar.setTitleTextColor(Color.WHITE); toolbar.setNavigationIcon(getIconsCache().getIcon( - R.drawable.abc_ic_ab_back_material, + R.drawable.ic_arrow_back, R.color.color_white)); toolbar.setNavigationContentDescription(R.string.access_shared_string_navigate_up); diff --git a/OsmAnd/src/net/osmand/plus/quickaction/QuickActionListFragment.java b/OsmAnd/src/net/osmand/plus/quickaction/QuickActionListFragment.java index c501f26e53..c720d8eb35 100644 --- a/OsmAnd/src/net/osmand/plus/quickaction/QuickActionListFragment.java +++ b/OsmAnd/src/net/osmand/plus/quickaction/QuickActionListFragment.java @@ -108,7 +108,7 @@ public class QuickActionListFragment extends BaseOsmAndFragment implements Quick private void setUpToolbar(View view) { Toolbar toolbar = (Toolbar) view.findViewById(R.id.custom_toolbar); - Drawable back = getMyApplication().getIconsCache().getIcon(R.drawable.abc_ic_ab_back_material); + Drawable back = getMyApplication().getIconsCache().getIcon(R.drawable.ic_arrow_back); back.setColorFilter(ContextCompat.getColor(getContext(), R.color.color_white), PorterDuff.Mode.MULTIPLY); toolbar.setNavigationIcon(back); toolbar.setNavigationContentDescription(R.string.access_shared_string_navigate_up); diff --git a/OsmAnd/src/net/osmand/plus/search/QuickSearchCoordinatesFragment.java b/OsmAnd/src/net/osmand/plus/search/QuickSearchCoordinatesFragment.java index 9bfde47f35..ef2014d901 100644 --- a/OsmAnd/src/net/osmand/plus/search/QuickSearchCoordinatesFragment.java +++ b/OsmAnd/src/net/osmand/plus/search/QuickSearchCoordinatesFragment.java @@ -107,7 +107,7 @@ public class QuickSearchCoordinatesFragment extends DialogFragment implements Os view = inflater.inflate(R.layout.search_advanced_coords, container, false); Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar); - toolbar.setNavigationIcon(app.getIconsCache().getIcon(R.drawable.abc_ic_ab_back_material)); + toolbar.setNavigationIcon(app.getIconsCache().getIcon(R.drawable.ic_arrow_back)); toolbar.setNavigationContentDescription(R.string.access_shared_string_navigate_up); toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override diff --git a/OsmAnd/src/net/osmand/plus/search/QuickSearchDialogFragment.java b/OsmAnd/src/net/osmand/plus/search/QuickSearchDialogFragment.java index 9dd275470e..36666db1ae 100644 --- a/OsmAnd/src/net/osmand/plus/search/QuickSearchDialogFragment.java +++ b/OsmAnd/src/net/osmand/plus/search/QuickSearchDialogFragment.java @@ -409,7 +409,7 @@ public class QuickSearchDialogFragment extends DialogFragment implements OsmAndC ); toolbar = (Toolbar) view.findViewById(R.id.toolbar); - toolbar.setNavigationIcon(app.getIconsCache().getThemedIcon(R.drawable.abc_ic_ab_back_material)); + toolbar.setNavigationIcon(app.getIconsCache().getThemedIcon(R.drawable.ic_arrow_back)); toolbar.setNavigationContentDescription(R.string.access_shared_string_navigate_up); toolbar.setNavigationOnClickListener( new OnClickListener() { diff --git a/OsmAnd/src/net/osmand/plus/views/MapQuickActionLayer.java b/OsmAnd/src/net/osmand/plus/views/MapQuickActionLayer.java index d7db3f3771..45939ba22f 100644 --- a/OsmAnd/src/net/osmand/plus/views/MapQuickActionLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/MapQuickActionLayer.java @@ -52,10 +52,11 @@ public class MapQuickActionLayer extends OsmandMapLayer implements QuickActionRe private boolean wasCollapseButtonVisible; private int previousMapPosition; - private boolean inChangeMarkerPositionMode; private boolean isLayerOn; + private boolean nightMode; + public MapQuickActionLayer(MapActivity activity, ContextMenuLayer contextMenuLayer) { this.mapActivity = activity; this.contextMenuLayer = contextMenuLayer; @@ -73,13 +74,14 @@ public class MapQuickActionLayer extends OsmandMapLayer implements QuickActionRe quickActionButton = (ImageButton) mapActivity.findViewById(R.id.map_quick_actions_button); setQuickActionButtonMargin(); isLayerOn = quickActionRegistry.isQuickActionOn(); - quickActionButton.setImageResource(R.drawable.map_quick_action); + nightMode = app.getDaynightHelper().isNightModeForMapControls(); + updateQuickActionButton(false); quickActionButton.setContentDescription(mapActivity.getString(R.string.configure_screen_quick_action)); quickActionButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (!showTutorialIfNeeded()) - setLayerState(quickActionsWidget.getVisibility() == View.VISIBLE); + setLayerState(!isWidgetVisible()); } }); @@ -109,9 +111,9 @@ public class MapQuickActionLayer extends OsmandMapLayer implements QuickActionRe } public void refreshLayer() { - setLayerState(true); + setLayerState(false); isLayerOn = quickActionRegistry.isQuickActionOn(); - setUpQuickActionBtnVisibility(); + setupQuickActionBtnVisibility(); } private boolean showTutorialIfNeeded() { @@ -172,19 +174,22 @@ public class MapQuickActionLayer extends OsmandMapLayer implements QuickActionRe return result; } + private boolean isWidgetVisible() { + return quickActionsWidget.getVisibility() == View.VISIBLE; + } + /** - * @param isClosed + * @param showWidget * @return true, if state was changed */ - public boolean setLayerState(boolean isClosed) { - if ((quickActionsWidget.getVisibility() == View.VISIBLE) != isClosed) // check if state change is needed + public boolean setLayerState(boolean showWidget) { + if (isWidgetVisible() == showWidget) // check if state change is needed return false; - quickActionButton.setImageResource(isClosed ? R.drawable.map_quick_action : R.drawable.map_action_cancel); - quickActionButton.setContentDescription(mapActivity.getString(isClosed ? R.string.configure_screen_quick_action : R.string.shared_string_cancel)); - quickActionsWidget.setVisibility(isClosed ? View.GONE : View.VISIBLE); + updateQuickActionButton(showWidget); + quickActionsWidget.setVisibility(!showWidget ? View.GONE : View.VISIBLE); - if (isClosed) { + if (!showWidget) { quitMovingMarker(); quickActionRegistry.setUpdatesListener(null); quickActionsWidget.setSelectionListener(null); @@ -198,6 +203,14 @@ public class MapQuickActionLayer extends OsmandMapLayer implements QuickActionRe return true; } + private void updateQuickActionButton(boolean widgetVisible) { + quickActionButton.setImageDrawable(app.getIconsCache().getIcon( + !widgetVisible ? R.drawable.map_quick_action : R.drawable.map_action_cancel, !nightMode)); + quickActionButton.setBackgroundResource( + nightMode ? R.drawable.btn_circle_night : R.drawable.btn_circle_trans); + quickActionButton.setContentDescription(mapActivity.getString(!widgetVisible ? R.string.configure_screen_quick_action : R.string.shared_string_cancel)); + } + private void enterMovingMode(RotatedTileBox tileBox) { previousMapPosition = view.getMapPosition(); view.setMapPosition(OsmandSettings.MIDDLE_CONSTANT); @@ -276,7 +289,7 @@ public class MapQuickActionLayer extends OsmandMapLayer implements QuickActionRe @Override public boolean onSingleTap(PointF point, RotatedTileBox tileBox) { if (isInChangeMarkerPositionMode() && !pressedQuickActionWidget(point.x, point.y)) { - setLayerState(true); + setLayerState(false); return true; } else return false; @@ -288,14 +301,19 @@ public class MapQuickActionLayer extends OsmandMapLayer implements QuickActionRe @Override public void onDraw(Canvas canvas, RotatedTileBox box, DrawSettings settings) { + boolean nightMode = settings != null && settings.isNightMode(); if (isInChangeMarkerPositionMode()) { canvas.translate(box.getCenterPixelX() - contextMarker.getWidth() / 2, box.getCenterPixelY() - contextMarker.getHeight()); contextMarker.draw(canvas); } - setUpQuickActionBtnVisibility(); + if (this.nightMode != nightMode) { + this.nightMode = nightMode; + updateQuickActionButton(isWidgetVisible()); + } + setupQuickActionBtnVisibility(); } - private void setUpQuickActionBtnVisibility() { + private void setupQuickActionBtnVisibility() { boolean hideQuickButton = !isLayerOn || contextMenuLayer.isInChangeMarkerPositionMode() || contextMenuLayer.isInGpxDetailsMode() || @@ -325,7 +343,7 @@ public class MapQuickActionLayer extends OsmandMapLayer implements QuickActionRe @Override public void onActionSelected(QuickAction action) { QuickActionFactory.produceAction(action).execute(mapActivity); - setLayerState(true); + setLayerState(false); } public PointF getMovableCenterPoint(RotatedTileBox tb) { @@ -341,7 +359,7 @@ public class MapQuickActionLayer extends OsmandMapLayer implements QuickActionRe } public boolean onBackPressed() { - return setLayerState(true); + return setLayerState(false); } View.OnTouchListener onQuickActionTouchListener = new View.OnTouchListener() { diff --git a/OsmAnd/src/net/osmand/plus/views/POIMapLayer.java b/OsmAnd/src/net/osmand/plus/views/POIMapLayer.java index 0dd2279973..81fdabad74 100644 --- a/OsmAnd/src/net/osmand/plus/views/POIMapLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/POIMapLayer.java @@ -327,7 +327,7 @@ public class POIMapLayer extends OsmandMapLayer implements ContextMenuLayer.ICon final Toolbar topBar = new Toolbar(ctx); topBar.setClickable(true); - Drawable back = app.getIconsCache().getIcon(R.drawable.abc_ic_ab_back_material); + Drawable back = app.getIconsCache().getIcon(R.drawable.ic_arrow_back); topBar.setNavigationIcon(back); topBar.setNavigationContentDescription(R.string.access_shared_string_navigate_up); topBar.setTitle(title); @@ -435,7 +435,7 @@ public class POIMapLayer extends OsmandMapLayer implements ContextMenuLayer.ICon final Toolbar topBar = new Toolbar(ctx); topBar.setClickable(true); - Drawable back = app.getIconsCache().getIcon(R.drawable.abc_ic_ab_back_material); + Drawable back = app.getIconsCache().getIcon(R.drawable.ic_arrow_back); topBar.setNavigationIcon(back); topBar.setNavigationContentDescription(R.string.access_shared_string_navigate_up); topBar.setTitle(title); diff --git a/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapInfoWidgetsFactory.java b/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapInfoWidgetsFactory.java index 000b30be7e..5c9ba0810a 100644 --- a/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapInfoWidgetsFactory.java +++ b/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapInfoWidgetsFactory.java @@ -275,8 +275,8 @@ public class MapInfoWidgetsFactory { int bgLightLandId = R.drawable.btn_round; int bgDarkLandId = R.drawable.btn_round_night; - int backBtnIconLightId = R.drawable.abc_ic_ab_back_material; - int backBtnIconDarkId = R.drawable.abc_ic_ab_back_material; + int backBtnIconLightId = R.drawable.ic_arrow_back; + int backBtnIconDarkId = R.drawable.ic_arrow_back; int backBtnIconClrLightId = R.color.icon_color; int backBtnIconClrDarkId = 0; diff --git a/OsmAndCore-sample/build.gradle b/OsmAndCore-sample/build.gradle index 6bfbe775b0..95b9cd9c66 100644 --- a/OsmAndCore-sample/build.gradle +++ b/OsmAndCore-sample/build.gradle @@ -1,8 +1,8 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 23 - buildToolsVersion "23.0.3" + compileSdkVersion 26 + buildToolsVersion "26.0.0" dexOptions { jumboMode true diff --git a/README.md b/README.md index 5e1434ecf4..4553b941a5 100644 --- a/README.md +++ b/README.md @@ -4,10 +4,14 @@ This project aims at providing comfortable map viewing and navigation (routing) To get started, continue with the basic description below, then find more detail on our Welcome Wiki Pages, the Project Homepage, or the OpenStreetMap OsmAnd Wiki Page. You are welcome to discuss any question regarding the project at the Google group OsmAnd. Please do not use comments on wiki pages because it is rather difficult to find them. - -Get it on F-Droid Get it on Google Play + +Get it on Amazon + +Get it on F-Droid + +Get it on AppStore Functionality ------------- diff --git a/build.gradle b/build.gradle index 73a0b2433f..5cad9d08ae 100644 --- a/build.gradle +++ b/build.gradle @@ -1,9 +1,13 @@ buildscript { repositories { + maven { + // Google Maven Repository + url 'https://maven.google.com' + } mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:2.1.3' + classpath 'com.android.tools.build:gradle:2.+' classpath 'com.google.gms:google-services:3.0.0' } } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index fc0a0f1d16..b12618a3f9 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.0-bin.zip