From e0ed43da7eb1afcb00abd7b51420a5d9998c75dc Mon Sep 17 00:00:00 2001 From: Alexey Pelykh Date: Thu, 27 Nov 2014 17:31:54 +0200 Subject: [PATCH 001/157] Remove 'test native renderer' activity --- OsmAnd/AndroidManifest.xml | 1 - OsmAnd/res/layout/activity_gl.xml | 12 - OsmAnd/res/values-be/strings.xml | 4 +- OsmAnd/res/values-bg/strings.xml | 2 +- OsmAnd/res/values-ca/strings.xml | 4 +- OsmAnd/res/values-cs/strings.xml | 4 +- OsmAnd/res/values-da/strings.xml | 4 +- OsmAnd/res/values-de/strings.xml | 4 +- OsmAnd/res/values-el/strings.xml | 2 +- OsmAnd/res/values-es/strings.xml | 4 +- OsmAnd/res/values-fr/strings.xml | 4 +- OsmAnd/res/values-gl/strings.xml | 4 +- OsmAnd/res/values-hr/strings.xml | 2 +- OsmAnd/res/values-hu/strings.xml | 6 +- OsmAnd/res/values-hy/strings.xml | 2 +- OsmAnd/res/values-it/strings.xml | 4 +- OsmAnd/res/values-ja/strings.xml | 4 +- OsmAnd/res/values-ko/strings.xml | 4 +- OsmAnd/res/values-ku/strings.xml | 2 +- OsmAnd/res/values-lt/strings.xml | 4 +- OsmAnd/res/values-lv/strings.xml | 2 +- OsmAnd/res/values-nb/strings.xml | 2 +- OsmAnd/res/values-nl/strings.xml | 4 +- OsmAnd/res/values-pl/strings.xml | 4 +- OsmAnd/res/values-ru/strings.xml | 8 +- OsmAnd/res/values-sc/strings.xml | 4 +- OsmAnd/res/values-sk/strings.xml | 4 +- OsmAnd/res/values-sl/strings.xml | 4 +- OsmAnd/res/values-sv/strings.xml | 4 +- OsmAnd/res/values-tr/strings.xml | 2 +- OsmAnd/res/values-vi/strings.xml | 2 +- OsmAnd/res/values-zh-rTW/strings.xml | 4 +- OsmAnd/res/values/strings.xml | 2 - .../net/osmand/core/android/GLActivity.java | 508 ------------------ .../SettingsDevelopmentActivity.java | 14 - 35 files changed, 33 insertions(+), 612 deletions(-) delete mode 100644 OsmAnd/res/layout/activity_gl.xml delete mode 100644 OsmAnd/src/net/osmand/core/android/GLActivity.java diff --git a/OsmAnd/AndroidManifest.xml b/OsmAnd/AndroidManifest.xml index 4f5dcf9ba1..07a4d91feb 100644 --- a/OsmAnd/AndroidManifest.xml +++ b/OsmAnd/AndroidManifest.xml @@ -222,7 +222,6 @@ - diff --git a/OsmAnd/res/layout/activity_gl.xml b/OsmAnd/res/layout/activity_gl.xml deleted file mode 100644 index 9152181e0b..0000000000 --- a/OsmAnd/res/layout/activity_gl.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - \ No newline at end of file diff --git a/OsmAnd/res/values-be/strings.xml b/OsmAnd/res/values-be/strings.xml index f0573c5bee..35a1841b89 100644 --- a/OsmAnd/res/values-be/strings.xml +++ b/OsmAnd/res/values-be/strings.xml @@ -1,4 +1,4 @@ - + Без аўтаматычнага масштабіраваньня Зачыніць Для сярэдняга масштаба @@ -1915,7 +1915,6 @@ OsmAnd мае адкрыты зыходны код і актыўна разві Задаць дапушчальнае значэньне перавышэньня хуткасьці, пры якім вы атрымаеце галасавое паведамленьне. Назва ўлюбёнай кропкі была зьменена на %1$s для магчымасьці захаваньня радка з эматыконам ў файл. Паказаць маршрут - Тэст натыўнай візуалізацыі Дубляваньне назвы ўлюбёнага пункту Назва ўлюбёнага пункту %1$s была зьменена для прадухіленьня дубляваньня імёнаў. Выкарыстоўваць натыўную візуалізацыю @@ -1926,7 +1925,6 @@ OsmAnd мае адкрыты зыходны код і актыўна разві Вы ўвайшлі як %1$s Сэрвіс OsMo не даступны:\n- Праверце спалучэньне;\n- Праверце налады;\n- Праверце наш Twitter: https://twitter.com/OsMomobi Ананімнаму карыстальніку недаступныя:\n- Вытварэньне груп;\n- Сінхранізацыя груп і прыстасаваньняў з серверам;\n- Кіраваньне групамі і прыстасаваньнямі ў асабістым кабінеце. - Пачаць працу з натыўнай візуалізацыяй Настройка мапы Паблізу ад Падрабязнасьці diff --git a/OsmAnd/res/values-bg/strings.xml b/OsmAnd/res/values-bg/strings.xml index 117fc310e9..692e326873 100644 --- a/OsmAnd/res/values-bg/strings.xml +++ b/OsmAnd/res/values-bg/strings.xml @@ -1,4 +1,4 @@ - + Промени в 1.5: \n\t* Гласови предупреждения за пътни ограничения и камери \n\t* Гласово обявяване имената на улиците diff --git a/OsmAnd/res/values-ca/strings.xml b/OsmAnd/res/values-ca/strings.xml index 1473ea4212..9317ef9150 100644 --- a/OsmAnd/res/values-ca/strings.xml +++ b/OsmAnd/res/values-ca/strings.xml @@ -1,4 +1,4 @@ - + Mostra els missatges d\'avís… Rutes amb fluorescència Mostra el regle @@ -1856,8 +1856,6 @@ La llista de països inclosos (bàsicament tot el món!): Afganistan, Albània, Mida del text Nom de punt preferit duplicat S\'ha canviat el nom del vostre punt preferit a %1$s per evitar duplicitats. - Prova de renderització nativa - Inicia l\'activitat amb renderització nativa Utilitza la renderització nativa Ús de renderització C++ en comptes de Java El nom del vostre punt preferit s\'ha canviat a %1$s per facilitar el desar bé la cadena amb emoticones en un fitxer. diff --git a/OsmAnd/res/values-cs/strings.xml b/OsmAnd/res/values-cs/strings.xml index cb585696c5..83e7f08d61 100644 --- a/OsmAnd/res/values-cs/strings.xml +++ b/OsmAnd/res/values-cs/strings.xml @@ -1,4 +1,4 @@ - + Vektorové mapy toto místo neobsahují. Mapová data můžete stáhnout v Nastaveních (Spravovat mapové soubory), nebo se přepněte na online mapy. "Změny ve verzi 0.7.2 : \n\t- Native rendering pro všechna zařízení @@ -1733,8 +1733,6 @@ s často kladenými otázkami. Nastavit velikost písma na mapě. Název oblíbeného bodu je již použit Aby nevznikla duplicita, oblíbený bod byl uložen jako %1$s. - Test nativního vykreslování - Spustí činnost s nativním vykreslováním Použít nativní vykreslování Použít C++ vykreslování místo Javy Vytisknout trasu diff --git a/OsmAnd/res/values-da/strings.xml b/OsmAnd/res/values-da/strings.xml index d21f9c6c62..940c66ebe1 100644 --- a/OsmAnd/res/values-da/strings.xml +++ b/OsmAnd/res/values-da/strings.xml @@ -1,4 +1,4 @@ - + Overvej at købe Højdekurve udvidelsen (\'Contour lines\') på Google Play for at støtte den videre udvikling. Optag video Optag audio @@ -1805,8 +1805,6 @@ Tekststørrelse Favoritnavn dublet Favoritnavn er ændret til %1$s for at undgå dubletter. - Test indbygget optegning - Start aktivitet med indbygget optegning Brug indbygget optegning Brug C++ optegning i stedet for Java Udskriv rute diff --git a/OsmAnd/res/values-de/strings.xml b/OsmAnd/res/values-de/strings.xml index 4d34e3c87d..910dc80574 100644 --- a/OsmAnd/res/values-de/strings.xml +++ b/OsmAnd/res/values-de/strings.xml @@ -1,4 +1,4 @@ - + Geschwindigkeitsbegrenzung Grenzkontrolle @@ -1975,8 +1975,6 @@ Afghanistan, Ägypten, Albanien, Algerien, Andorra, Angola, Anguilla, Antigua an Schriftgröße Doppelung beim Favoriten-Namen Name des Favoriten bereits vergeben, er wurde auf %1$s geändert. - Nativen Renderer testen - Nutzt den nativen Renderer Nativen Renderer benutzen C++ Renderer statt Java-Renderer nutzen Der Name des Favoriten wurde auf %1$s geändert, denn Zeichenketten mit Emoticons können nicht gespeichert werden. diff --git a/OsmAnd/res/values-el/strings.xml b/OsmAnd/res/values-el/strings.xml index 7dfdb12676..fdff9d345f 100644 --- a/OsmAnd/res/values-el/strings.xml +++ b/OsmAnd/res/values-el/strings.xml @@ -1,4 +1,4 @@ - + Προσθήκη Ετικέτας Λειτουργία για προχωρημένους… Στάθμευση diff --git a/OsmAnd/res/values-es/strings.xml b/OsmAnd/res/values-es/strings.xml index b548935c5f..0714f1cebf 100644 --- a/OsmAnd/res/values-es/strings.xml +++ b/OsmAnd/res/values-es/strings.xml @@ -1,4 +1,4 @@ - + Configura pantalla @@ -1839,8 +1839,6 @@ Afganistán, Albania, Alemania, Andorra, Angola, Anguila, Antigua y Barbuda, Ant Tamaño de texto Nombre de punto favorito duplicado Hemos cambiado el nombre de tu punto favorito a %1$s para evitar nombres duplicados. - Probar renderización nativa - Iniciar la actividad con renderización nativa Usar renderización nativa Usar el renderizado C++ en lugar de Java Imprimir ruta diff --git a/OsmAnd/res/values-fr/strings.xml b/OsmAnd/res/values-fr/strings.xml index 20f7df364b..9e7eb854de 100644 --- a/OsmAnd/res/values-fr/strings.xml +++ b/OsmAnd/res/values-fr/strings.xml @@ -1,4 +1,4 @@ - + Modifications hors-ligne Toujours utiliser l\'édition hors-ligne "Changements en 0.7.1 : @@ -1821,8 +1821,6 @@ Afghanistan, Albanie, Algérie, Allemagne, Andorre, Angola, Anguilla, Antigua-et Ce nom est déjà utilisé pour un favori. Nous avons modifié le nom de votre favori en %1$s pour éviter les doublons. Sélectionnez la taille du texte sur la carte. - Tester le moteur de rendu natif - Démarrer l\'activité avec le moteur de rendu natif Utiliser le moteur natif de rendu Utiliser le moteur de rendu C++ au lieu de Java Exporter l\'itinéraire diff --git a/OsmAnd/res/values-gl/strings.xml b/OsmAnd/res/values-gl/strings.xml index a12a21e50f..f647426e64 100644 --- a/OsmAnd/res/values-gl/strings.xml +++ b/OsmAnd/res/values-gl/strings.xml @@ -1,4 +1,4 @@ - + O nome do punto favorito foi cambiado a %1$s para evitar os duplicados. Configurar o tamaño da letra no mapa. Tamaño da letra @@ -16,8 +16,6 @@ "Pódense buscar sitios directamente no mapa con «Empregar o lugar» → «Buscar preto de aquí» ou chamando pola pantalla de busca mediante «Menú» → «Buscar».\n\nA pantalla de busca fornece modelos para buscar\n\t* polo enderezo\n\t* mediante coordenadas\n\t* como punto de interese (PDI, por tipo ou polo nome)\n\t* mediante o historial de buscas\n\t* ou mediante os favoritos predefinidos.\n\nCon todas as coincidencias hai un menú de contexto ou barra de accións que ofrece opcións tipo «Indicacións a» ou «Mostrar no mapa», etc. " Cambiamos o punto favorito a %1$s para facilitar que se garde a cadea con emoticonas nun ficheiro. Imprimir o itinerario - Probar o renderizador nativo - Inicia a actividade cun renderizador nativo O nome do punto favorito está duplicado Empregar o renderizador nativo Empregar o renderizador en C++ en troques de en Java diff --git a/OsmAnd/res/values-hr/strings.xml b/OsmAnd/res/values-hr/strings.xml index 1a3c5a301a..f49f9e1fb3 100644 --- a/OsmAnd/res/values-hr/strings.xml +++ b/OsmAnd/res/values-hr/strings.xml @@ -1,4 +1,4 @@ - + GPS informacije Vrijeme dolaska provjereno diff --git a/OsmAnd/res/values-hu/strings.xml b/OsmAnd/res/values-hu/strings.xml index ef5879f782..7283f229db 100644 --- a/OsmAnd/res/values-hu/strings.xml +++ b/OsmAnd/res/values-hu/strings.xml @@ -1,4 +1,4 @@ - + "A 0.7.2 kiadás változásai: \n\t- Natív renderelő minden eszközre \n\t- Offline POI szerkesztés @@ -1767,9 +1767,7 @@ Forgalomcsillapító Traffipax Forgalmi figyelmeztetés - Natív renderelés tesztelése - Natív renderelő elindítása - Kedevenc hely név duplikáció + Kedevenc hely név duplikáció A duplikáció elkerülése érdekében módosítottuk a kedvenc hely nevét erre: %1$s. Natív renderelő használata C++ renderelő használata Java helyett diff --git a/OsmAnd/res/values-hy/strings.xml b/OsmAnd/res/values-hy/strings.xml index 565c73e8d3..8ca9a4dbb9 100644 --- a/OsmAnd/res/values-hy/strings.xml +++ b/OsmAnd/res/values-hy/strings.xml @@ -1,4 +1,4 @@ - + Տարածքի ռելիեֆ Տարածքի մգեցված ռելիեֆով քարտեզներ Սկիզբ diff --git a/OsmAnd/res/values-it/strings.xml b/OsmAnd/res/values-it/strings.xml index fda138de43..012df318ce 100644 --- a/OsmAnd/res/values-it/strings.xml +++ b/OsmAnd/res/values-it/strings.xml @@ -1,4 +1,4 @@ - + Sovrapposizioni fluorescenti Usa colori fluorescenti per visualizzare tracce e percorsi Modifiche offline @@ -1986,8 +1986,6 @@ Si consiglia di aggiungere uno o più punti intermedi per migliorarne le prestaz Clicca su un oggetto per visualizzare maggiori dettagli, tieni premuto per disattivarlo o cancellarlo. Dati attualmente nel dispositivo (%1$s liberi): Imposta la dimensione del testo sulla mappa. Dimensione del testo - Prova il rendering nativo - Inizia l\'attività con il rendering nativo Duplicato del nome del punto preferito Per evitare duplicati il nome del vostro punto preferito è stato modificato in %1$s. Usa il rendering nativo diff --git a/OsmAnd/res/values-ja/strings.xml b/OsmAnd/res/values-ja/strings.xml index 4cfaf8f0fa..052fdc5dd7 100644 --- a/OsmAnd/res/values-ja/strings.xml +++ b/OsmAnd/res/values-ja/strings.xml @@ -1,4 +1,4 @@ - + 新しいデータを展開中… オンライン経路案内を使用しようとしていますが インターネット接続されていません。 @@ -2063,8 +2063,6 @@ OsmAndはオープンソースであり、活発に開発が進められいま 制限速度超過による警告音声の許容値を選択。 お気に入り地点名%1$sはファイルに絵文字を含む文字列を保存し、分かり易いよう変更されています。 経路印刷 - ネイティブレンダリングのテスト - ネイティブレンダリングを有効化して開始 お気に入り地点の重複 名前の重複を避けるために、%1$s にお気に入り地点の名前を変更しました。 ネイティブレンダリングを使用 diff --git a/OsmAnd/res/values-ko/strings.xml b/OsmAnd/res/values-ko/strings.xml index c789a05b53..ebe5e08dbe 100644 --- a/OsmAnd/res/values-ko/strings.xml +++ b/OsmAnd/res/values-ko/strings.xml @@ -1,4 +1,4 @@ - + 벡터 맵이 더욱 빠르게 표시됩니다. 하지만, 어떤 기기에서는 잘 작동하지 않을 수 있습니다. 현재 선택된 음성 명령을 재생합니다 @@ -2035,8 +2035,6 @@ 텍스트 크기 즐겨찾기 포인트 이름 중복 중복된 포인트 이름을 방지 하기 위해서 %1$s 에 즐겨찾기 포인트 이름을 변경합니다. - 기본 렌더링 테스트 - 기본 렌더링으로 활동(activity)을 시작합니다 기본 렌더링 사용 Java 대신 C++ 렌더링을 사용합니다 경로 인쇄 diff --git a/OsmAnd/res/values-ku/strings.xml b/OsmAnd/res/values-ku/strings.xml index 692bae9021..3ac26e7d9c 100644 --- a/OsmAnd/res/values-ku/strings.xml +++ b/OsmAnd/res/values-ku/strings.xml @@ -1,4 +1,4 @@ - + donya hich wafay bom niya, zhyan hich khoshi bom niya, mrdn jegay shanaziya زانیاری دەنگ/ڤیدیۆ diff --git a/OsmAnd/res/values-lt/strings.xml b/OsmAnd/res/values-lt/strings.xml index 12cda3fb42..d4ff57181b 100644 --- a/OsmAnd/res/values-lt/strings.xml +++ b/OsmAnd/res/values-lt/strings.xml @@ -1,4 +1,4 @@ - + Pradžios taškas yra per toli nuo artimiausio kelio. Bendrinta vieta Dėmesio @@ -1807,8 +1807,6 @@ Spustelėkite bet kurį elementą, norėdami gauti daugiau informacijos, paspauskite ir laikykite, norėdami išjungti arba ištrinti. Dabartiniai duomenys įrenginyje (%1$s laisva): Išspausdinti maršrutą Mes pakeitėme jūsų įsimintos vietos pavadinimą į %1$s, nes teksto su veidukais išsaugoti faile neįmanoma. - Testuoti aparatinį atvaizdavimą - Pradeda veiklą su aparatiniu atvaizdavimu Naudoti aparatinį atvaizdavimą Naudoti C++ vietoje Java atvaizdavimo Greičio ribojimo viršijimo reikšmė diff --git a/OsmAnd/res/values-lv/strings.xml b/OsmAnd/res/values-lv/strings.xml index 90bde3a9cf..7ebc5a23fe 100644 --- a/OsmAnd/res/values-lv/strings.xml +++ b/OsmAnd/res/values-lv/strings.xml @@ -1,4 +1,4 @@ - + Spraudņu pārvaldnieks Atzīmējiet spraudni, lai to aktivizētu (varētu būt nepieciešams OsmAnd restarts) Spraudņi iespējo aplikācijas papildus funkcijas un uzstādījumus kā piemēram sekošana, enerģijas taupīšana, pieejamība un daudzas citas diff --git a/OsmAnd/res/values-nb/strings.xml b/OsmAnd/res/values-nb/strings.xml index f60e447667..96e097cefa 100644 --- a/OsmAnd/res/values-nb/strings.xml +++ b/OsmAnd/res/values-nb/strings.xml @@ -1,4 +1,4 @@ - + Velg fargeskjema for veier: Veifargeskjema Vis retning til målet diff --git a/OsmAnd/res/values-nl/strings.xml b/OsmAnd/res/values-nl/strings.xml index 253d913f49..a8e838c6e3 100644 --- a/OsmAnd/res/values-nl/strings.xml +++ b/OsmAnd/res/values-nl/strings.xml @@ -1,4 +1,4 @@ - + Configureer scherm @@ -1969,8 +1969,6 @@ Afghanistan, Albanie, Algerije, Andorra, Angola, Anguilla, Antigua en Barbuda, A Tekstgrootte Favoriet bestaat al: de naam is veranderd in %1$s Favoriet met deze naam bestaat al - Test \"native weergave\" - Start activiteit met oorspronkelijke weergave Gebruik oorspronkelijke weergave Gebruik C++ weergave in plaats van Java Favoriet bewaard als %1s omdat vreemde tekens niet opgeslagen kunnen worden in een bestand. diff --git a/OsmAnd/res/values-pl/strings.xml b/OsmAnd/res/values-pl/strings.xml index 65a7794c7d..b1fde5cde4 100644 --- a/OsmAnd/res/values-pl/strings.xml +++ b/OsmAnd/res/values-pl/strings.xml @@ -1,4 +1,4 @@ - + "Zmiany w 0.6.9: \n\t- poprawiono renderowanie map offline \n\t- szybkie renderowanie natywne (wersja eksperymentalna - może nie działać na niektórych urządzeniach) \n\t- poprawki w interfejsie \n\t- dodano wyświetlanie informacji o wysokości (altitude) \n\t- nowe tłumaczenia (polskie, wietnamskie) \n\t- inne, mniejsze poprawki " Przezroczysty styl @@ -1910,8 +1910,6 @@ Afganistan, Afryka Południowa, Albania, Algieria, Andora, Angola, Anguilla, Ant Rozmiar tekstu Zduplikowana nazwa ulubionego punktu Zmieniliśmy nazwa twojego ulubionego punktu na %1$s w celu uniknięcia duplikatów nazw. - Test renderowania natywnego - Rozpocznij aktywność z renderowaniem natywnym Użyj renderowania natywnego Użyj kodu renderowania C++ zamiast Java Tolerancja ograniczenia prędkości diff --git a/OsmAnd/res/values-ru/strings.xml b/OsmAnd/res/values-ru/strings.xml index e472d58f0d..c5b11f1d4f 100644 --- a/OsmAnd/res/values-ru/strings.xml +++ b/OsmAnd/res/values-ru/strings.xml @@ -1,4 +1,4 @@ - + Использовать безопасное соединение с сервером Использовать https @@ -1776,8 +1776,7 @@ Ограничение скорости Выберите допустимое значение превышения скорости выше которого вы получите голосовое предупреждение. Допустимое значение превышения скорости - Тест нативной визуализации - Название избранной точки было изменено на %1$s для возможности сохранения строки со смайликом в файл. + Название избранной точки было изменено на %1$s для возможности сохранения строки со смайликом в файл. Печать маршрута Дублирование названия избранной точки Название избранной точки %1$s было изменено для предотвращения дублирования имен. @@ -1786,8 +1785,7 @@ Установите размер текста для карты. Размер текста Нажмите на любой элемент списка для просмотра более подробной информации, нажмите и удерживайте, чтобы поместить в архив или удалить. Текущие данные на устройстве (%1$s свободно): - Запустить activity с нативной визуализацией - Устройство не обнаружено + Устройство не обнаружено Анонимный пользователь Сервис OsMo не доступен:\n- проверьте соединение;\n- проверьте настройки;\n- проверьте наш Twitter: https://twitter.com/OsMomobi Анонимному пользователю недоступно:\n- создание групп;\n- синхронизация групп и устройств с сервером;\n- управление группами и устройствами в личном кабинете. diff --git a/OsmAnd/res/values-sc/strings.xml b/OsmAnd/res/values-sc/strings.xml index cdf022c0fe..22070590eb 100644 --- a/OsmAnd/res/values-sc/strings.xml +++ b/OsmAnd/res/values-sc/strings.xml @@ -1,4 +1,4 @@ - + Ammustra sa positzione semper a su tzentru Boghe Mistura @@ -1742,8 +1742,6 @@ Si cussigiat de annànghere unu o prus puntos intermedios pro megiorare sas pres Mannària de su testu Amus cambiau su nùmene de su prefèrridu tuo a %1$s pro evitare nùmenes dòpios. Nùmene dòpiu in sos prefèrridos - Collàuda sa renderizatzione nativa - Incumentza s\'atividade cun sa renderizatzione nativa Imprea sa renderizatzione nativa Imprea sa renderizatzione C++ imbetzes de Java Imprenta àndala diff --git a/OsmAnd/res/values-sk/strings.xml b/OsmAnd/res/values-sk/strings.xml index 16e07a21f9..3362dc885d 100644 --- a/OsmAnd/res/values-sk/strings.xml +++ b/OsmAnd/res/values-sk/strings.xml @@ -1,4 +1,4 @@ - + Zobraziť Fotografia %1$s zachytená dňa %2$s Zachytiť fotografiu @@ -1952,8 +1952,6 @@ Afganistan, Albánsko, Alžírsko, Andora, Angola, Anguilla, Antigua a Barbuda, Veľkosť textu Duplicitný názov obľúbeného bodu Názov obľúbeného bodu bol zmenený na %1$s, aby nevznikla duplicita. - Testovať natívne vykresľovanie - Spustí činnosť s natívnym vykresľovaním Použiť natívne vykresľovanie Použiť vykresľovanie v C++ namiesto Javy Názov obľúbeného bodu bol upravený na %1$s, aby bolo možné správne uložiť názov s emotikonom do súboru. diff --git a/OsmAnd/res/values-sl/strings.xml b/OsmAnd/res/values-sl/strings.xml index 1c5e549ca6..542b4ed742 100644 --- a/OsmAnd/res/values-sl/strings.xml +++ b/OsmAnd/res/values-sl/strings.xml @@ -1,4 +1,4 @@ - + Iskanje Iskanje Nastavitve @@ -1965,10 +1965,8 @@ Seznam držav (praktično ves svet!): Afganistan, Albanija, Alžirija, Andora, A Toleranca omejitve hitrosti Izberite mejo tolerance omejitve hitrosti, nad katero boste prejeli glasovno opozorilo. Tiskanje poti - Poskus izvirnega upodabljanja Uporabi C++ upodabljanje namesto Java "Spremembe v 1.9:\n\t* Posodobljeni stili zemljevida s upodabljanjem površine cestišča, transportnih plasti in pohodniških simbolov\n\t* Iskanje POI na poti\n\t* Označi cesto kot neprehodno na sejo\n\t* Lažje nalaganje in posodabljanje zemljevidov\n\t* Vizualno in zvočno obvestilo, ki se izvede ko se približujete točkam\n\t* Tisk poti in informacij o zavojih\n\t* Podpora pasov za zavijanje\n\t* Podpora Android Wear\n\t* Veliko sprememb grafičnega vmesnika\n\t* Ločena povečava za velikost črk na zemljevidu\n\t* Posebna zvočna obvestila v primeru, da niste na poti\n\t* Funkcionalnost prijave v OsMo\n\t* Popravilo OsMo nezdružljivosti različic " - Začetek aktivnosti z izvirnim upodabljanjem Podvojeno ime priljubljene lokacije Ime vaše priljubljene lokacije je bilo spremenjeno v %1$s, da bi se izognili podvojenih imen. Uporabi izvirno upodabljanje diff --git a/OsmAnd/res/values-sv/strings.xml b/OsmAnd/res/values-sv/strings.xml index 4e3c86ee7b..678c602bd8 100644 --- a/OsmAnd/res/values-sv/strings.xml +++ b/OsmAnd/res/values-sv/strings.xml @@ -1,4 +1,4 @@ - + För att låsa upp skärmen tryck på låsikonen Välj land Välj stad @@ -1690,8 +1690,6 @@ Peta på en post för att se fler detaljer, tryck och håll för att inaktivera eller ta bort. Data på enheten (%1$s ledigt): Ange textstorlek på kartan. Textstorlek - Testa inbyggd rendering - Startar aktivitet med inbyggd rendering Duplicerat namn på favoritpunkt Namnet på din favoritpunkt %1$s ändrades för att undvika duplicerade namn. Använd inbyggd rendering diff --git a/OsmAnd/res/values-tr/strings.xml b/OsmAnd/res/values-tr/strings.xml index 5758bd9f31..67b56c744b 100644 --- a/OsmAnd/res/values-tr/strings.xml +++ b/OsmAnd/res/values-tr/strings.xml @@ -1,4 +1,4 @@ - + Değişiklik listesini kapat ZXing Barcode Scanner uygulaması kurulu değil. Uygulama marketinde aramak ister misiniz? Yol renk şemasını seç: diff --git a/OsmAnd/res/values-vi/strings.xml b/OsmAnd/res/values-vi/strings.xml index e544cb5070..a022f190ac 100644 --- a/OsmAnd/res/values-vi/strings.xml +++ b/OsmAnd/res/values-vi/strings.xml @@ -1,4 +1,4 @@ - + diff --git a/OsmAnd/res/values-zh-rTW/strings.xml b/OsmAnd/res/values-zh-rTW/strings.xml index eb856a62d6..7e1f034a4c 100644 --- a/OsmAnd/res/values-zh-rTW/strings.xml +++ b/OsmAnd/res/values-zh-rTW/strings.xml @@ -1,4 +1,4 @@ - + 選擇道路的色彩調配: 道路的色彩調配 顯示目的地方向 @@ -1816,8 +1816,6 @@ 文字大小 我的最愛標點,名稱重複 我們把我的最愛標點名稱,改為 %1$s 以避免名稱重複。 - 測試原生繪製 - 開始啟動原生繪製 使用原生繪製 使用 C++ 替代 JAVA 繪製 列印路線 diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index f3e343da68..5127c2a2f2 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -63,8 +63,6 @@ Select speed limit tolerance margin, above which you will receive a voice warning. The favorite point name has been modified to %1$s to facilitate properly saving the string with emoticons to a file. Print route - Test native rendering - Starts activity with native rendering Favorite point name duplicate We changed your favorite point name to %1$s to avoid duplicated names. Use native rendering diff --git a/OsmAnd/src/net/osmand/core/android/GLActivity.java b/OsmAnd/src/net/osmand/core/android/GLActivity.java deleted file mode 100644 index 2f1bb121d1..0000000000 --- a/OsmAnd/src/net/osmand/core/android/GLActivity.java +++ /dev/null @@ -1,508 +0,0 @@ -package net.osmand.core.android; - -import javax.microedition.khronos.egl.EGL10; -import javax.microedition.khronos.egl.EGLConfig; -import javax.microedition.khronos.egl.EGLContext; -import javax.microedition.khronos.egl.EGLDisplay; -import javax.microedition.khronos.egl.EGLSurface; -import javax.microedition.khronos.opengles.GL10; - -import net.osmand.core.jni.*; -import net.osmand.data.LatLon; -import net.osmand.data.QuadPoint; -import net.osmand.data.RotatedTileBox; -import net.osmand.plus.OsmandApplication; -import net.osmand.plus.OsmandSettings; -import net.osmand.plus.R; -import net.osmand.plus.helpers.TwoFingerTapDetector; -import net.osmand.plus.render.NativeOsmandLibrary; -import android.app.Activity; -import android.content.Context; -import android.opengl.EGL14; -import android.opengl.GLSurfaceView; -import android.os.Bundle; -import android.os.Environment; -import android.util.DisplayMetrics; -import android.util.Log; -import android.view.GestureDetector; -import android.view.GestureDetector.OnDoubleTapListener; -import android.view.Menu; -import android.view.MenuItem; -import android.view.MotionEvent; -import android.view.Window; -import android.view.WindowManager; - -import java.io.File; - -public class GLActivity extends Activity { - - static { - NativeOsmandLibrary.loadLibrary("gnustl_shared"); - NativeOsmandLibrary.loadLibrary("Qt5Core"); - NativeOsmandLibrary.loadLibrary("Qt5Network"); - NativeOsmandLibrary.loadLibrary("Qt5Sql"); - NativeOsmandLibrary.loadLibrary("OsmAndCoreWithJNI"); - } - private static final String TAG = "OsmAndCoreSample"; - - private CoreResourcesFromAndroidAssetsCustom _coreResources; - - private float _displayDensityFactor; - private int _referenceTileSize; - private int _rasterTileSize; - private IMapStylesCollection _mapStylesCollection; - private ResolvedMapStyle _mapStyle; - private ObfsCollection _obfsCollection; - private MapPresentationEnvironment _mapPresentationEnvironment; - private MapPrimitiviser _mapPrimitiviser; - private ObfMapObjectsProvider _obfMapObjectsProvider; - private MapPrimitivesProvider _mapPrimitivesProvider; - private MapObjectsSymbolsProvider _mapObjectsSymbolsProvider; - private MapRasterLayerProvider _mapRasterLayerProvider; - private OnlineRasterMapLayerProvider _onlineMapRasterLayerProvider; - private IMapRenderer _mapRenderer; - private GpuWorkerThreadPrologue _gpuWorkerThreadPrologue; - private GpuWorkerThreadEpilogue _gpuWorkerThreadEpilogue; - private RenderRequestCallback _renderRequestCallback; - private QIODeviceLogSink _fileLogSink; - private RotatedTileBox currentViewport = null; - - private GestureDetector gestureDetector; - - - protected OsmandApplication getApp() { - return (OsmandApplication) getApplication(); - } - - private boolean afterTwoFingerTap = false; - TwoFingerTapDetector twoFingerTapDetector = new TwoFingerTapDetector() { - @Override - public void onTwoFingerTap() { - afterTwoFingerTap = true; - currentViewport.setZoom(currentViewport.getZoom() - 1); - updateView(); - } - }; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - requestWindowFeature(Window.FEATURE_NO_TITLE); - OsmandSettings st = getApp().getSettings(); - WindowManager mgr = (WindowManager) getSystemService(Context.WINDOW_SERVICE); - DisplayMetrics dm = new DisplayMetrics(); - mgr.getDefaultDisplay().getMetrics(dm); - currentViewport = new RotatedTileBox.RotatedTileBoxBuilder(). - setLocation(st.getLastKnownMapLocation().getLatitude(), - st.getLastKnownMapLocation().getLongitude()).setZoomAndScale(st.getLastKnownMapZoom(), 0). - setPixelDimensions(dm.widthPixels, dm.heightPixels).build(); - currentViewport.setDensity(dm.density); - - - - gestureDetector = new GestureDetector(this, new android.view.GestureDetector.OnGestureListener() { - - @Override - public boolean onSingleTapUp(MotionEvent e) { - return false; - } - - @Override - public void onShowPress(MotionEvent e) { - } - - @Override - public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { - final QuadPoint cp = currentViewport.getCenterPixelPoint(); - final LatLon latlon = currentViewport.getLatLonFromPixel(cp.x + distanceX, cp.y + distanceY); - currentViewport.setLatLonCenter(latlon.getLatitude(), latlon.getLongitude()); - updateView(); - return false; - } - - @Override - public void onLongPress(MotionEvent e) { - } - - @Override - public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { - return false; - } - - @Override - public boolean onDown(MotionEvent e) { - return false; - } - }); - gestureDetector.setOnDoubleTapListener(new OnDoubleTapListener() { - @Override - public boolean onSingleTapConfirmed(MotionEvent e) { - return false; - } - - @Override - public boolean onDoubleTapEvent(MotionEvent e) { - return false; - } - - @Override - public boolean onDoubleTap(MotionEvent e) { - currentViewport.setZoom(currentViewport.getZoom() + 1); - updateView(); - return true; - } - }); - - setContentView(R.layout.activity_gl); - - // Get device display density factor - DisplayMetrics displayMetrics = new DisplayMetrics(); - getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); - _displayDensityFactor = displayMetrics.density; - _referenceTileSize = (int)(256 * _displayDensityFactor); - _rasterTileSize = Integer.highestOneBit(_referenceTileSize - 1) * 2; - Log.i(TAG, "displayDensityFactor = " + _displayDensityFactor); - Log.i(TAG, "referenceTileSize = " + _referenceTileSize); - Log.i(TAG, "rasterTileSize = " + _rasterTileSize); - - Log.i(TAG, "Initializing core..."); - _coreResources = CoreResourcesFromAndroidAssetsCustom.loadFromCurrentApplication(this); - OsmAndCore.InitializeCore(_coreResources.instantiateProxy()); - - File directory =getApp().getAppPath(""); - _fileLogSink = QIODeviceLogSink.createFileLogSink(directory.getAbsolutePath() + "/osmandcore.log"); - Logger.get().addLogSink(_fileLogSink); - - Log.i(TAG, "Going to resolve default embedded style..."); - _mapStylesCollection = new MapStylesCollection(); - _mapStyle = _mapStylesCollection.getResolvedStyleByName("default"); - if (_mapStyle == null) - { - Log.e(TAG, "Failed to resolve style 'default'"); - System.exit(0); - } - - Log.i(TAG, "Going to prepare OBFs collection"); - _obfsCollection = new ObfsCollection(); - - Log.i(TAG, "Will load OBFs from " + directory.getAbsolutePath()); - _obfsCollection.addDirectory(directory.getAbsolutePath(), false); - - Log.i(TAG, "Going to prepare all resources for renderer"); - _mapPresentationEnvironment = new MapPresentationEnvironment( - _mapStyle, - _displayDensityFactor, - "en"); //TODO: here should be current locale - //mapPresentationEnvironment->setSettings(configuration.styleSettings); - _mapPrimitiviser = new MapPrimitiviser( - _mapPresentationEnvironment); - _obfMapObjectsProvider = new ObfMapObjectsProvider( - _obfsCollection); - _mapPrimitivesProvider = new MapPrimitivesProvider( - _obfMapObjectsProvider, - _mapPrimitiviser, - _rasterTileSize); - _mapObjectsSymbolsProvider = new MapObjectsSymbolsProvider( - _mapPrimitivesProvider, - _rasterTileSize); - _mapRasterLayerProvider = new MapRasterLayerProvider_Software( - _mapPrimitivesProvider); - - _onlineMapRasterLayerProvider = OnlineTileSources.getBuiltIn().createProviderFor("Mapnik (OsmAnd)"); - - Log.i(TAG, "Going to create renderer"); - _mapRenderer = OsmAndCore.createMapRenderer(MapRendererClass.AtlasMapRenderer_OpenGLES2); - if (_mapRenderer == null) - { - Log.e(TAG, "Failed to create map renderer 'AtlasMapRenderer_OpenGLES2'"); - System.exit(0); - } - - AtlasMapRendererConfiguration atlasRendererConfiguration = AtlasMapRendererConfiguration.Casts.upcastFrom(_mapRenderer.getConfiguration()); - atlasRendererConfiguration.setReferenceTileSizeOnScreenInPixels(_referenceTileSize); - _mapRenderer.setConfiguration(AtlasMapRendererConfiguration.Casts.downcastTo_MapRendererConfiguration(atlasRendererConfiguration)); - - _mapRenderer.addSymbolsProvider(_mapObjectsSymbolsProvider); - updateView(); - /* - IMapRasterLayerProvider mapnik = OnlineTileSources.getBuiltIn().createProviderFor("Mapnik (OsmAnd)"); - if (mapnik == null) - Log.e(TAG, "Failed to create mapnik"); - */ - _mapRenderer.setMapLayerProvider(0, _mapRasterLayerProvider); - - _glSurfaceView = (GLSurfaceView) findViewById(R.id.glSurfaceView); - //TODO:_glSurfaceView.setPreserveEGLContextOnPause(true); - _glSurfaceView.setEGLContextClientVersion(2); - _glSurfaceView.setEGLContextFactory(new EGLContextFactory()); - _glSurfaceView.setRenderer(new Renderer()); - _glSurfaceView.setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY); - } - - protected void updateView() { - _mapRenderer.setAzimuth(0.0f); - _mapRenderer.setElevationAngle(90); - _mapRenderer.setTarget(new PointI(currentViewport.getCenter31X(), currentViewport.getCenter31Y())); - _mapRenderer.setZoom((float)currentViewport.getZoom() + (float)currentViewport.getZoomScale()); - } - - private GLSurfaceView _glSurfaceView; - - @Override - public boolean onTouchEvent(MotionEvent event) { - if (twoFingerTapDetector.onTouchEvent(event)) { - return true; - } - return gestureDetector.onTouchEvent(event); - } - @Override - protected void onPause() { - super.onPause(); - _glSurfaceView.onPause(); - } - - @Override - protected void onResume() { - super.onResume(); - _glSurfaceView.onResume(); - } - - @Override - protected void onDestroy() { - if (_mapStylesCollection != null) { - _mapStylesCollection.delete(); - _mapStylesCollection = null; - } - - if (_mapStyle != null) { - _mapStyle.delete(); - _mapStyle = null; - } - - if (_obfsCollection != null) { - _obfsCollection.delete(); - _obfsCollection = null; - } - - if (_mapPresentationEnvironment != null) { - _mapPresentationEnvironment.delete(); - _mapPresentationEnvironment = null; - } - - if (_mapPrimitiviser != null) { - _mapPrimitiviser.delete(); - _mapPrimitiviser = null; - } - - if (_obfMapObjectsProvider != null) { - _obfMapObjectsProvider.delete(); - _obfMapObjectsProvider = null; - } - - if (_mapPrimitivesProvider != null) { - _mapPrimitivesProvider.delete(); - _mapPrimitivesProvider = null; - } - - if (_mapObjectsSymbolsProvider != null) { - _mapObjectsSymbolsProvider.delete(); - _mapObjectsSymbolsProvider = null; - } - - if (_mapRasterLayerProvider != null) { - _mapRasterLayerProvider.delete(); - _mapRasterLayerProvider = null; - } - - if (_mapRenderer != null) { - _mapRenderer.delete(); - _mapRenderer = null; - } - - OsmAndCore.ReleaseCore(); - - super.onDestroy(); - } - - private class RenderRequestCallback extends MapRendererSetupOptions.IFrameUpdateRequestCallback { - @Override - public void method(IMapRenderer mapRenderer) { - _glSurfaceView.requestRender(); - } - } - - public class GpuWorkerThreadPrologue extends MapRendererSetupOptions.IGpuWorkerThreadPrologue { - public GpuWorkerThreadPrologue(EGL10 egl, EGLDisplay eglDisplay, EGLContext context, EGLSurface surface) { - _egl = egl; - _eglDisplay = eglDisplay; - _context = context; - _eglSurface = surface; - } - - private final EGL10 _egl; - private final EGLDisplay _eglDisplay; - private final EGLContext _context; - private final EGLSurface _eglSurface; - - @Override - public void method(IMapRenderer mapRenderer) { - try { - if (!_egl.eglMakeCurrent(_eglDisplay, _eglSurface, _eglSurface, _context)) - Log.e(TAG, "Failed to set GPU worker context active: " + _egl.eglGetError()); - } catch (Exception e) { - Log.e(TAG, "Failed to set GPU worker context active", e); - } - } - } - - private class GpuWorkerThreadEpilogue extends MapRendererSetupOptions.IGpuWorkerThreadEpilogue { - public GpuWorkerThreadEpilogue(EGL10 egl) { - _egl = egl; - } - - private final EGL10 _egl; - - @Override - public void method(IMapRenderer mapRenderer) { - try { - if (!_egl.eglWaitGL()) - Log.e(TAG, "Failed to wait for GPU worker context: " + _egl.eglGetError()); - } catch (Exception e) { - Log.e(TAG, "Failed to wait for GPU worker context", e); - } - } - } - - private class EGLContextFactory implements GLSurfaceView.EGLContextFactory { - private EGLContext _gpuWorkerContext; - private EGLSurface _gpuWorkerFakeSurface; - - public EGLContext createContext(EGL10 egl, EGLDisplay display, EGLConfig eglConfig) { - final String eglExtensions = egl.eglQueryString(display, EGL10.EGL_EXTENSIONS); - Log.i(TAG, "EGL extensions: " + eglExtensions); - final String eglVersion = egl.eglQueryString(display, EGL10.EGL_VERSION); - Log.i(TAG, "EGL version: " + eglVersion); - - Log.i(TAG, "Creating main context..."); - final int[] contextAttribList = { - EGL14.EGL_CONTEXT_CLIENT_VERSION, 2, - EGL10.EGL_NONE }; - - EGLContext mainContext = null; - try { - mainContext = egl.eglCreateContext(display, eglConfig, EGL10.EGL_NO_CONTEXT, contextAttribList); - } catch (Exception e) { - Log.e(TAG, "Failed to create main context", e); - } - if (mainContext == null || mainContext == EGL10.EGL_NO_CONTEXT) { - Log.e(TAG, "Failed to create main context: " + egl.eglGetError()); - mainContext = null; - System.exit(0); - } - - Log.i(TAG, "Creating GPU worker context..."); - try { - _gpuWorkerContext = egl.eglCreateContext( - display, - eglConfig, - mainContext, - contextAttribList); - } catch (Exception e) { - Log.e(TAG, "Failed to create GPU worker context", e); - } - if (_gpuWorkerContext == null || _gpuWorkerContext == EGL10.EGL_NO_CONTEXT) - { - Log.e(TAG, "Failed to create GPU worker context: " + egl.eglGetError()); - _gpuWorkerContext = null; - } - - if (_gpuWorkerContext != null) - { - Log.i(TAG, "Creating GPU worker fake surface..."); - try { - final int[] surfaceAttribList = { - EGL10.EGL_WIDTH, 1, - EGL10.EGL_HEIGHT, 1, - EGL10.EGL_NONE }; - _gpuWorkerFakeSurface = egl.eglCreatePbufferSurface(display, eglConfig, surfaceAttribList); - } catch (Exception e) { - Log.e(TAG, "Failed to create GPU worker fake surface", e); - } - if (_gpuWorkerFakeSurface == null || _gpuWorkerFakeSurface == EGL10.EGL_NO_SURFACE) - { - Log.e(TAG, "Failed to create GPU worker fake surface: " + egl.eglGetError()); - _gpuWorkerFakeSurface = null; - } - } - - MapRendererSetupOptions rendererSetupOptions = new MapRendererSetupOptions(); - if (_gpuWorkerContext != null && _gpuWorkerFakeSurface != null) { - rendererSetupOptions.setGpuWorkerThreadEnabled(true); - _gpuWorkerThreadPrologue = new GpuWorkerThreadPrologue(egl, display, _gpuWorkerContext, _gpuWorkerFakeSurface); - rendererSetupOptions.setGpuWorkerThreadPrologue(_gpuWorkerThreadPrologue.getBinding()); - _gpuWorkerThreadEpilogue = new GpuWorkerThreadEpilogue(egl); - rendererSetupOptions.setGpuWorkerThreadEpilogue(_gpuWorkerThreadEpilogue.getBinding()); - } else { - rendererSetupOptions.setGpuWorkerThreadEnabled(false); - } - _renderRequestCallback = new RenderRequestCallback(); - rendererSetupOptions.setFrameUpdateRequestCallback(_renderRequestCallback.getBinding()); - _mapRenderer.setup(rendererSetupOptions); - - return mainContext; - } - - public void destroyContext(EGL10 egl, EGLDisplay display, EGLContext context) { - egl.eglDestroyContext(display, context); - - if (_gpuWorkerContext != null) { - egl.eglDestroyContext(display, _gpuWorkerContext); - _gpuWorkerContext = null; - } - - if (_gpuWorkerFakeSurface != null) { - egl.eglDestroySurface(display, _gpuWorkerFakeSurface); - _gpuWorkerFakeSurface = null; - } - } - } - - private class Renderer implements GLSurfaceView.Renderer { - public void onSurfaceCreated(GL10 gl, EGLConfig config) { - Log.i(TAG, "onSurfaceCreated"); - if (_mapRenderer.isRenderingInitialized()) - _mapRenderer.releaseRendering(); - } - - public void onSurfaceChanged(GL10 gl, int width, int height) { - Log.i(TAG, "onSurfaceChanged"); - _mapRenderer.setViewport(new AreaI(0, 0, height, width)); - _mapRenderer.setWindowSize(new PointI(width, height)); - - if (!_mapRenderer.isRenderingInitialized()) - { - if (!_mapRenderer.initializeRendering()) - Log.e(TAG, "Failed to initialize rendering"); - } - } - - public void onDrawFrame(GL10 gl) { - _mapRenderer.update(); - - if (_mapRenderer.prepareFrame()) - _mapRenderer.renderFrame(); - - gl.glFlush(); - } - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - return true; - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - return super.onOptionsItemSelected(item); - } -} diff --git a/OsmAnd/src/net/osmand/plus/development/SettingsDevelopmentActivity.java b/OsmAnd/src/net/osmand/plus/development/SettingsDevelopmentActivity.java index b80aadabaa..038ee7feaf 100644 --- a/OsmAnd/src/net/osmand/plus/development/SettingsDevelopmentActivity.java +++ b/OsmAnd/src/net/osmand/plus/development/SettingsDevelopmentActivity.java @@ -6,7 +6,6 @@ import java.util.LinkedHashSet; import java.util.List; import java.util.Set; -import net.osmand.core.android.GLActivity; import net.osmand.plus.ApplicationMode; import net.osmand.plus.R; import net.osmand.plus.activities.SettingsBaseActivity; @@ -45,19 +44,6 @@ public class SettingsDevelopmentActivity extends SettingsBaseActivity { cat.addPreference(createCheckBoxPreference(settings.USE_NATIVE_RENDER, R.string.use_native_render,R.string.use_native_render_descr)); Preference pref = new Preference(this); - pref.setTitle(R.string.test_native_render); - pref.setSummary(R.string.test_native_render_msg); - pref.setKey("test_native_render"); - pref.setOnPreferenceClickListener(new OnPreferenceClickListener() { - @Override - public boolean onPreferenceClick(Preference preference) { - startActivity(new Intent(SettingsDevelopmentActivity.this, GLActivity.class)); - return true; - } - }); - cat.addPreference(pref); - - pref = new Preference(this); pref.setTitle(R.string.test_voice_prompts); pref.setSummary(R.string.play_commands_of_currently_selected_voice); pref.setKey("test_voice_commands"); From 1d4d69b7cdfb2bdc04a552c296b8e9f6dec7cfe2 Mon Sep 17 00:00:00 2001 From: mircozorzo Date: Fri, 28 Nov 2014 09:55:36 +0100 Subject: [PATCH 002/157] Update strings.xml Added a space to create a little distance between the string and the value --- OsmAnd/res/values-it/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-it/strings.xml b/OsmAnd/res/values-it/strings.xml index 93d31d81c7..46089668c5 100644 --- a/OsmAnd/res/values-it/strings.xml +++ b/OsmAnd/res/values-it/strings.xml @@ -2032,7 +2032,7 @@ Si consiglia di aggiungere uno o più punti intermedi per migliorarne le prestaz MOSTRA TUTTO Coordinate Casa - Mappe + Mappe Cerca MOSTRA LA MAPPA From 2f245d827c8f1586329cf722c9a6a4df2d12f429 Mon Sep 17 00:00:00 2001 From: mircozorzo Date: Fri, 28 Nov 2014 10:08:28 +0100 Subject: [PATCH 003/157] Update strings.xml --- OsmAnd/res/values-it/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-it/strings.xml b/OsmAnd/res/values-it/strings.xml index 93d31d81c7..360937b683 100644 --- a/OsmAnd/res/values-it/strings.xml +++ b/OsmAnd/res/values-it/strings.xml @@ -792,9 +792,9 @@ \n\t- Il rendering delle mappe è ora più veloce e preciso (la gran parte delle linee costiere e le zone allagate sono state sistemate). \n\t- Devi scaricare dati offline completamente nuovi (i vecchi non saranno più supportati) \n\t- *Calcolo dei percorsi offline* - \n\t - Il calcolo dei percorsi offline diventa più solido + \n\t- Il calcolo dei percorsi offline diventa più solido \n\t- *Miglioramento usabilità e UI* - \n\t - Miglioramenti in svariate aree + \n\t- Miglioramenti in svariate aree Visualizza le impostazioni necessarie per contributi a OSM come la raccolta/modifica dei PDI di OSM, aprire/commentare errori di OSM e inviare file GPX registrati (richiede le credenziali di OSM). Le mappe vettoriali dovrebbero apparire più velocemente. Su certi dispositivi potrebbero non funzionare bene. From 4021f81d3ffeafa96ac320cb5fd0795c0b5d231c Mon Sep 17 00:00:00 2001 From: Denis Date: Fri, 28 Nov 2014 11:22:09 +0200 Subject: [PATCH 004/157] Fixed merge bugs --- .../plus/activities/DashboardActivity.java | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/OsmAnd/src/net/osmand/plus/activities/DashboardActivity.java b/OsmAnd/src/net/osmand/plus/activities/DashboardActivity.java index 087d5f2139..d9cbabe8b8 100644 --- a/OsmAnd/src/net/osmand/plus/activities/DashboardActivity.java +++ b/OsmAnd/src/net/osmand/plus/activities/DashboardActivity.java @@ -2,16 +2,20 @@ package net.osmand.plus.activities; import java.io.File; +import java.lang.ref.WeakReference; import java.text.MessageFormat; import java.util.Calendar; import java.util.Date; +import java.util.List; import java.util.Random; +import android.support.v4.app.Fragment; import net.osmand.access.AccessibleAlertBuilder; import net.osmand.plus.OsmAndAppCustomization; import net.osmand.plus.OsmandApplication; import net.osmand.plus.R; import net.osmand.plus.Version; +import net.osmand.plus.base.BasicProgressAsyncTask; import net.osmand.plus.dashboard.DashFavoritesFragment; import net.osmand.plus.dashboard.DashMapFragment; import net.osmand.plus.dashboard.DashPluginsFragment; @@ -19,6 +23,7 @@ import net.osmand.plus.dashboard.DashSearchFragment; import net.osmand.plus.dashboard.DashUpdatesFragment; import net.osmand.plus.download.BaseDownloadActivity; import net.osmand.plus.download.DownloadActivity; +import net.osmand.plus.download.IndexItem; import net.osmand.plus.render.MapRenderRepositories; import net.osmand.plus.sherpafy.TourViewActivity; import android.app.Activity; @@ -460,4 +465,29 @@ public class DashboardActivity extends BaseDownloadActivity { textVersionView.setText(content); textVersionView.setMovementMethod(LinkMovementMethod.getInstance()); } + + @Override + public void updateProgress(boolean updateOnlyProgress) { + BasicProgressAsyncTask basicProgressAsyncTask = BaseDownloadActivity.downloadListIndexThread.getCurrentRunningTask(); + for(WeakReference ref : fragList) { + Fragment f = ref.get(); + if(f instanceof DashUpdatesFragment) { + if(!f.isDetached()) { + ((DashUpdatesFragment) f).updateProgress(basicProgressAsyncTask, updateOnlyProgress); + } + } + } + } + + @Override + public void updateDownloadList(List list){ + for(WeakReference ref : fragList) { + Fragment f = ref.get(); + if(f instanceof DashUpdatesFragment) { + if(!f.isDetached()) { + ((DashUpdatesFragment) f).updatedDownloadsList(list); + } + } + } + } } From 8aeb8ef38eacabb7a808a6d457cd250612c6fb71 Mon Sep 17 00:00:00 2001 From: Mirco Zorzo Date: Fri, 28 Nov 2014 09:47:07 +0100 Subject: [PATCH 005/157] Translated using Weblate (Italian) Currently translated at 100.0% (1568 of 1568 strings) --- OsmAnd/res/values-it/strings.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/OsmAnd/res/values-it/strings.xml b/OsmAnd/res/values-it/strings.xml index 93d31d81c7..63d097dab9 100644 --- a/OsmAnd/res/values-it/strings.xml +++ b/OsmAnd/res/values-it/strings.xml @@ -195,7 +195,7 @@ Dati PDI Dati indirizzi - Dati trasporti + Dati trasporti pubblici Dati mappa Disattivato @@ -346,7 +346,7 @@ Indicizzazione indirizzi… Indicizzazione mappa… Indicizzazione PDI… - Indicizzazione trasporti… + Indicizzazione trasporti pubblici… Errore di I/O km km/h @@ -450,7 +450,7 @@ Non è stata trovato nessuna dato per la regione nella scheda SD. Scarica una regione da internet. Inserisci i parametri di ricerca per trovare un PDI Tutti - Percorso di trasporto pubblico + Percorso su trasporto pubblico Grazie a Yandex per le informazioni sul traffico. Yandex (traffico) Percorso @@ -2003,7 +2003,7 @@ Si consiglia di aggiungere uno o più punti intermedi per migliorarne le prestaz Registrato come %1$s Percorsi Dettagli - Trasporto + Trasporto pubblico Altri attributi della mappa Pannello di destra Pannello di sinistra From 18f0331030f4044d456ed1cd5e96104ece54e0da Mon Sep 17 00:00:00 2001 From: Andriy Golovin Date: Fri, 28 Nov 2014 10:56:27 +0100 Subject: [PATCH 006/157] Translated using Weblate (Ukrainian) Currently translated at 96.2% (1509 of 1568 strings) --- OsmAnd/res/values-uk/strings.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/OsmAnd/res/values-uk/strings.xml b/OsmAnd/res/values-uk/strings.xml index 2d4cf00508..5a8d43da8b 100644 --- a/OsmAnd/res/values-uk/strings.xml +++ b/OsmAnd/res/values-uk/strings.xml @@ -1,4 +1,4 @@ - + Зміни в 0.8.1: \n\t* Більш точні маршрути (трохи повільніше) \n\t* Розумний і швидкий перерахунок маршруту @@ -1145,7 +1145,7 @@ \nЗахід: %2$s Схід/Захід Денний/нічний режим - Налаштування рендерингу: + Налаштування візуалізації Стиль мапи (векторн.) Налаштування екрану Відображати смуги руху @@ -1927,7 +1927,7 @@ OsmAnd має відкриті сирці і активно розвиваєть Будь ласка, вкажіть id Продовжити навігацію Призупинити навігацію - Режим метро + Маршрути метро Піший гірський туризм (шкала SAC) Візуалізація шляху за шкалою SAC Шар символів для пішого туризму @@ -1951,7 +1951,7 @@ OsmAnd має відкриті сирці і активно розвиваєть Писати трек у файл GPX Загальний запис місцезнаходження в файл GPX можна ввімкнути або вимкнути кнопкою запису GPX на екрані з мапою Інтервал записування - Режим громадського транспорту + Маршрути автобусів, тролейбусів та маршруток Запис власних подорожей г Тривалісьть From 296f63fbe67b349d28882d5f0759f32bcb3009ff Mon Sep 17 00:00:00 2001 From: jan madsen Date: Fri, 28 Nov 2014 10:53:47 +0100 Subject: [PATCH 007/157] Translated using Weblate (Danish) Currently translated at 100.0% (574 of 574 strings) --- OsmAnd/res/values-da/phrases.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-da/phrases.xml b/OsmAnd/res/values-da/phrases.xml index 5a7f31be83..27b4e4d8dc 100644 --- a/OsmAnd/res/values-da/phrases.xml +++ b/OsmAnd/res/values-da/phrases.xml @@ -449,7 +449,7 @@ Fastfood Bar Pub - Fødevaremarked + Madmarked Drikkevand Barbecue From 5398d79c60ec9adc08b9b07554a9da9d7abe4c8c Mon Sep 17 00:00:00 2001 From: Andriy Golovin Date: Fri, 28 Nov 2014 11:00:00 +0100 Subject: [PATCH 008/157] Translated using Weblate (Ukrainian) Currently translated at 96.2% (1509 of 1568 strings) --- OsmAnd/res/values-uk/strings.xml | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/OsmAnd/res/values-uk/strings.xml b/OsmAnd/res/values-uk/strings.xml index 5a8d43da8b..0cda883e6c 100644 --- a/OsmAnd/res/values-uk/strings.xml +++ b/OsmAnd/res/values-uk/strings.xml @@ -1465,15 +1465,14 @@ OsmAnd має відкриті сирці і активно розвиваєть * Натисніть на масштабну лінійку, щоб побачити більше дій. Допоміжні можливості: будь ласка, спочатку оберіть пункт призначення Використовувати магнітометр для визначення сторін світу замість, датчику орієнтації - Ви можете шукати об’єкти безпосередньо на мапі через \'Контекстне меню\' → \'Шукати поруч\' або на екрані пошуку \'Меню\' → \'Пошук\' - \n\nНа пошуковому екрані наявні шаблони для пошуку - \n\t* за адресою - \n\t* координатами - \n\t* пошук POI (за типом чи назвою) - \n\t* використання результатів історії пошуку - \n\t* або обираючи із збережених точок. - \n\nУ допомогу до всіх підказок, контекстне меню пропонує два варіанти: \'Маршрут\' чи \'Показати на мапі\' - + "Ви можете шукати об’єкти безпосередньо на мапі через \'Контекстне меню\' → \'Шукати поруч\' або на екрані пошуку \'Меню\' → \'Пошук\' +\n\nНа пошуковому екрані наявні шаблони для пошуку +\n\t* за адресою +\n\t* координатами +\n\t* пошук POI (за типом чи назвою) +\n\t* використання результатів історії пошуку +\n\t* або обираючи із збережених точок. +\n\nУ допомогу до всіх підказок, контекстне меню пропонує два варіанти: \'Маршрут до\' чи \'Показати на мапі\' " Пункт призначення %1$s @@ -1961,8 +1960,8 @@ OsmAnd має відкриті сирці і активно розвиваєть Путьові точки Цілі Перешкоди - Оголошувати улюблені - Оголошувати POI + Оголошувати закладки, що є поруч + Оголошувати POI, що є поруч Завжди питати Оберіть інтервал періодичності запису треку (вмикається через віджет запису GPX) Загальний інтервал запису From 9838d4422f068f077edfe1df71875dc7c882e344 Mon Sep 17 00:00:00 2001 From: sonora Date: Fri, 28 Nov 2014 11:03:09 +0100 Subject: [PATCH 009/157] improve strings for Android 4.4 migration support (de + en) --- OsmAnd/res/values-de/strings.xml | 2 +- OsmAnd/res/values/strings.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-de/strings.xml b/OsmAnd/res/values-de/strings.xml index 4d34e3c87d..38f205f302 100644 --- a/OsmAnd/res/values-de/strings.xml +++ b/OsmAnd/res/values-de/strings.xml @@ -1538,7 +1538,7 @@ "Seit Android 4.4 (KitKat) können neue Karten-Downloads nicht mehr am Speicherort früherer Android-Versionen gespeichert werden (%s). Jetzt den zulässigen Speicherort wählen und alle OsmAnd Dateien dorthin kopieren? \n Hinweis 1: Die ursprünglichen Dateien bleiben hiervon unberührt, können aber nachfolgend manuell gelöscht werden. \n Hinweis 2: Die Dateien können dann nicht mehr von OsmAnd und OsmAnd+ gemeinsam genutzt werden." - Soll Osmand versuchen, die Dateien an den neuen Speicherort zu verschieben? + Soll Osmand auch die Dateien an den neuen Speicherort verschieben? Kopieren der Datei (%s) an den neuen Speicherort… Kopieren der Osmand-Dateien zum neuen Speicherort (%s) Kopiere Osmand-Dateien diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index 51fb617d8c..29b6e282b2 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -427,7 +427,7 @@ Since Android version 4.4 (KitKat) you cannot download and update maps to the previous storage folder (%s). Do you want to change to the permitted storage location and copy all OsmAnd files there? \n Note 1: Your old files will remain untouched (but can be deleted manually). \n Note 2: In the new storage location it will not be possible to share files between OsmAnd and OsmAnd+. - Do you want OsmAnd to try to copy its data files to the new destination? + Do you want OsmAnd to also copy its data files to the new destination? Copying file (%s) to the new destination... Copying OsmAnd data files to the new destination (%s) Copying OsmAnd data files From 6041a31bdb57c682965f8dec6aaaa3bfb820fe84 Mon Sep 17 00:00:00 2001 From: Mirco Zorzo Date: Fri, 28 Nov 2014 10:57:37 +0100 Subject: [PATCH 010/157] Translated using Weblate (Italian) Currently translated at 100.0% (1568 of 1568 strings) --- OsmAnd/res/values-it/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-it/strings.xml b/OsmAnd/res/values-it/strings.xml index 63d097dab9..c33f74214b 100644 --- a/OsmAnd/res/values-it/strings.xml +++ b/OsmAnd/res/values-it/strings.xml @@ -1964,7 +1964,7 @@ Si consiglia di aggiungere uno o più punti intermedi per migliorarne le prestaz Annuncia PDI nelle vicinanze Itinerari Tutto - Registrate le vostre tracce con il pulsante dedicato nello schermo della mappa. Mostra le impostazioni per la registrazione dei vostri viaggi in file GPX localmente o online utilizzando un servizio web. + Registra le tue tracce con il pulsante dedicato nello schermo della mappa. Mostra le impostazioni per la registrazione dei tuoi viaggi in file GPX localmente o online utilizzando un servizio web. Registra i tuoi viaggi h Durata From 61f65a5949536178bd42240f78eec5543b9098ef Mon Sep 17 00:00:00 2001 From: Andriy Golovin Date: Fri, 28 Nov 2014 11:02:40 +0100 Subject: [PATCH 011/157] Translated using Weblate (Ukrainian) Currently translated at 96.2% (1509 of 1568 strings) --- OsmAnd/res/values-uk/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-uk/strings.xml b/OsmAnd/res/values-uk/strings.xml index 0cda883e6c..137cfbce45 100644 --- a/OsmAnd/res/values-uk/strings.xml +++ b/OsmAnd/res/values-uk/strings.xml @@ -1086,7 +1086,7 @@ \n\nДля кращого обчислення висоти використовується проекція EGM96. \n\nOsmAnd покаже висоту над рівнем моря в EGM96 після завантаження файлу \'World Altitide Correction\' (WW15MGH.DAC), використовуючи \'Налаштування\'->\'Управління мапами\' (http://earth-info.nga.mil/GandG/wgs84/gravitymod/egm96/binary/WW15MGH.DAC). " старт - Фоновий режим запущений. Ви хочете його відключити? + Фоновий режим запущений. Ви хочете зупинити його роботу також? Закрити набір змін Програму \'Сканер штрих-кодів\' не знайдено. Шукати в Market? Виберіть кольорову схему доріг: @@ -1652,7 +1652,7 @@ OsmAnd має відкриті сирці і активно розвиваєть Зупинити Ввімкнути режим сну GPS Інтервал вмикання GPS - Збудити зі сну GPS? + Зупинити фоновий режим GPS? Бажана мова для етикеток на мапі (якщо вона недоступна будуть показані позначки англійською чи місцевою мовами) Бажана мова мапи Назви місцевою мовою From 7d187577424dfe9836c3f2b2bcd63a578b9a45ff Mon Sep 17 00:00:00 2001 From: jan madsen Date: Fri, 28 Nov 2014 11:06:49 +0100 Subject: [PATCH 012/157] Translated using Weblate (Danish) Currently translated at 99.1% (577 of 582 strings) --- OsmAnd/res/values-da/phrases.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/OsmAnd/res/values-da/phrases.xml b/OsmAnd/res/values-da/phrases.xml index 27b4e4d8dc..7a97e7c66d 100644 --- a/OsmAnd/res/values-da/phrases.xml +++ b/OsmAnd/res/values-da/phrases.xml @@ -623,4 +623,8 @@ Palæontologisk område + Motorvejskryds + + Mole + Sportsbane From 41c85ebf9fd630280147952f583ac187dc073747 Mon Sep 17 00:00:00 2001 From: Andriy Golovin Date: Fri, 28 Nov 2014 11:06:21 +0100 Subject: [PATCH 013/157] Translated using Weblate (Ukrainian) Currently translated at 96.2% (1509 of 1568 strings) --- OsmAnd/res/values-uk/strings.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/OsmAnd/res/values-uk/strings.xml b/OsmAnd/res/values-uk/strings.xml index 137cfbce45..35a565d10b 100644 --- a/OsmAnd/res/values-uk/strings.xml +++ b/OsmAnd/res/values-uk/strings.xml @@ -429,8 +429,8 @@ \n\nВікно маркеру приховується довгим натисканням на нього. Допомога - "OsmAnd - навігаційна програма з великими можливостями. -\n\nПочаткові відомості, як і деякі поради та детальна інструкція щодо використання знаходяться в \'Меню\'→\'Допомога\' на екрані з мапою. " + "OsmAnd — навігаційна програма з великими можливостями. +\n\nПочаткові відомості, як і деякі поради щодо використання знаходяться в \'Меню\'→\'Допомога\' на екрані з мапою. " Наступний Попередній Змінити одиниці вимірювання довжини і швидкості @@ -751,7 +751,7 @@ Зберегти активний GPX трек Інтервал збереження під час навіґації Вказати інтервал збереження точок треку під час навіґації - Треки буде збережено в трекову директорію під час навіґації + Треки будуть збережені в теку для треків під час навіґації Записувати трек у файл GPX під час навіґації Оновити мапу Оновити частину мапи @@ -1920,7 +1920,7 @@ OsmAnd має відкриті сирці і активно розвиваєть Поділитись Закладки, якими поділились через OsmAnd Невірний формат: %s -Кольорові будівлі +Кольорове маркування будівель за типом Запросити… Ви бажаєте вийти з групи %1$s? Будь ласка, вкажіть id From 3fbae1018a6f20aa8693fbd7f34fb1804dbcd140 Mon Sep 17 00:00:00 2001 From: jan madsen Date: Fri, 28 Nov 2014 11:07:56 +0100 Subject: [PATCH 014/157] Translated using Weblate (Danish) Currently translated at 99.3% (578 of 582 strings) --- OsmAnd/res/values-da/phrases.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/OsmAnd/res/values-da/phrases.xml b/OsmAnd/res/values-da/phrases.xml index 7a97e7c66d..38b950c5a9 100644 --- a/OsmAnd/res/values-da/phrases.xml +++ b/OsmAnd/res/values-da/phrases.xml @@ -627,4 +627,5 @@ Mole Sportsbane + Højderyg From f874984b9b16252cab1b88942ae1b002a87cd90b Mon Sep 17 00:00:00 2001 From: mircozorzo Date: Fri, 28 Nov 2014 11:08:14 +0100 Subject: [PATCH 015/157] Update strings.xml Change translation from plural to singular --- OsmAnd/res/values-it/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-it/strings.xml b/OsmAnd/res/values-it/strings.xml index c33f74214b..5e7983f553 100644 --- a/OsmAnd/res/values-it/strings.xml +++ b/OsmAnd/res/values-it/strings.xml @@ -1964,7 +1964,7 @@ Si consiglia di aggiungere uno o più punti intermedi per migliorarne le prestaz Annuncia PDI nelle vicinanze Itinerari Tutto - Registra le tue tracce con il pulsante dedicato nello schermo della mappa. Mostra le impostazioni per la registrazione dei tuoi viaggi in file GPX localmente o online utilizzando un servizio web. + Registra le tue tracce con il pulsante dedicato nello schermo della mappa. Mostra le impostazioni per la registrazione dei vostri viaggi in file GPX localmente o online utilizzando un servizio web. Registra i tuoi viaggi h Durata From 14197afd9e43d7c98c10693741d0c1cd1d52ee79 Mon Sep 17 00:00:00 2001 From: jan madsen Date: Fri, 28 Nov 2014 11:11:16 +0100 Subject: [PATCH 016/157] Translated using Weblate (Danish) Currently translated at 100.0% (582 of 582 strings) --- OsmAnd/res/values-da/phrases.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/OsmAnd/res/values-da/phrases.xml b/OsmAnd/res/values-da/phrases.xml index 38b950c5a9..3a94245413 100644 --- a/OsmAnd/res/values-da/phrases.xml +++ b/OsmAnd/res/values-da/phrases.xml @@ -628,4 +628,8 @@ Mole Sportsbane Højderyg + Gletscher + Flod + Vandløb + Militærområde From a2ddbbc4b3f0146b9856fc7c064c131de8795dc1 Mon Sep 17 00:00:00 2001 From: Andriy Golovin Date: Fri, 28 Nov 2014 11:10:57 +0100 Subject: [PATCH 017/157] Translated using Weblate (Ukrainian) Currently translated at 96.2% (1509 of 1568 strings) --- OsmAnd/res/values-uk/strings.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/OsmAnd/res/values-uk/strings.xml b/OsmAnd/res/values-uk/strings.xml index 35a565d10b..283678db14 100644 --- a/OsmAnd/res/values-uk/strings.xml +++ b/OsmAnd/res/values-uk/strings.xml @@ -1850,13 +1850,13 @@ OsmAnd має відкриті сирці і активно розвиваєть Уникати автомагістралі Максимальна вага Задайте обмеження маси автівки - "Починаючи з версії KitKat ви не в змозі завантажувати та оновлювати мапи у попередньому сховищі (%s). Чи бажаєте його змінити та скопіювати всі файли в нове місце? -\n Примітка: старі фали залишаться недоторканими. -\n Примітка: спільне користування фалами між OsmAnd та OsmAnd+ не можливе. " + "Починаючи з версії Android 4.4 (KitKat) ви не в змозі завантажувати та оновлювати мапи у попередню теку (%s). Чи бажаєте її змінити та скопіювати всі файли в нове місце? +\n Примітка 1: ваші старі фали залишаться недоторканими (їх можна вилучити вручну). +\n Примітка 2: в новій теці спільне користування фалами між OsmAnd та OsmAnd+ не можливе." OsmAnd намагається перенести дані до нового місця. Ви згодні? Файл (%s) копіюється на нове місце… - Копіювання файлів OsmAnd до нового місця (%s) - Копіювання файлів OsmAnd + Копіювання файлів даних OsmAnd до нового місця (%s) + Копіювання файлів даних OsmAnd Розрахувати офлайн маршрут в OsmAnd Вантажівка Налаштування навігації @@ -1879,7 +1879,7 @@ OsmAnd має відкриті сирці і активно розвиваєть Навігаційний знак Виберіть профілі, видимі в застосунку Профілі застосунку - Рендерінг мапи: + Візуалізація мапи Піший туризм Мотоцикл Човен From d5357be3b3c3dcc6e0b1e433cfc625f5a8228eca Mon Sep 17 00:00:00 2001 From: Denis Date: Fri, 28 Nov 2014 12:28:57 +0200 Subject: [PATCH 018/157] Added loading indicator for map updates in dashboard --- OsmAnd/res/layout/dash_updates_fragment.xml | 7 +++++++ .../net/osmand/plus/dashboard/DashUpdatesFragment.java | 10 ++++------ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/OsmAnd/res/layout/dash_updates_fragment.xml b/OsmAnd/res/layout/dash_updates_fragment.xml index 8e4d96408c..f0e6623b1c 100644 --- a/OsmAnd/res/layout/dash_updates_fragment.xml +++ b/OsmAnd/res/layout/dash_updates_fragment.xml @@ -20,9 +20,16 @@ android:textSize="14sp" android:textColor="@color/dashboard_black"/> + diff --git a/OsmAnd/src/net/osmand/plus/dashboard/DashUpdatesFragment.java b/OsmAnd/src/net/osmand/plus/dashboard/DashUpdatesFragment.java index dcb34cf862..850b771f1c 100644 --- a/OsmAnd/src/net/osmand/plus/dashboard/DashUpdatesFragment.java +++ b/OsmAnd/src/net/osmand/plus/dashboard/DashUpdatesFragment.java @@ -73,15 +73,12 @@ public class DashUpdatesFragment extends DashBaseFragment { progressBars.clear(); baseNames.clear(); downloadButtons.clear(); - if (list.size() > 0) { - mainView.setVisibility(View.VISIBLE); - } else { - mainView.setVisibility(View.GONE); + mainView.findViewById(R.id.main_progress).setVisibility(View.GONE); + ((TextView)mainView.findViewById(R.id.update_count)).setText(String.valueOf(list.size())); + if (list.size() < 1) { return; } - ((TextView)mainView.findViewById(R.id.update_count)).setText(String.valueOf(list.size())); - LinearLayout updates = (LinearLayout) mainView.findViewById(R.id.updates_items); updates.removeAllViews(); @@ -150,6 +147,7 @@ public class DashUpdatesFragment extends DashBaseFragment { }); boolean intermediate = basicProgressAsyncTask.isIndeterminate(); currentProgress.setVisibility(intermediate ? View.GONE : View.VISIBLE); + getView().findViewById(R.id.main_progress).setVisibility(intermediate ? View.VISIBLE : View.GONE); if (!intermediate) { currentProgress.setProgress(basicProgressAsyncTask.getProgressPercentage()); } From 46852470fa2e3138fe22fa3faec2606cc8b786dc Mon Sep 17 00:00:00 2001 From: Zahnstocher Date: Fri, 28 Nov 2014 11:40:56 +0100 Subject: [PATCH 019/157] SC + JA translations are complete https://groups.google.com/forum/#!topic/osmand/YKgNn_sV69Q --- .../net/osmand/plus/activities/SettingsGeneralActivity.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/activities/SettingsGeneralActivity.java b/OsmAnd/src/net/osmand/plus/activities/SettingsGeneralActivity.java index ffc787aaf1..8b1e712e3d 100644 --- a/OsmAnd/src/net/osmand/plus/activities/SettingsGeneralActivity.java +++ b/OsmAnd/src/net/osmand/plus/activities/SettingsGeneralActivity.java @@ -247,7 +247,7 @@ public class SettingsGeneralActivity extends SettingsBaseActivity { getString(R.string.lang_hu), getString(R.string.lang_id) + incompleteSuffix, getString(R.string.lang_it), - getString(R.string.lang_ja) + incompleteSuffix, + getString(R.string.lang_ja), getString(R.string.lang_ko), getString(R.string.lang_lv), getString(R.string.lang_lt), @@ -258,7 +258,7 @@ public class SettingsGeneralActivity extends SettingsBaseActivity { getString(R.string.lang_pt), getString(R.string.lang_ro), getString(R.string.lang_ru), - getString(R.string.lang_sc) + incompleteSuffix, + getString(R.string.lang_sc), getString(R.string.lang_sr) + incompleteSuffix, getString(R.string.lang_zh_CN) + incompleteSuffix, getString(R.string.lang_sk), From b27cdf09f8751cd500fe68c0d9071437171881b6 Mon Sep 17 00:00:00 2001 From: ezjerry liao Date: Fri, 28 Nov 2014 11:52:36 +0100 Subject: [PATCH 020/157] Translated using Weblate (Traditional Chinese) Currently translated at 100.0% (1568 of 1568 strings) --- OsmAnd/res/values-zh-rTW/strings.xml | 57 ++++++++++------------------ 1 file changed, 20 insertions(+), 37 deletions(-) diff --git a/OsmAnd/res/values-zh-rTW/strings.xml b/OsmAnd/res/values-zh-rTW/strings.xml index eb856a62d6..1c5cf16a1f 100644 --- a/OsmAnd/res/values-zh-rTW/strings.xml +++ b/OsmAnd/res/values-zh-rTW/strings.xml @@ -51,32 +51,9 @@ 導航過程中對齊道路位置 對齊道路 將離線與線上的 OSM 地圖,用在全球行動地圖檢視和導航 - - OsmAnd (OSM Automated Navigation Directions) - - OsmAnd 是開放程式碼的導航應用程式,存取各式各樣的全球性 OpenStreetMap (簡稱 OSM 開放街道地圖) 資料。所有圖資(向量圖或地圖圖磚)可存放於手機的記憶卡上,可作離線與線上圖資導航,包含轉向建議(turn by turn)語音導航。 - - 主要功能: - - 完整的離線功能(存放下載的向量圖或地圖圖磚) - - 提供細致的全球離線向量圖資 - - 直接從應用程式下載各國或區域圖資 - - 可疊加不同的多種地圖層於自訂的透明度,如 GPX 或導航軌跡、興趣點、我的最愛、公共運輸站 - - 離線查尋地址、場所(POI) - - 短距離的離線使用路線(實驗性) - - 汽車、自行車、步行模式有下列選項: - - 可選的自動日夜模式切換 - - 可選的依據速度自動地圖比例尺縮放 - - 可選的地圖正北朝上或行進方向朝上 - - 可選的車道引導、速限顯示、使用真人語音或 TTS 語音 - - OsmAnd 免費版限制: - - 地圖下載數量 - - 無法使用離線維基百科的 POI - - OsmAnd 正在積極開發我們的專案,並且它的更進一步發展依賴於提供資金的捐助,用以資助發展和新功能的駕駛測試。請考慮購買 OsmAnd +,或資助特定的新功能或在 osmand.net 網站上一般捐贈。 - + " OsmAnd (OSM Automated Navigation Directions) OsmAnd 是開放程式碼的導航應用程式,存取各式各樣的全球性 OpenStreetMap (簡稱 OSM 開放街道地圖) 資料。所有圖資(向量圖或地圖圖磚)可存放於手機的記憶卡上,可作離線與線上圖資導航,包含轉向建議(turn by turn)語音導航。 主要功能: - 完整的離線功能(存放下載的向量圖或地圖圖磚於裝置存儲器) - 提供細致的全球離線向量圖資 - 直接從應用程式下載各國或區域圖資 - 可疊加不同的多種地圖層於自訂的透明度,如 GPX 或導航軌跡、興趣點、我的最愛、公共運輸站 - 離線查尋地址、場所(POI) - 短距離的離線使用路線(實驗性) - 汽車、自行車、步行模式有下列選項: - 可選的自動日夜模式切換 - 可選的依據速度自動地圖比例尺縮放 - 可選的地圖正北朝上或行進方向朝上 - 可選的車道引導、速限顯示、使用真人語音或 TTS 語音 OsmAnd 免費版限制: - 地圖下載數量 - 無法使用離線維基百科的 POI OsmAnd 正在積極開發我們的專案,並且它的更進一步發展依賴於提供資金的捐助,用以資助發展和新功能的駕駛測試。請考慮購買 OsmAnd +,或資助特定的新功能或在 osmand.net 網站上一般捐贈。 " 將離線與線上的 OSM 地圖,用在全球行動地圖檢視和導航 - " OsmAnd+ OsmAnd (OSM Automated Navigation Directions) OsmAnd 是開放源碼導航應用程式,可以使用各式各樣的全球性 OpenStreetMap (簡稱 OSM 開放街道地圖) 資料。所有圖資(向量圖或地圖圖磚)可存放於裝置的記憶卡上,可作離線與線上圖資導航,包含轉向建議(turn by turn)語音導航。 主要功能: - 完整離線功能 (存放下載的向量圖或地圖圖磚) - 全球離線向量圖資 - 直接由手機下載各國或區域圖資 - 可疊加不同的多種地圖層於自訂的透明度,如 GPX 或導航軌跡、興趣點、我的最愛、等高線、大眾運輸停靠站 - 離線查尋地址、場所(POI) - 離線尋找導航路線 - 汽車、自行車、步行模式有下列選項: - 自動日/夜模式切換選項 - 取決於速度的地圖縮放選項 - 地圖正北朝上或行進方向朝上選項 - 車道引導、速限顯示、使用真人語音或 TTS 語音選項 " + " OsmAnd+ OsmAnd (OSM Automated Navigation Directions) OsmAnd 是開放源碼導航應用程式,可以使用各式各樣的全球性 OpenStreetMap (簡稱 OSM 開放街道地圖) 資料。所有圖資(向量圖或地圖圖磚)可存放於裝置的記憶卡上,可作離線與線上圖資導航,包含轉向建議(turn by turn)語音導航。 主要功能: - 完整離線功能 (存放下載的向量圖或地圖圖磚於裝置存儲器) - 全球離線向量圖資 - 直接由手機下載各國或區域圖資 - 可疊加不同的多種地圖層於自訂的透明度,如 GPX 或導航軌跡、興趣點、我的最愛、等高線、大眾運輸停靠站 - 離線查尋地址、場所(POI) - 離線尋找導航路線 - 汽車、自行車、步行模式有下列選項: - 自動日/夜模式切換選項 - 取決於速度的地圖縮放選項 - 地圖正北朝上或行進方向朝上選項 - 車道引導、速限顯示、使用真人語音或 TTS 語音選項 " 更新離線地圖 "離線地圖的查看與 POI/位址查尋,以及離線導航,有最新的圖資是不可或缺的。OsmAnd 提供了地圖檔案的管理用以下載那些離線圖資,並且檢查能用的更新。 \n\n下載圖資更新由\'設定\' -> \'管理地圖檔案\' -> \'下載\'。 @@ -633,8 +610,8 @@ OsmAnd 導航 > 20公里 使用 OsmAnd 離線導航僅適用于路線 > 20 公里(實驗性的) OsmAndd 離線導航是個實驗性的功能,它不能運作超過 20 公里的距離。\n\n導航服務暫時切為線上的 CloudMade。 - 指定的目錄不存在。 - 存儲目錄 + 找不到指定的資料夾。 + 資料存儲器資料夾 有前一版的 OsmAnd 存在,所有的離線資料將被新版引用。但我的最愛內的標點須以舊版程式匯出後再用新版程式匯入。 編譯 {0} 成功安裝({1})。 @@ -690,7 +667,7 @@ 語音 向量地圖未載入 以 GPX 導航 - 在/tracks 目錄找不到 GPX 檔案 + 在 /tracks 資料夾找不到 GPX 檔案 GPX 軌跡… 讀取 GPX 資料錯誤 離線向量地圖 @@ -825,7 +802,7 @@ 總距離 %1$s、行駛時間 %2$d 小時 %3$d 分。 選擇線上或離線的導航服務 導航服務 - SD卡上的儲存目錄不可存取 + 在 SD 卡上的存儲資料夾無法存取 下載 {0} - {1}? 離線資料 {0}已存在 ({1})。您要更新 ({2})嗎 ? 地址 @@ -889,7 +866,7 @@ 儲存目前的 GPX 軌跡 在導航期間的記錄間隔 在導航整個期間,為軌跡記錄選取記錄間隔 - 在導航的整個期間,軌跡將會儲存在 track 目錄 + 在整個導航期間,軌跡將會儲存在 track 資料夾 導航期間記錄軌跡成 GPX 檔案 更新地圖 重新載入圖磚 @@ -1465,14 +1442,14 @@ 導航偏好 路線偏好 卡車 - OsmAnd 可以試著將資料移到新的目的地。您想要移動嗎? + 您想要將 OsmAnd 資料複製到新的目的地嗎? 複製檔案 (%s) 到新的目的地... - 複製 OsmAnd 檔案到新的目的地 (%s) - 複製 OsmAnd 的檔案 + 複製 OsmAnd 資料檔到新的目的地 (%s) + 複製 OsmAnd 資料檔案 OsmAnd 預估離線路線 - 由於 KitKat 版本,您無法下載和更新地圖於之前的存儲位置 (%s)。您是否想變更以允許複製所有檔案到那裡? - \n注意:舊的檔案將保持不變。 - \n注意:它將不可能在 OsmAnd 和 OsmAnd + 兩者之間共用檔案。 + 由於 Android 4.4 (KitKat) 版本,您無法下載和更新地圖於之前的存儲檔案夾 (%s)。您是否想變更到允許的存儲位置並複製所有的 OsmAnd 檔案到那裡? +\n注意 1:您舊的檔案將保持不變(但可以手動刪除)。 +\n注意 2:在新的存儲位置,它不可能在 OsmAnd 和 OsmAnd + 兩者之間共用檔案。 高速公路優先 高速公路優先 最短路線 @@ -1857,4 +1834,10 @@ 進階 使用安全協定連線於伺服器 使用 https - + 地圖 + 查尋 + 顯示地圖 + 全部顯示 + 座標 + 首頁 + From 6284b2c2aed57ff3e2903fcada6ed8fd3cd8d0ab Mon Sep 17 00:00:00 2001 From: Andriy Golovin Date: Fri, 28 Nov 2014 11:59:49 +0100 Subject: [PATCH 021/157] Translated using Weblate (Ukrainian) Currently translated at 100.0% (1568 of 1568 strings) --- OsmAnd/res/values-uk/strings.xml | 160 +++++++++++++++++-------------- 1 file changed, 86 insertions(+), 74 deletions(-) diff --git a/OsmAnd/res/values-uk/strings.xml b/OsmAnd/res/values-uk/strings.xml index 283678db14..874a13060d 100644 --- a/OsmAnd/res/values-uk/strings.xml +++ b/OsmAnd/res/values-uk/strings.xml @@ -9,7 +9,7 @@ \n\t* Увімкнення/вимкнення віджету моніторингу Швидко - Зберегти маршрут в GPX файл + Зберегти маршрут в файл GPX Круговий рух : %1$d з’їзд Тримайтесь ліворуч Тримайтесь праворуч @@ -52,7 +52,7 @@ Налаштування онлнай або кешованих джерел (тайлів) мап Налаштування мапи Налаштування відображення карти - Втулок дозволяє використовувати різні джерела онлайн мап, а також підготовлені растрові мапи як базову мапу або підкладку. Мапи можуть бути підготовленими на комп’ютері і повинні бути скопійовані в теку osmand на SD-картку. + Втулок дозволяє використовувати різні джерела онлайн мап, а також підготовлені растрові мапи як базову мапу або підкладку. Мапи можуть бути підготовленими на комп’ютері і скопійовані в теку з даними OsmAnd. Налаштування для навігації і запису маршрутів в енергозберігаючому режимі. Втулок працює в фоновому режимі і періодично активує GPS для запису маршруту або відтворення голосових команд. Втулок містить налаштування допоміжних можливостей. Розширені налаштування @@ -365,7 +365,7 @@ Виберіть зворотній напрямок Використовувати поточний пункт призначення Пройти увесь шлях спочатку - Для цього регіону доступні оффлайн векторні мапи\n\t\n\tДля їх використання виберіть пункт меню \'Шари мапи\' → \'Джерело мапи…\' → \'Локальні векторні мапи\'. + Для цього регіону доступні оффлайн векторні мапи\n\t\n\tДля їх використання виберіть пункт меню \'Налаштування Мапи\' → \'Джерело мапи…\' → \'Локальні векторні мапи\'. Голосові інструкції Виберіть канал для голосових інструкцій (залежить від системи) Потік голосових дзвінків @@ -405,7 +405,7 @@ "Точки, що часто використовуються можуть бути додані в Закладки. \n\nДля додавання точки до Закладок, відкрийте контекстне меню мапи, виберіть пункт \'Додати в Закладки\' та додайте назву закладки. \n\nПісля додання до Закладок, вона буде доступна в \'Меню\' → \'Мої місця\'. Довге натискання на закладку в меню \'Закладки\' надасть можливість встановити її в якості місця призначення, редагувати її чи вилучити. -\n\nДля показу всіх збережених точок на мапі, активуйте шар \'Закладки\' в \'Меню\' → \'Шари мапи\' " +\n\nДля показу всіх збережених точок на мапі, активуйте шар \'Закладки\' в \'Меню\' → \'Налаштування Мапи\' " Помилка автономного пошуку Неможливо обробити запит \'%s\' Пошук адреси в локальних мапах @@ -493,8 +493,8 @@ Автономна навігація > 20км Використовувати OsmAnd оффлайн навігацію на відстані > 20 км (експериментально) OsmAnd оффлайн навігація є експериментальною і не працює на відстанях > 20 км\n\nВ цьому випадку для прокладання маршруту використовуйте онлайн сервіс CloudMade. - Неможливо знайти вказану папку. - Папка програми + Неможливо знайти вказану теку. + Тека даних Збірка {0} успішно встановлена ({1}). Завантажується збірка… @@ -549,7 +549,7 @@ Голос Векторні мапи не завантажено Навігація по GPX - GPX файли не знайдені в папці /tracks + Файли GPX не знайдені в теці з треками Трек GPX… Помилка читання GPX даних Оффлайн векторні мапи @@ -684,7 +684,7 @@ Загальна відстань %1$s, Час в дорозі %2$d г %3$d хв. Виберіть сервіс для прокладання маршруту Прокладання маршруту - Папка на SD-карті не доступна для збереження + Тека даних на SD-карті не доступна Завантажити {0} - {1} ? Оффлайн мапа для {0} вже існує ({1}). Хочете її оновити ({2}) ? Адрес @@ -1186,30 +1186,7 @@ \n\t* Доданий ще один типів доріг для велосипедів (Cycleway=track) \n\t* Виправлені помилки - - OsmAnd (OSM Automated Navigation Directions) - - OsmAnd — навігаційне програмне забезпечення з відкритим кодом з доступом до різноманітних картографічних даних від OpenStreetMap (OSM). Всі картографічні дані (векторні та растрові) можуть бути збережені на карті пам’яті для подальшого автономного використання. OsmAnd також пропонує можливість прокладання маршруту як оффлайн, так і використовуючи онлайн-сервіси з покроковим голосовим супроводженням. - - Кілька основних можливостей: - - Повноцінна робота без інтернет-з’єднання(просто збережіть векторні чи растрові дані до обраної теки), - - Компактна векторна мапа всього світу, - - Завантаження мап країн чи регіону безпосередньо в програмі, - - Можливість відображення додаткових даних на мапі, наприклад шар для прокладання маршруту чи шар із записом GPX-треку, з POI, закладками, ізолініями висот, громадським транспортом, додатковими мапами з можливістю налаштовування рівня прозорості, - - Автономний пошук адрес та POI, - - Прокладання маршрутів оффлайн на короткі відстані (експериментальна функція), - - Режими для пішохідної, автомобільної та велонавігації: - - можливість перемикання на денний/нічний режим відображення мапи, - - автомасштабування мапи відповідно до швидкості руху, - - можливість орієнтації мапи за компасом чи напрямком руху, - - показ руху по смугах та обмежень швидкості, запис та голосове супроводження. - - Обмеження безкоштовної версії: - - кількість завантажених мап є обмеженою, - - відсутній оффлайн доступ до інформації з Вікіпедії для POI. - - OsmAnd активно розвивається, його подальший розвиток забезпечується фінансовими надходженнями від його користувачів, за рахунок якої відбувається подальша розробка та впровадження нових функцій. Якщо вам подобається OsmAnd, розгляньте можливість придбання OsmAnd+ чи підтримайте впровадження нових функцій, або зробіть благодійний внесок на osmand.net. - + " OsmAnd (OSM Automated Navigation Directions) OsmAnd — навігаційне програмне забезпечення з відкритим кодом з доступом до різноманітних картографічних даних від OpenStreetMap (OSM). Всі картографічні дані (векторні та растрові) можуть бути збережені на карті пам’яті для подальшого автономного використання. OsmAnd також пропонує можливість прокладання маршруту як оффлайн, так і використовуючи онлайн-сервіси з покроковим голосовим супроводженням. Кілька основних можливостей: - Повноцінна робота без інтернет-з’єднання(просто збережіть векторні чи растрові дані на пристрій), - Компактна векторна мапа всього світу, - Завантаження мап країн чи регіону безпосередньо в програмі, - Можливість показу додаткових даних на мапі, наприклад шар для прокладання маршруту чи шар із записом GPX-треку, з POI, закладками, ізолініями висот, громадським транспортом, додатковими мапами з можливістю налаштовування рівня прозорості, - Автономний пошук адрес та POI, - Прокладання маршрутів оффлайн на короткі відстані (експериментальна функція), - Режими для пішохідної, автомобільної та велонавігації: - можливість перемикання на денний/нічний режим показу мапи, - автомасштабування мапи відповідно до швидкості руху, - можливість орієнтації мапи за компасом чи напрямком руху, - показ руху по смугах та обмежень швидкості, запис та голосове супроводження. Обмеження безкоштовної версії: - кількість завантажених мап є обмеженою, - відсутній оффлайн доступ до інформації з Вікіпедії для POI. OsmAnd активно розвивається, його подальший розвиток забезпечується фінансовими надходженнями від його користувачів, за рахунок якої відбувається подальша розробка та впровадження нових функцій. Якщо вам подобається OsmAnd, розгляньте можливість придбання OsmAnd+ чи підтримайте впровадження нових функцій, або зробіть благодійний внесок на osmand.net. " OsmAnd (OSM Automated Navigation Directions) OsmAnd — навігаційне програмне забезпечення з доступом до вільних, доступних по всьому світу та високоякісних картографічних даних від OpenStreetMap (OSM). Всі картографічні дані можуть зберігатися на карті пам’яті для автономного використання. За допомогою GPS, доступному у вашому пристрої, OsmAnd пропонує вам маршрутизацію, з графічними та голосовими підказками, для автомобіля, велосипедів і пішоходів. Всі основні функції працюють як онлайн, так і в автономному режимі (немає потреби в інтернеті). @@ -1281,27 +1258,7 @@ OsmAnd має відкриті сирці і активно розвиваєть Перелік підтримуваних країн (взагалі то увесь світ!): Афганістан, Австралія, Австрія, Азербайджан, Албанія, Алжир, Ангілья, Ангола, Андорра, Антигуа і Барбуда, Аргентина, Аруба, Багамські острови, Бангладеш, Барбадос, Бахрейн, Беліз, Бельгія, Бенін, Бермудські острови, Білорусь, Болгарія, Болівія, Бонайре, Боснія і Герцеговина, Ботсвана, Бразилія, Британські Віргінські острови, Бруней, Буркіна-Фасо, Бурунді, Бутан, В’єтнам, Вануату, Ватикан, Венесуела, Вірменія, Габон, Гаїті, Гайана, Гамбія, Гана, Гваделупа, Гватемала, Гвінея, Гвінея-Бісау, Гернсі, Гібралтар, Гондурас, Гонконг, Гренада, Гренландія, Греція, Грузія, Гуам, Данія, Джерсі, Джібуті, Домініка, Домініканська Республіка, Еквадор, Екваторіальна Гвінея, Еритрея, Естонія, Ефіопія, Єгипет, Ємен, Замбія, Західна Сахара,, Зімбабве., Ізраїль, Індія , Індонезія, Ірак, Іран, Ірландія, Ісландія, Іспанія, Італія, Йорданія, Кабо-Верде, Казахстан, Камбоджа, Камерун, Канада, Катар, Кенія, Киргизстан, Китай, Кіпр, Кірибаті, Колумбія, Коморські Острови, Конго, Коста-Ріка , Кот-д’Івуар, Куба, Кувейт, Кюрасао, Лаос, Латвія, Лесото, Литва, Ліберія , Ліван, Лівія, Ліхтенштейн, Люксембург, М’янма, Маврикій, Мавританія, Мадагаскар, Майотта, Макао, Македонія, Малаві, Малайзія, Малі, Мальдіви, Мальта, Марокко, Мартініка, Мексика, Мікронезія, Мозамбік , Молдова, Монако, Монголія, Монтсеррат, Намібія, Науру, Непал, Нігер, Нігерія, Нідерланди, Нідерландські Антильські острови, Нікарагуа, Німеччина, Нова Зеландія, Нова Каледонія, Норвегія, Об’єднані Арабські Емірати, Оман, острів Мен, Острів Святої Єлени, Пакистан, Палау, Палестина, Панама, Папуа Нова Гвінея, Парагвай, Перу, Південна Африка, Південна Грузія, Південний Судан, Північна Корея і Південна Корея, Польща , Португалія, Пуерто-Ріко, Росія, Руанда, Румунія, Сальвадор, Самоа, Сан-Марино, Саудівська Аравія, Свазіленд, Сейшельські острови, Сен-Мартен, Сен-П’єр і Мікелон, Сенегал, Сент-Бартелемі, Сент-Вінсент і Гренадини, Сент-Кітс і Невіс, Сент-Люсія, Сербія, Сирія, Сінгапур, Словаччина, Словенія, Сомалі, Сполучене Королівство (Великобританія), Сполучені Штати Америки (США), Судан, Сурінам, Сьєрра-Леоне, Таджикистан, Таїланд , Тайвань, Танзанія, Тимор-Лешті, Того, Токелау, Тонга, Тринідад і Тобаго, Тувалу, Туніс, Туреччина, Туркменістан, Уганда, Угорщина, Узбекистан, Україна, Уолліс і Футуна, Уругвай, Фіджі, Філіппіни, Фінляндія, Франція, Французька Гвіана, Французька Полінезія, Хорватія, Центрально-Африканська Республіка, Чад, Чеська Республіка, Чилі, Чорногорія, Швейцарія, Швеція, Шрі-Ланка, Ямайка, Японія. - - OsmAnd+ (OSM Automated Navigation Directions) - - OsmAnd+ — навігаційне програмне забезпечення з відкритим кодом з доступом до різноманітних картографічних даних від OpenStreetMap (OSM). Всі картографічні дані (векторні та растрові) можуть бути збережені на карті пам’яті для подальшого автономного використання. OsmAnd також пропонує можливість прокладання маршруту як оффлайн, так і використовуючи онлайн-сервіси з покроковим голосовим супроводженням. - - OsmAnd+ — це платна версія, купуючи яку ви підтримуєте проект, фінансуючи розробку нових функцій, одержуючи останні оновлення. - - Кілька основних можливостей: - - Повна оффлайн функціональність (збереження векторних чи растрових мап до обраної теки), - - Компактна векторна мапа для всього світу, - - Необмежена кількість завантажень мап окремої країни чи регіону безпосередньо в програмі, - - Можливість автономної роботи із даними Вікіпедії (завантажте POI з Вікіпедії) є чудовим для інструментом для мандрівників, - - Можливість відображення додаткових даних на мапі, наприклад шар для прокладання маршруту чи шар із записом GPX-треку, з POI, закладками, ізолініями висот, громадським транспортом, додатковими мапами з можливістю налаштовування рівня прозорості, - - Автономний пошук адрес та POI, - - Прокладання маршрутів оффлайн для коротких відстаней (експериментальна функція), - - Режими для пішохідної, автомобільної та велонавігації: - - можливість перемикання на денний/нічний режим показу, - - мапи відповідно до швидкості руху, - - можливість орієнтації мапи за компасом чи напрямком руху, - - показ руху по смугах та обмежень швидкості, голосове супроводження (записане чи синтезоване). - + " OsmAnd+ (OSM Automated Navigation Directions) OsmAnd+ — навігаційне програмне забезпечення з відкритим кодом з доступом до різноманітних картографічних даних від OpenStreetMap (OSM). Всі картографічні дані (векторні та растрові) можуть бути збережені на карті пам’яті для подальшого автономного використання. OsmAnd також пропонує можливість прокладання маршруту як оффлайн, так і використовуючи онлайн-сервіси з покроковим голосовим супроводженням. OsmAnd+ — це платна версія, купуючи яку ви підтримуєте проект, фінансуючи розробку нових функцій, одержуючи останні оновлення. Кілька основних можливостей: - Повна оффлайн функціональність (просто збережіть векторні чи растрові дані на пристрій), - Компактна векторна мапа для всього світу, - Необмежена кількість завантажень мап окремої країни чи регіону безпосередньо в програмі, - Можливість автономної роботи із даними Вікіпедії (завантажте POI з Вікіпедії) є чудовим для інструментом для мандрівників, - Можливість показу додаткових даних на мапі, наприклад шар для прокладання маршруту чи шар із записом GPX-треку, з POI, закладками, ізолініями висот, громадським транспортом, додатковими мапами з можливістю налаштовування рівня прозорості, - Автономний пошук адрес та POI, - Прокладання маршрутів оффлайн для коротких відстаней (експериментальна функція), - Режими для пішохідної, автомобільної та велонавігації: - можливість перемикання на денний/нічний режим показу, - мапи відповідно до швидкості руху, - можливість орієнтації мапи за компасом чи напрямком руху, - показ руху по смугах та обмежень швидкості, голосове супроводження (записане чи синтезоване). " Натиснувши на іконку компаса на екрані з мапою ви можете змінити режим повороту мапи \n\nДоступні варіанти @@ -1309,18 +1266,16 @@ OsmAnd має відкриті сирці і активно розвиваєть \n\t \'За напрямком руху\' - Мапа буде обертатись у відповідності з напрямком вашого руху. Вгорі - напрямок руху \n\t \'За напрямком компаса\' - Мапа буде обертатись так, щоб сумістити північ мапи і північний напрямок (використовуються дані компаса з пристрою) - Для локальних векторних мап можна змінювати вигляд залежно від часу доби: вдень (свтлі), вночі (темні). Нічний режим безпечніший для використання водіями в темряві - \n\nДля зміни денного/нічного режимів натисніть \'Меню\' → \'Налаштування екрану\' → \'Денний/нічний режим\' - \n\nМожливі варіанти: - \n\t \'Схід/Захід сонця\' - автоматичний режим, що керується даними про положення сонця (типовий) - \n\t \'Денний\' - завжди використовується денний режим - \n\t \'Нічний\' - завжди використовується нічний режим - \n\t \'Датчик освітленості\' - вигляд мапи змінюється автоматично в залежності від датчика освітленості (при його наявності) у вашому пристрої - - Мапи і шари можна змінювати через \'\Меню\' → \'Шари мапи\'. - \n\nВ \'Джерела мап…\' можна вибрати попередньо завантажені векторі мапи (типово потрібні для навігації оффлайн), чи попередньо вказані (онлайнові чи кешовані) джерела квадратів мап (для використання потрібно увімкнути втулок \'Онлайн мапи\') або самостійно створені мапи (наприклад, за допомогою OsmAndMapCreator для ПК). - \n\nOsmAnd також підтримує джерела вказані користувачем. - + "Для локальних векторних мап можна змінювати вигляд залежно від часу доби: вдень (світлі), вночі (темні). Нічний режим безпечніший для використання водіями в темряві +\n\nДля зміни денного/нічного режимів натисніть \'Меню\' → \'Налаштування Мапи\' → \'Денний/нічний режим\' +\n\nМожливі варіанти: +\n\t \'Схід/Захід сонця\' - автоматичний режим, що керується даними про положення сонця (типовий) +\n\t \'Денний\' - завжди використовується денний режим +\n\t \'Нічний\' - завжди використовується нічний режим +\n\t \'Датчик освітленості\' - вигляд мапи змінюється автоматично в залежності від датчика освітленості (при його наявності) у вашому пристрої " + "Мапи і шари можна змінювати через \'Меню\' → \'Налаштування Мапи\'. +\n\nВ \'Джерела мап…\' можна вибрати попередньо завантажені векторі мапи (типово потрібні для навігації оффлайн), чи попередньо вказані (онлайнові чи кешовані) джерела квадратів мап (для використання потрібно увімкнути втулок \'Онлайн мапи\') або самостійно створені мапи (наприклад, за допомогою OsmAndMapCreator для ПК). +\n\nOsmAnd також підтримує джерела вказані користувачем. " Вулиця Номер будинку Зміни в 1.3: @@ -1492,9 +1447,8 @@ OsmAnd має відкриті сирці і активно розвиваєть Попереджати про обмеження швидкості Попереджати про камери фіксації швидкості Попереджати про перешкоди на шляху - Завантаження закінчено. - \n\t\n\tДля використання мап скористайтесь \'Меню\' → \'Мапа\' → \'Джерело мапи…\' → \'Оффлайн векторні мапи\'. - + "Завантаження закінчено. +\n\t\n\tДля використання мап скористайтесь \'Меню\' → \'Налаштування Мапи\' → \'Джерело мапи…\' → \'Оффлайн векторні мапи\'. " Мапа: Введіть OSM логін і пароль в налаштуваннях Очистити проміжні точки @@ -1584,12 +1538,11 @@ OsmAnd має відкриті сирці і активно розвиваєть Назва Визначити/змінити… Стилі мапи - OsmAnd підтримує показ локальних векторних мап різними стилями, відповідно до ваших потреб: - \n\nНа відміну від збалансованого \'типового\' стилю, в \'Меню\' → \'Налаштування екрану\' → \'Стилі мап\' оберіть для прикладу - \n\t* \'Туристичний стиль\', якій містить більш докладну інформацію для туристичних подорожей, включаючи оптимізацію для професійних водіїв (більша контрастність, більш помітні дороги), налаштування для гірських походів (шкала SAC), велосипедні маршрути, підтримку символів для пішого туризму й т.і. - \n\t* \'Висока контрастність доріг\' показує дороги дуже помітними кольорами для того щоб вони були помітні навіть у сонячний день чи дуже яскравому освітленні - \n\t* \'Зимові та гірськолижні\' відтворює зимовий вигляд (все порито снігом), а також показує основні гірськолижні спуски та підйомники (якщо завантажено мапу \'World ski\') - + "OsmAnd підтримує показ локальних векторних мап різними стилями, відповідно до ваших потреб: +\n\nНа відміну від збалансованого \'типового\' стилю, в \'Меню\' → \'Налаштування мапи\' → \'Стилі мап\' оберіть для прикладу +\n\t* \'Туристичний стиль\', якій містить більш докладну інформацію для туристичних подорожей, включаючи оптимізацію для професійних водіїв (більша контрастність, більш помітні дороги), налаштування для гірських походів (шкала SAC), велосипедні маршрути, підтримку символів для пішого туризму й т.і. +\n\t* \'Висока контрастність доріг\' показує дороги дуже помітними кольорами для того щоб вони були помітні навіть у сонячний день чи дуже яскравому освітленні +\n\t* \'Зимові та гірськолижні\' відтворює зимовий вигляд (все порито снігом), а також показує основні гірськолижні спуски та підйомники (якщо завантажено мапу \'World ski\') " основна мапа світу @@ -1965,4 +1918,63 @@ OsmAnd має відкриті сирці і активно розвиваєть Завжди питати Оберіть інтервал періодичності запису треку (вмикається через віджет запису GPX) Загальний інтервал запису + Додому + Показати мапу + Використовувати захищене з’єднання з сервером + Використовувати https + Додатково + Мапи + Шукати + Показати все + Координати + Маршрути трамваїв та поїздів + %1$s потрібен цей дозвіл, щоб вимкнути екран для економії енергії. + Увімкнути екран + Вмикати екран телефону під час наближення до повороту + Ніколи + Вибрати на мапі + Уникати дороги… + "Зміни в 1.9: * Оновлені стилі мап із зазначенням типу покриття доріг, маршрутів громадського транспорту та символів для пішого туризму * Пошук POI вздовж маршруту * Позначення доріг як непроїзних, в сеансі * Прості завантаження та оновлення мап * Візуальні та звукові сповіщення під час наближення до точки маршрути * Друк маршруту та інформації про повороти * Підтримка смуг рушу * Робота з Android Wear * Багато змін в інтерфейсі * Окреме збільшення для тексту на мапі * Спеціальні звукові повідомлення, якщо ви зійшли з маршруту * Авторизація на OsMo * Виправлення несумісностей з версією OsMo " + Маршрути поїздів + Маршрути трамваїів + Маршрутне таксі + Маршрути тролейбусів + Маршрути автобусів + Сховати + Маршрути + Деталі + Транспорт + Інші властивості мапи + Решта елементів + Рядок стану + Панель праворуч + Панель ліворуч + Показати + Налаштування Мапи + Поруч з + Пристрій не знайдено + Сервіс OsMo не доступний:\n- перевірте з’єднання;\n- перевірте налаштування;\n- перевірте наш Twitter: https://twitter.com/OsMomobi + Анонімний користувач не в змозі:\n- створювати групи;\n- синхронізувати грипу та пристрої з сервером;\n- керувати групами та пристроями в особистому кабінеті. + Анонімний користувач + Ви увійшли як %1$s + Допустиме перевищення швидкості + Оберіть допустиме значення перевищення швидкості, після якого ви почуєте попередження. + Назву закладки було змінено на %1$s, щоб мати можливість зберігати рядки зі смайликами в файл. + Друк маршруту + Перевірка вбудованої візуалізації + Розпочати роботу із вбудованою візуалізацією + Дублювання назви закладки + Назва закладки була змінена на %1$s, щоб уникнути дублікатів. + Використовувати вбудовану візуалізацію + Використовувати візуалізацію C++ замість Java + Встановлення розміру тексту на мапі. + Розмір тексту + Обмеження швидкості + Прикордонний контроль + Збирання плати за проїзд + Знак СТОП + Зниження швидкості + Фото-радар + Попередження на дорозі + Клацніть будь-який наявний елемент для перегляду додаткових відомостей, натисніть і утримуйте, щоб деактивувати або вилучити. Поточні дані на пристрої (%1$s вільно): From d9539c422f98697cfc44385abd37e289167952d6 Mon Sep 17 00:00:00 2001 From: Andriy Golovin Date: Fri, 28 Nov 2014 12:01:15 +0100 Subject: [PATCH 022/157] Translated using Weblate (Ukrainian) Currently translated at 100% (0 of 0 strings) Created new translation. --- OsmAnd/res/values-uk/phrases.xml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 OsmAnd/res/values-uk/phrases.xml diff --git a/OsmAnd/res/values-uk/phrases.xml b/OsmAnd/res/values-uk/phrases.xml new file mode 100644 index 0000000000..a6b3daec93 --- /dev/null +++ b/OsmAnd/res/values-uk/phrases.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file From 030c7112ea7801fe985f3541e10202224c9cb7ad Mon Sep 17 00:00:00 2001 From: Viktar Palstsiuk Date: Fri, 28 Nov 2014 11:20:02 +0100 Subject: [PATCH 023/157] Translated using Weblate (Belarusian) Currently translated at 100.0% (1568 of 1568 strings) --- OsmAnd/res/values-be/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-be/strings.xml b/OsmAnd/res/values-be/strings.xml index f4e3e7f64a..49e58ecd1f 100644 --- a/OsmAnd/res/values-be/strings.xml +++ b/OsmAnd/res/values-be/strings.xml @@ -1520,7 +1520,7 @@ OsmAnd мае адкрыты зыходны код і актыўна разві Пазьбягаць аўтамагістралі Абмежаваньне вагі Задайце вагу аўтамабіля для пракладаньня маршрутаў - Вы хочаце каб OsmAnd паспрабаваў скапіяваць свае зьвесткі ў новае месца? + Вы хочаце каб OsmAnd таксама скапіяваў свае зьвесткі ў новае месца? Капіраваньне файла (%s) у новае месца... Капіяваньне дадзеных OsmAnd у новае месца (%s) Капіяваньне дадзеных OsmAnd From bea933fd496b90b9bfebfbda24005d2da360015e Mon Sep 17 00:00:00 2001 From: jan madsen Date: Fri, 28 Nov 2014 11:31:48 +0100 Subject: [PATCH 024/157] Translated using Weblate (Danish) Currently translated at 100.0% (1568 of 1568 strings) --- OsmAnd/res/values-da/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-da/strings.xml b/OsmAnd/res/values-da/strings.xml index 922797997d..8342197de1 100644 --- a/OsmAnd/res/values-da/strings.xml +++ b/OsmAnd/res/values-da/strings.xml @@ -1455,7 +1455,7 @@ Indstillinger for ruteplanlægning Lastbil Beregn OsmAnd offline rute - OsmAnd kan forsøge at flytte data til ny destination . Vil du det?\n\nSkal OsmAnd forsøge at kopiere datafiler til den nye placering? + "Skal OsmAnd også kopiere datafiler til den nye placering?" Kopierer fil (%s) til den ny placering... Kopierer OsmAnd datafiler til ny destination (%s) Kopierer OsmAnd datafiler From 2154b3f2b74100fc8cbd1395cab3114c8688d225 Mon Sep 17 00:00:00 2001 From: Ldm Public Date: Fri, 28 Nov 2014 11:52:41 +0100 Subject: [PATCH 025/157] Translated using Weblate (French) Currently translated at 100.0% (1568 of 1568 strings) --- OsmAnd/res/values-fr/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-fr/strings.xml b/OsmAnd/res/values-fr/strings.xml index 52133e69bc..6570fe58ed 100644 --- a/OsmAnd/res/values-fr/strings.xml +++ b/OsmAnd/res/values-fr/strings.xml @@ -1466,7 +1466,7 @@ Afghanistan, Albanie, Algérie, Allemagne, Andorre, Angola, Anguilla, Antigua-et Paramètres d\'itinéraire Depuis Android 4.4 (KitKat), vous ne pouvez plus télécharger et mettre à jour les cartes dans le dossier (%s) utilisé jusqu\'à présent. Voulez-vous utiliser le nouveau dossier et y copier l\'ensemble des fichiers OsmAnd ? \n Note 1 : Les anciens fichiers seront conservés (mais vous pouvez les supprimer manuellement)\n Note 2 : En raison de ce nouveau dossier de stockage, il ne sera plus possible de partager des fichiers entre OsmAnd et OsmAnd+. - Souhaitez-vous qu\'OsmAnd copie les données vers la nouvelle destination ? + Souhaitez-vous qu\'OsmAnd copie aussi ses données vers la nouvelle destination ? Copie des fichiers (%s) vers la nouvelle destination... Copie des fichiers de données OsmAnd vers la nouvelle destination (%s) Copie des fichiers de données OsmAnd From f297dea7321482f902a826589293523814283a2d Mon Sep 17 00:00:00 2001 From: Jurijus Date: Fri, 28 Nov 2014 11:12:53 +0100 Subject: [PATCH 026/157] Translated using Weblate (Lithuanian) Currently translated at 100.0% (1568 of 1568 strings) --- OsmAnd/res/values-lt/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-lt/strings.xml b/OsmAnd/res/values-lt/strings.xml index ba4bc15764..d984f7daa1 100644 --- a/OsmAnd/res/values-lt/strings.xml +++ b/OsmAnd/res/values-lt/strings.xml @@ -1471,7 +1471,7 @@ Pradedant Android 4.4 versija jūs nebegalėsite parsisųsti ir atnaujinti žemėlapių ankstesnėse saugojimo vietose (%s). Ar norite pakeisti saugyklos vietą ir į ją nukopijuoti visus failus? \n Pastaba: Seni failai išliks kur buvę (galima bus ištrinti rankiniu būdu). \n Pastaba: dalintis tais pačiais failais tarp OsmAnd ir OsmAnd+ nebus galima. - OsmAnd gali pabandyti perkelti duomenis į naują saugyklą. Ar atlikti tai? + Ar norite, kad OsmAnd perkeltų duomenis ir į naują saugyklą? Kopijuojami failai (%/s) į naują saugojimo vietą... OsmAnd failai kopijuojami į naują vietą (%/s) Kopijuojami OsmAnd failai From 852871af3e831928e0cc2c1cf7a03ac1d1c31a85 Mon Sep 17 00:00:00 2001 From: Ldm Public Date: Fri, 28 Nov 2014 12:01:12 +0100 Subject: [PATCH 027/157] Translated using Weblate (French) Currently translated at 67.0% (390 of 582 strings) --- OsmAnd/res/values-fr/phrases.xml | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/OsmAnd/res/values-fr/phrases.xml b/OsmAnd/res/values-fr/phrases.xml index 823c4f4cce..bdd3caa329 100644 --- a/OsmAnd/res/values-fr/phrases.xml +++ b/OsmAnd/res/values-fr/phrases.xml @@ -385,4 +385,21 @@ Usine Épave Zoo - \ No newline at end of file +Salon de thé + Boutique d\'Art + Magasin de tapis + Boutique informatique + Équipement de plongée sous-marine + Magasin d\'accastillage + Pont + Feux tricolores + + Pneus + Arrêt de bus + Station de métro + Tunnel + Bureau d\'état civil + Douanes + Centre médical + Orthophoniste + From ee758dc0638fce1a6f9fdd174f8f5a7071496fa5 Mon Sep 17 00:00:00 2001 From: Ivan Vantu5z Date: Fri, 28 Nov 2014 11:19:04 +0100 Subject: [PATCH 028/157] Translated using Weblate (Russian) Currently translated at 93.1% (542 of 582 strings) --- OsmAnd/res/values-ru/phrases.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/OsmAnd/res/values-ru/phrases.xml b/OsmAnd/res/values-ru/phrases.xml index 7a2f2e5767..8ff939f3be 100644 --- a/OsmAnd/res/values-ru/phrases.xml +++ b/OsmAnd/res/values-ru/phrases.xml @@ -609,4 +609,10 @@ Палеонтологический сайт + Горный хребет + Ледник + Река + Ручей + Военная зона + Пирс From 40e66cf06007acfcec7f41997e60de175d9b025f Mon Sep 17 00:00:00 2001 From: Ldm Public Date: Fri, 28 Nov 2014 12:02:04 +0100 Subject: [PATCH 029/157] Translated using Weblate (French) Currently translated at 67.3% (392 of 582 strings) --- OsmAnd/res/values-fr/phrases.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/OsmAnd/res/values-fr/phrases.xml b/OsmAnd/res/values-fr/phrases.xml index bdd3caa329..c7b56d7d60 100644 --- a/OsmAnd/res/values-fr/phrases.xml +++ b/OsmAnd/res/values-fr/phrases.xml @@ -402,4 +402,6 @@ Douanes Centre médical Orthophoniste + Agence de publicité + Échecs From b2f8268ca8616fd23d430e68531d96f94c81a453 Mon Sep 17 00:00:00 2001 From: Massimiliano Caniparoli Date: Fri, 28 Nov 2014 12:05:19 +0100 Subject: [PATCH 030/157] Translated using Weblate (Italian) Currently translated at 0.1% (1 of 582 strings) --- OsmAnd/res/values-it/phrases.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-it/phrases.xml b/OsmAnd/res/values-it/phrases.xml index a6b3daec93..84518aa124 100644 --- a/OsmAnd/res/values-it/phrases.xml +++ b/OsmAnd/res/values-it/phrases.xml @@ -1,2 +1,3 @@ - - \ No newline at end of file + +Centro commerciale + From bec817cd274acd5db0601c7a7a5331f54c6279df Mon Sep 17 00:00:00 2001 From: Andriy Golovin Date: Fri, 28 Nov 2014 12:05:16 +0100 Subject: [PATCH 031/157] Translated using Weblate (Ukrainian) Currently translated at 0.5% (3 of 582 strings) --- OsmAnd/res/values-uk/phrases.xml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-uk/phrases.xml b/OsmAnd/res/values-uk/phrases.xml index a6b3daec93..c661a18939 100644 --- a/OsmAnd/res/values-uk/phrases.xml +++ b/OsmAnd/res/values-uk/phrases.xml @@ -1,2 +1,6 @@ - - \ No newline at end of file + +Палеонтологічний місце + + Булочна + Спиртні напої + From 42f9971f1329fe98c2bdad6f3117b3e97ccb8ffa Mon Sep 17 00:00:00 2001 From: elPresidento Date: Fri, 28 Nov 2014 13:22:07 +0100 Subject: [PATCH 032/157] Translated using Weblate (Czech) Currently translated at 100.0% (1568 of 1568 strings) --- OsmAnd/res/values-cs/strings.xml | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/OsmAnd/res/values-cs/strings.xml b/OsmAnd/res/values-cs/strings.xml index cb585696c5..0d96cc4e51 100644 --- a/OsmAnd/res/values-cs/strings.xml +++ b/OsmAnd/res/values-cs/strings.xml @@ -1381,9 +1381,8 @@ s často kladenými otázkami. Vyhnout se dálnicím Hmotnostní limit Zadejte hmotnost vozidla, která musí být povolená na cestách - Od verze KitKat není možné stahovat a aktualizovat mapy v předchozím úložišti (%s). Chcete ho změnit na vhodné nové a zkopírovat do něj všechny soubory. - \n Poznámka: původní soubory zůstanou nedotčeny. - \n Poznámka: nebude možné sdílet soubory mezi OsmAnd a OsmAnd+. + Od verze Androidu 4.4 (KitKat) není možné stahovat a aktualizovat mapy v předchozím úložišti (%s). Chcete ho změnit na vhodné nové úložiště a zkopírovat do něj všechny soubory?\n Poznámka 1: Původní soubory zůstanou nedotčeny a mohou být smazány ručně. +\n Poznámka 2: V novém úložišti nebude možné sdílet soubory mezi OsmAnd a OsmAnd+. OsmAnd může zkusit přesunout data do nového cíle. Souhlasíte? Kopírování souboru (%s) do nového umístění... Kopírování souborů OsmAnd do nového umístění (%s) @@ -1774,4 +1773,12 @@ s často kladenými otázkami. %1$s potřebuje tato oprávnění pro vypnutí obrazovky při režimu šetření energie. Nikdy Pokročilé + Domov + ZOBRAZIT MAPU + Použít zabezpečené spojení se serverem + Použít HTTPS + Mapy + Hledat + ZOBRAZIT VŠE + Souřadnice From 9c60280b607898d7be5e16932cf4c3fd3b6ac336 Mon Sep 17 00:00:00 2001 From: Denis Date: Fri, 28 Nov 2014 14:57:05 +0200 Subject: [PATCH 033/157] Added loading indicators and fixed rare bug with rotation --- OsmAnd/res/layout/dash_favorites_fragment.xml | 1 + OsmAnd/res/layout/dash_map_fragment.xml | 29 +++++++++++----- OsmAnd/res/layout/dash_updates_fragment.xml | 1 + .../plus/activities/DashboardActivity.java | 2 +- .../plus/dashboard/DashUpdatesFragment.java | 33 ++++++++++--------- 5 files changed, 41 insertions(+), 25 deletions(-) diff --git a/OsmAnd/res/layout/dash_favorites_fragment.xml b/OsmAnd/res/layout/dash_favorites_fragment.xml index 1cf9e25484..7bd3f5c4c9 100644 --- a/OsmAnd/res/layout/dash_favorites_fragment.xml +++ b/OsmAnd/res/layout/dash_favorites_fragment.xml @@ -3,6 +3,7 @@ diff --git a/OsmAnd/res/layout/dash_map_fragment.xml b/OsmAnd/res/layout/dash_map_fragment.xml index a140aee42b..898b274829 100644 --- a/OsmAnd/res/layout/dash_map_fragment.xml +++ b/OsmAnd/res/layout/dash_map_fragment.xml @@ -17,13 +17,24 @@ style="@style/DashboardGeneralButton"/> - + + + + + + \ No newline at end of file diff --git a/OsmAnd/res/layout/dash_updates_fragment.xml b/OsmAnd/res/layout/dash_updates_fragment.xml index f0e6623b1c..6680c3b211 100644 --- a/OsmAnd/res/layout/dash_updates_fragment.xml +++ b/OsmAnd/res/layout/dash_updates_fragment.xml @@ -25,6 +25,7 @@ android:textColor="@color/dashboard_blue" android:layout_height="wrap_content"/> list) { @@ -74,7 +74,7 @@ public class DashUpdatesFragment extends DashBaseFragment { baseNames.clear(); downloadButtons.clear(); mainView.findViewById(R.id.main_progress).setVisibility(View.GONE); - ((TextView)mainView.findViewById(R.id.update_count)).setText(String.valueOf(list.size())); + ((TextView) mainView.findViewById(R.id.update_count)).setText(String.valueOf(list.size())); if (list.size() < 1) { return; } @@ -101,10 +101,10 @@ public class DashUpdatesFragment extends DashBaseFragment { public void onClick(View view) { getDownloadActivity().startDownload(item); currentProgress = progressBar; - cancelButton = (ImageButton)view; + cancelButton = (ImageButton) view; } }); - downloadButtons.add((ImageButton)downloadButton); + downloadButtons.add((ImageButton) downloadButton); baseNames.add(item.getBasename()); progressBars.add(progressBar); updates.addView(view); @@ -112,24 +112,24 @@ public class DashUpdatesFragment extends DashBaseFragment { updateProgress(BaseDownloadActivity.downloadListIndexThread.getCurrentRunningTask(), false); } - private BaseDownloadActivity getDownloadActivity(){ - return (BaseDownloadActivity)getActivity(); + private BaseDownloadActivity getDownloadActivity() { + return (BaseDownloadActivity) getActivity(); } public void updateProgress(BasicProgressAsyncTask basicProgressAsyncTask, boolean updateOnlyProgress) { - if (basicProgressAsyncTask == null){ + if (basicProgressAsyncTask == null) { return; } //needed when rotation is performed and progress can be null - if (currentProgress == null){ + if (currentProgress == null) { getProgressIfPossible(basicProgressAsyncTask.getDescription()); - if (currentProgress == null){ + if (currentProgress == null) { return; } } - if(updateOnlyProgress){ - if(!basicProgressAsyncTask.isIndeterminate()){ + if (updateOnlyProgress) { + if (!basicProgressAsyncTask.isIndeterminate()) { currentProgress.setProgress(basicProgressAsyncTask.getProgressPercentage()); } } else { @@ -147,7 +147,7 @@ public class DashUpdatesFragment extends DashBaseFragment { }); boolean intermediate = basicProgressAsyncTask.isIndeterminate(); currentProgress.setVisibility(intermediate ? View.GONE : View.VISIBLE); - getView().findViewById(R.id.main_progress).setVisibility(intermediate ? View.VISIBLE : View.GONE); + //getView().findViewById(R.id.main_progress).setVisibility(intermediate ? View.VISIBLE : View.GONE); if (!intermediate) { currentProgress.setProgress(basicProgressAsyncTask.getProgressPercentage()); } @@ -155,8 +155,11 @@ public class DashUpdatesFragment extends DashBaseFragment { } private void getProgressIfPossible(String message) { - for (int i =0; i Date: Fri, 28 Nov 2014 12:08:04 +0100 Subject: [PATCH 034/157] Translated using Weblate (French) Currently translated at 67.6% (394 of 582 strings) --- OsmAnd/res/values-fr/phrases.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/OsmAnd/res/values-fr/phrases.xml b/OsmAnd/res/values-fr/phrases.xml index c7b56d7d60..5cecb8d683 100644 --- a/OsmAnd/res/values-fr/phrases.xml +++ b/OsmAnd/res/values-fr/phrases.xml @@ -404,4 +404,7 @@ Orthophoniste Agence de publicité Échecs + Site paléontologique + + Commerce à la ferme From 0b6a0f09ded7ed1559249b68a19b96ad4075f665 Mon Sep 17 00:00:00 2001 From: Aleksei Polkhirev Date: Fri, 28 Nov 2014 13:27:24 +0100 Subject: [PATCH 035/157] Translated using Weblate (Russian) Currently translated at 99.8% (1566 of 1568 strings) --- OsmAnd/res/values-ru/strings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/OsmAnd/res/values-ru/strings.xml b/OsmAnd/res/values-ru/strings.xml index 8a52dc359c..de3e4d8843 100644 --- a/OsmAnd/res/values-ru/strings.xml +++ b/OsmAnd/res/values-ru/strings.xml @@ -1820,4 +1820,6 @@ Расширенные Карты Координаты + Дом + Поиск From 2f0dc203241f2ed0428e590541f58db919a7b060 Mon Sep 17 00:00:00 2001 From: jan madsen Date: Fri, 28 Nov 2014 13:25:30 +0100 Subject: [PATCH 036/157] Translated using Weblate (Danish) Currently translated at 100.0% (582 of 582 strings) --- OsmAnd/res/values-da/phrases.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-da/phrases.xml b/OsmAnd/res/values-da/phrases.xml index 3a94245413..cfeae9d0a0 100644 --- a/OsmAnd/res/values-da/phrases.xml +++ b/OsmAnd/res/values-da/phrases.xml @@ -118,7 +118,7 @@ Rumlestriber Trafikdæmpning, bord Indsnævring - Trafiksignal + Trafiklys Autoværksted Dækservice From 0160a20825e00011db0daafd8f6c6be63c378029 Mon Sep 17 00:00:00 2001 From: Massimiliano Caniparoli Date: Fri, 28 Nov 2014 12:07:40 +0100 Subject: [PATCH 037/157] Translated using Weblate (Italian) Currently translated at 1.0% (6 of 582 strings) --- OsmAnd/res/values-it/phrases.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/OsmAnd/res/values-it/phrases.xml b/OsmAnd/res/values-it/phrases.xml index 84518aa124..cedc0ae1dd 100644 --- a/OsmAnd/res/values-it/phrases.xml +++ b/OsmAnd/res/values-it/phrases.xml @@ -1,3 +1,9 @@ Centro commerciale + Pescheria + Supermercato + Negozio di biciclette + Distributore automatico + + Libreria From 47d0661afab12071ff5ab095521b5d2bd6b239f5 Mon Sep 17 00:00:00 2001 From: Andriy Golovin Date: Fri, 28 Nov 2014 12:42:24 +0100 Subject: [PATCH 038/157] Translated using Weblate (Ukrainian) Currently translated at 18.7% (109 of 582 strings) --- OsmAnd/res/values-uk/phrases.xml | 109 +++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) diff --git a/OsmAnd/res/values-uk/phrases.xml b/OsmAnd/res/values-uk/phrases.xml index c661a18939..2191d62139 100644 --- a/OsmAnd/res/values-uk/phrases.xml +++ b/OsmAnd/res/values-uk/phrases.xml @@ -3,4 +3,113 @@ Булочна Спиртні напої + Магазин + Торговельний центр + Напої + М’ясо + Делікатеси + Продукти з села + Овочі, фрукти + Морепродукти + Кондитерські вироби + Кафе-морозиво + Супермаркет + Чай + Молочний магазин + Торговий автомат + + Книжковий магазин + Веломагазин + Магазин аніме + Антикваріат + Витвори мистетства + Товари для дітей + Сумки, валізи + Все для ванної кімнати + Все для спальні + Бутік + Килими + Аптека + Магазин одягу + Дитячий одяг + Магазин взуття + Комп’ютерний магазин + Копіювальні послуги, полігрфафія + Салон штор + Тканини + Постільна білизна + Спорядження для пірнання + Інструменти та будматеріали + Секс-шоп + Рибальські снасті + Квітковий магазин + Рамки, багет + Меблі + Сад та город + Зріджений газ + Магазин + Подарунки та сувеніри + Вікна, скло + Будівельний магазин + Слухові апарати + Трави + HiFi апаратура + Господарські товари + Мисливське спорядження + Внутрішнє оздоблення + Ювелірний магазин + Кіоск + Кухонні приналежності + Мобільні телефони + Мотоцикли + Музичні інструменти + Газети та журнали + Окуліст + Органічні продукти харчування + Товари для активного відпочинку + Фарби + Зоомагазин + Радіодеталі + Секонд-хенд + Яхти, запчастини, оснащення + Спорттовари + Канцтовари + Посуд + Продаж квитків + Тютюн + Іграшки + Факторія + Пилососи + Універсальний магазин + Відео-прокат + Жалюзі, віконниці, маркізи + Универмаг + Електороніка + Автосалон + Автозапчастини + Квадроцикли + Косметика + Ринок + Галантерея + + Міліція/Поліція + Пожежна частиниа + Аварійний телефон + Пожежний гідрант + Вогнегасник + Заслонка + Пожежний рукав + Пожежний ставок + Ящик з піском + Станція швидкої медичної допомоги + Санепідемстанція + Місце отримання невідкладної допомоги + + Брід + Перевал + Ворота + Міська стіна + Шлагбаум + Збирання плати за проїзд + Прикордонний контроль From 7edae44ddcc194ed5d61a1283ae739fe7aabb21f Mon Sep 17 00:00:00 2001 From: Ldm Public Date: Fri, 28 Nov 2014 14:22:04 +0100 Subject: [PATCH 039/157] Translated using Weblate (French) Currently translated at 67.6% (394 of 582 strings) --- OsmAnd/res/values-fr/phrases.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-fr/phrases.xml b/OsmAnd/res/values-fr/phrases.xml index 5cecb8d683..797bf3ba78 100644 --- a/OsmAnd/res/values-fr/phrases.xml +++ b/OsmAnd/res/values-fr/phrases.xml @@ -406,5 +406,5 @@ Échecs Site paléontologique - Commerce à la ferme + Vente à la ferme From 9775faeb487593f56f2c9fd344d89d1dadfa1c63 Mon Sep 17 00:00:00 2001 From: User99gmxat Date: Fri, 28 Nov 2014 15:21:12 +0100 Subject: [PATCH 040/157] Update bidforfix.xml --- OsmAnd/res/values-de/bidforfix.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-de/bidforfix.xml b/OsmAnd/res/values-de/bidforfix.xml index fe70ecec4a..499b81b491 100644 --- a/OsmAnd/res/values-de/bidforfix.xml +++ b/OsmAnd/res/values-de/bidforfix.xml @@ -2,5 +2,5 @@ Lädt gerade %1$d Unterstützer - bereits gespendet: %d%% + Bereits gespendet: %d%% From 49eb8b26fc61830bb35f92e0e237288c571459be Mon Sep 17 00:00:00 2001 From: User99gmxat Date: Fri, 28 Nov 2014 15:23:47 +0100 Subject: [PATCH 041/157] Update phrases.xml --- OsmAnd/res/values-de/phrases.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-de/phrases.xml b/OsmAnd/res/values-de/phrases.xml index 6010f5f353..7ba393a2d9 100644 --- a/OsmAnd/res/values-de/phrases.xml +++ b/OsmAnd/res/values-de/phrases.xml @@ -18,7 +18,7 @@ Krankenhaus Jugendherberge Hotel - Historisches bergwerk + Historisches Bergwerk Kloster Motel Monument From d0077aa935266611646c683e1ead4c8e976b60f7 Mon Sep 17 00:00:00 2001 From: User99gmxat Date: Fri, 28 Nov 2014 15:49:17 +0100 Subject: [PATCH 042/157] Update strings.xml --- OsmAnd/res/values-de/strings.xml | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/OsmAnd/res/values-de/strings.xml b/OsmAnd/res/values-de/strings.xml index 38f205f302..8145b74585 100644 --- a/OsmAnd/res/values-de/strings.xml +++ b/OsmAnd/res/values-de/strings.xml @@ -1,4 +1,4 @@ - + Geschwindigkeitsbegrenzung Grenzkontrolle @@ -999,7 +999,7 @@ Gesamtentfernung: %1$s\nReisezeit: %2$d h %3$d min Online- oder Offline-Dienst zur Routenberechnung wählen Navigationsdienst - Auf den Daten-Ordner auf der SD-Karte kann nicht zugegriffen werden + Auf den Daten-Ordner auf der SD-Karte kann nicht zugegriffen werden! Herunterladen {0} - {1}? Offline Daten für {0} existieren schon ({1}). Wollen Sie die überschreiben ({2})? Adresse @@ -1535,7 +1535,7 @@ Autobahnen vermeiden Gewichtsbeschränkung Angabe eines Fahrzeuggewichts für die Zulässigkeit Route - "Seit Android 4.4 (KitKat) können neue Karten-Downloads nicht mehr am Speicherort früherer Android-Versionen gespeichert werden (%s). Jetzt den zulässigen Speicherort wählen und alle OsmAnd Dateien dorthin kopieren? + "Seit Android 4.4 (KitKat) können neue Karten-Downloads nicht mehr am Speicherort früherer Android-Versionen gespeichert werden (%s). Jetzt den zulässigen Speicherort wählen und alle OsmAnd-Dateien dorthin kopieren? \n Hinweis 1: Die ursprünglichen Dateien bleiben hiervon unberührt, können aber nachfolgend manuell gelöscht werden. \n Hinweis 2: Die Dateien können dann nicht mehr von OsmAnd und OsmAnd+ gemeinsam genutzt werden." Soll Osmand auch die Dateien an den neuen Speicherort verschieben? @@ -2014,6 +2014,12 @@ Afghanistan, Ägypten, Albanien, Algerien, Andorra, Angola, Anguilla, Antigua an Ausblenden %1$s benötigt diese Berechtigung, um den Bildschirm auszuschalten (Energiesparfunktion). Erweitert - Sichere Verbindung zum Server - Nutze https - + Start + Sichere Server-Verbindung verwenden + Https nutzen + Karten + Suchen nach + KARTE ZEIGEN + ALLES ZEIGEN + Koordinaten + From c899a0c60fa1d1a2509b71456b5d746f4201a163 Mon Sep 17 00:00:00 2001 From: Alexey Pelykh Date: Fri, 28 Nov 2014 17:10:05 +0200 Subject: [PATCH 043/157] Use AtlasMapRendererView --- OsmAnd/assets/help/style.css | 0 OsmAnd/res/layout/atlas_map_renderer_view.xml | 6 + OsmAnd/res/layout/gl_surface.xml | 7 - OsmAnd/res/layout/main.xml | 6 +- .../core/android/MapRendererContext.java | 477 ++++++++++++++++++ .../net/osmand/plus/OsmandApplication.java | 4 +- .../osmand/plus/activities/MapActivity.java | 28 +- .../osmand/plus/render/MapVectorLayer.java | 3 +- .../osmand/plus/views/OsmandMapTileView.java | 12 +- .../views/corenative/NativeCoreContext.java | 93 ++++ .../views/corenative/NativeQtLibrary.java | 329 ------------ .../plus/views/corenative/NativeRenderer.java | 48 -- 12 files changed, 606 insertions(+), 407 deletions(-) mode change 100644 => 100755 OsmAnd/assets/help/style.css create mode 100644 OsmAnd/res/layout/atlas_map_renderer_view.xml delete mode 100644 OsmAnd/res/layout/gl_surface.xml create mode 100644 OsmAnd/src/net/osmand/core/android/MapRendererContext.java create mode 100644 OsmAnd/src/net/osmand/plus/views/corenative/NativeCoreContext.java delete mode 100644 OsmAnd/src/net/osmand/plus/views/corenative/NativeQtLibrary.java delete mode 100644 OsmAnd/src/net/osmand/plus/views/corenative/NativeRenderer.java diff --git a/OsmAnd/assets/help/style.css b/OsmAnd/assets/help/style.css old mode 100644 new mode 100755 diff --git a/OsmAnd/res/layout/atlas_map_renderer_view.xml b/OsmAnd/res/layout/atlas_map_renderer_view.xml new file mode 100644 index 0000000000..49aad8f57c --- /dev/null +++ b/OsmAnd/res/layout/atlas_map_renderer_view.xml @@ -0,0 +1,6 @@ + + diff --git a/OsmAnd/res/layout/gl_surface.xml b/OsmAnd/res/layout/gl_surface.xml deleted file mode 100644 index d4a823c22a..0000000000 --- a/OsmAnd/res/layout/gl_surface.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - \ No newline at end of file diff --git a/OsmAnd/res/layout/main.xml b/OsmAnd/res/layout/main.xml index fe649dba0e..26f704d15d 100644 --- a/OsmAnd/res/layout/main.xml +++ b/OsmAnd/res/layout/main.xml @@ -12,9 +12,9 @@ android:orientation="vertical"> diff --git a/OsmAnd/src/net/osmand/core/android/MapRendererContext.java b/OsmAnd/src/net/osmand/core/android/MapRendererContext.java new file mode 100644 index 0000000000..9719e523f6 --- /dev/null +++ b/OsmAnd/src/net/osmand/core/android/MapRendererContext.java @@ -0,0 +1,477 @@ +package net.osmand.core.android; + +import java.util.Collections; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +import net.osmand.core.jni.IMapTiledSymbolsProvider; +import net.osmand.core.jni.IObfsCollection; +import net.osmand.core.jni.IRasterMapLayerProvider; +import net.osmand.core.jni.MapObjectsSymbolsProvider; +import net.osmand.core.jni.MapPresentationEnvironment; +import net.osmand.core.jni.MapPrimitivesProvider; +import net.osmand.core.jni.MapPrimitiviser; +import net.osmand.core.jni.MapRasterLayerProvider_Software; +import net.osmand.core.jni.ObfMapObjectsProvider; +import net.osmand.core.jni.QStringStringHash; +import net.osmand.core.jni.MapPresentationEnvironment.LanguagePreference; +import net.osmand.core.jni.ResolvedMapStyle; + +/** + * Context container and utility class for MapRendererView and derivatives. + * + * @author Alexey Pelykh + * + */ +public class MapRendererContext { + + public MapRendererContext() { + } + + public MapRendererContext(MapRendererView mapRendererView) { + _mapRendererView = mapRendererView; + } + + /** + * Synchronisation object used to perform state changes atomically + */ + private final Object _syncObject = new Object(); + + /** + * Reference to map renderer view that is currently managed by this + * context + */ + private MapRendererView _mapRendererView; + + /** + * Get currently bound map renderer view + * @return Reference to MapRendererView + */ + public MapRendererView getMapRendererView() { + synchronized (_syncObject) { + return _mapRendererView; + } + } + + /** + * Bounds specified map renderer view to this context + * @param mapRendererView Reference to MapRendererView + */ + public void setMapRendererView(MapRendererView mapRendererView) { + synchronized (_syncObject) { + boolean update = (_mapRendererView != mapRendererView); + if (!update) + return; + + _mapRendererView = mapRendererView; + if (_mapRendererView != null) + apply(); + } + } + + /** + * Display density factor + */ + private float _displayDensityFactor = 1; + + /** + * Reference tile size on screen in pixels + */ + private float _referenceTileSize = 256; + + /** + * Raster tile size in texels + */ + private int _rasterTileSize = 256; + + /** + * Get current display density factor + * @return Display density factor + */ + public float getDisplayDensityFactor() { + synchronized (_syncObject) { + return _displayDensityFactor; + } + } + + /** + * Set display density factor and update context (if needed) + * @param displayDensityFactor New display density factor + */ + public void setDisplayDensityFactor(float displayDensityFactor) { + synchronized (_syncObject) { + boolean update = (_displayDensityFactor != displayDensityFactor); + if (!update) + return; + + _displayDensityFactor = displayDensityFactor; + _referenceTileSize = 256.0f * _displayDensityFactor; + _rasterTileSize = Integer.highestOneBit((int)_referenceTileSize - 1) * 2; + + if (_mapRendererView instanceof AtlasMapRendererView) + ((AtlasMapRendererView)_mapRendererView).setReferenceTileSizeOnScreenInPixels(_referenceTileSize); + if (_mapPresentationEnvironment != null) + updateMapPresentationEnvironment(); + } + } + + /** + * Reference to resolved map style (if used) + */ + private ResolvedMapStyle _mapStyle; + + /** + * Get current map style + * @return Reference to current map style + */ + public ResolvedMapStyle getMapStyle() { + synchronized (_syncObject) { + return _mapStyle; + } + } + + /** + * Set map style and update context (if needed) + * @param mapStyle + */ + public void setMapStyle(ResolvedMapStyle mapStyle) { + synchronized (_syncObject) { + boolean update = (_mapStyle != mapStyle); + if (!update) + return; + + _mapStyle = mapStyle; + if (_mapPresentationEnvironment != null) + updateMapPresentationEnvironment(); + } + } + + /** + * Reference to map style settings (if present) + */ + private Map _mapStyleSettings; + + /** + * Get current map style settings + * @return + */ + public Map getMapStyleSettings() { + synchronized (_syncObject) { + if (_mapStyleSettings == null) + return null; + return Collections.unmodifiableMap(_mapStyleSettings); + } + } + + /** + * Set map style settings and update context (if needed) + * @param mapStyleSettings Map style settings + */ + public void setMapStyleSettings(Map mapStyleSettings) { + synchronized (_syncObject) { + boolean update = !_mapStyleSettings.equals(mapStyleSettings); + if (!update) + return; + + _mapStyleSettings = new HashMap(mapStyleSettings); + if (_mapPresentationEnvironment != null) + updateMapPresentationEnvironment(); + } + } + + /** + * Locale language + */ + private String _localeLanguageId = "en"; + + /** + * Get current locale language + * @return Locale language identifier + */ + public String getLocaleLanguageId() { + synchronized (_syncObject) { + return _localeLanguageId; + } + } + + /** + * Set current locale language and update context (if needed) + * @param localeLanguageId Locale language identifier + */ + public void setLocaleLanguageId(String localeLanguageId) { + synchronized (_syncObject) { + boolean update = !_localeLanguageId.equals(localeLanguageId); + if (!update) + return; + + _localeLanguageId = localeLanguageId; + if (_mapPresentationEnvironment != null) + updateMapPresentationEnvironment(); + } + } + + /** + * Language preference + */ + private LanguagePreference _languagePreference = LanguagePreference.LocalizedAndNative; + + /** + * Get current language preference + * @return Language preference + */ + public LanguagePreference getLanguagePreference() { + synchronized (_syncObject) { + return _languagePreference; + } + } + + /** + * Set language preference and update context (if needed) + * @param languagePreference + */ + public void setLanguagePreference(LanguagePreference languagePreference) { + synchronized (_syncObject) { + boolean update = (_languagePreference != languagePreference); + if (!update) + return; + + _languagePreference = languagePreference; + if (_mapPresentationEnvironment != null) + updateMapPresentationEnvironment(); + } + } + + /** + * Reference to OBFs collection (if present) + */ + private IObfsCollection _obfsCollection; + + /** + * Get current OBFs collection + * @return OBFs collection + */ + public IObfsCollection getObfsCollection() { + synchronized (_syncObject) { + return _obfsCollection; + } + } + + /** + * Set OBFs collection and update context (if needed) + * @param obfsCollection + */ + public void setObfsCollection(IObfsCollection obfsCollection) { + synchronized (_syncObject) { + boolean update = (_obfsCollection != obfsCollection); + if (!update) + return; + + _obfsCollection = obfsCollection; + if (_obfMapObjectsProvider != null) + updateObfMapObjectsProvider(); + } + } + + /** + * Reference to map presentation environment (if used) + */ + private MapPresentationEnvironment _mapPresentationEnvironment; + + /** + * Update map presentation environment and everything that depends on it + */ + private void updateMapPresentationEnvironment() { + // Create new map presentation environment + _mapPresentationEnvironment = new MapPresentationEnvironment( + _mapStyle, + _displayDensityFactor, + _localeLanguageId, + _languagePreference); + + // Apply map style settings + if (_mapStyleSettings != null) { + QStringStringHash convertedStyleSettings = new QStringStringHash(); + for (Iterator> itSetting = _mapStyleSettings + .entrySet().iterator(); itSetting.hasNext();) { + Map.Entry setting = itSetting.next(); + convertedStyleSettings.set(setting.getKey(), setting.getValue()); + } + _mapPresentationEnvironment.setSettings(convertedStyleSettings); + } + + // Update all dependencies + if (_mapPrimitiviser != null) + updateMapPrimitiviser(); + } + + /** + * Reference to map primitiviser (if used) + */ + private MapPrimitiviser _mapPrimitiviser; + + /** + * Update map primitiviser and everything that depends on it + */ + private void updateMapPrimitiviser() { + // Create new map primitiviser + _mapPrimitiviser = new MapPrimitiviser(_mapPresentationEnvironment); + + // Update all dependencies + if (_mapPrimitivesProvider != null) + updateMapPrimitivesProvider(); + } + + /** + * Reference to OBF map objects provider (if used) + */ + private ObfMapObjectsProvider _obfMapObjectsProvider; + + /** + * Update OBF map objects provider and everything that depends on it + */ + private void updateObfMapObjectsProvider() { + _obfMapObjectsProvider = new ObfMapObjectsProvider( + _obfsCollection); + + // Update all dependencies + if (_mapPrimitivesProvider != null) + updateMapPrimitivesProvider(); + } + + /** + * Reference to map primitives provider (if used) + */ + private MapPrimitivesProvider _mapPrimitivesProvider; + + /** + * Update map primitives provider and everything that depends on it + */ + private void updateMapPrimitivesProvider() { + // Create new map primitives provider + _mapPrimitivesProvider = new MapPrimitivesProvider( + _obfMapObjectsProvider, + _mapPrimitiviser, + _rasterTileSize); + + // Update all dependencies + if (_obfMapRasterLayerProvider != null) + updateObfMapRasterLayerProvider(); + if (_obfMapSymbolsProvider != null) + updateObfMapSymbolsProvider(); + } + + /** + * Reference to OBF map raster layer provider (if used) + */ + private IRasterMapLayerProvider _obfMapRasterLayerProvider; + + /** + * Index of OBF map raster layer in bound map renderer view (if set) + */ + private Integer _obfMapRasterLayer; + + /** + * Update OBF map raster layer provider and everything that depends on it + */ + private void updateObfMapRasterLayerProvider() { + // Create new OBF map raster layer provider + _obfMapRasterLayerProvider = new MapRasterLayerProvider_Software( + _mapPrimitivesProvider); + + // In case there's bound view and configured layer, perform setup + if(_mapRendererView != null && _obfMapRasterLayer != null) + _mapRendererView.setMapLayerProvider(_obfMapRasterLayer, _obfMapRasterLayerProvider); + } + + /** + * Reference to OBF map symbols provider (if used) + */ + private IMapTiledSymbolsProvider _obfMapSymbolsProvider; + + /** + * Update OBF map symbols provider and everything that depends on it + */ + private void updateObfMapSymbolsProvider() { + // If there's current provider and bound view, remove it + if (_obfMapSymbolsProvider != null && _mapRendererView != null) + _mapRendererView.removeSymbolsProvider(_obfMapSymbolsProvider); + + // Create new OBF map symbols provider + _obfMapSymbolsProvider = new MapObjectsSymbolsProvider( + _mapPrimitivesProvider, + _referenceTileSize); + + // If there's bound view, add new provider + if (_mapRendererView != null) + _mapRendererView.addSymbolsProvider(_obfMapSymbolsProvider); + } + + /** + * Apply current context to view + */ + private void apply() { + if (_mapRendererView instanceof AtlasMapRendererView) + ((AtlasMapRendererView)_mapRendererView).setReferenceTileSizeOnScreenInPixels(_referenceTileSize); + + // Layers + if (_obfMapRasterLayer != null && _obfMapRasterLayerProvider != null) + _mapRendererView.setMapLayerProvider(_obfMapRasterLayer, _obfMapRasterLayerProvider); + + // Symbols + if (_obfMapSymbolsProvider != null) + _mapRendererView.addSymbolsProvider(_obfMapSymbolsProvider); + } + + /** + * Setup OBF map on layer 0 with symbols + * @param obfsCollection OBFs collection + */ + public void setupObfMap(ResolvedMapStyle mapStyle, IObfsCollection obfsCollection) { + setupObfMap(mapStyle, obfsCollection, 0, true); + } + + /** + * Setup OBF map on specified layer with optional symbols + * @param obfsCollection OBFs collection + * @param layer Layer index + * @param withSymbols True if with symbols, false otherwise + */ + public void setupObfMap(ResolvedMapStyle mapStyle, + IObfsCollection obfsCollection, + int layer, + boolean withSymbols) { + synchronized (_syncObject) { + boolean update = false; + + if (_mapStyle != mapStyle) { + _mapStyle = mapStyle; + update = true; + } + + if (_obfsCollection != obfsCollection) { + _obfsCollection = obfsCollection; + update = true; + } + + if (_obfMapRasterLayer == null || _obfMapRasterLayer != layer) { + _obfMapRasterLayer = layer; + update = true; + } + + if (withSymbols != (_obfMapSymbolsProvider != null)) { + update = true; + } + + if (!update) + return; + + updateMapPresentationEnvironment(); + updateMapPrimitiviser(); + updateMapPrimitivesProvider(); + updateObfMapObjectsProvider(); + updateObfMapRasterLayerProvider(); + updateObfMapSymbolsProvider(); + } + } +} diff --git a/OsmAnd/src/net/osmand/plus/OsmandApplication.java b/OsmAnd/src/net/osmand/plus/OsmandApplication.java index a7e63613f8..d324db191b 100644 --- a/OsmAnd/src/net/osmand/plus/OsmandApplication.java +++ b/OsmAnd/src/net/osmand/plus/OsmandApplication.java @@ -33,7 +33,7 @@ import net.osmand.plus.render.RendererRegistry; import net.osmand.plus.resources.ResourceManager; import net.osmand.plus.routing.RoutingHelper; import net.osmand.plus.sherpafy.SherpafyCustomization; -import net.osmand.plus.views.corenative.NativeQtLibrary; +import net.osmand.plus.views.corenative.NativeCoreContext; import net.osmand.plus.voice.CommandPlayer; import net.osmand.plus.voice.CommandPlayerException; import net.osmand.plus.voice.CommandPlayerFactory; @@ -558,7 +558,7 @@ public class OsmandApplication extends Application { if (osmandSettings.USE_NATIVE_RENDER.get()) { if (!osmandSettings.CPP_RENDER_FAILED.get()) { osmandSettings.CPP_RENDER_FAILED.set(true); - boolean success = NativeQtLibrary.tryCatchInit(this); + boolean success = NativeCoreContext.tryCatchInit(this); if (success) { osmandSettings.CPP_RENDER_FAILED.set(false); } diff --git a/OsmAnd/src/net/osmand/plus/activities/MapActivity.java b/OsmAnd/src/net/osmand/plus/activities/MapActivity.java index 5b8ec70958..bc0efe82f1 100644 --- a/OsmAnd/src/net/osmand/plus/activities/MapActivity.java +++ b/OsmAnd/src/net/osmand/plus/activities/MapActivity.java @@ -15,6 +15,7 @@ import net.osmand.access.AccessibilityPlugin; import net.osmand.access.AccessibleActivity; import net.osmand.access.AccessibleToast; import net.osmand.access.MapAccessibilityActions; +import net.osmand.core.android.AtlasMapRendererView; import net.osmand.data.LatLon; import net.osmand.data.QuadPoint; import net.osmand.data.RotatedTileBox; @@ -46,7 +47,7 @@ import net.osmand.plus.views.OsmAndMapLayersView; import net.osmand.plus.views.OsmAndMapSurfaceView; import net.osmand.plus.views.OsmandMapLayer; import net.osmand.plus.views.OsmandMapTileView; -import net.osmand.plus.views.corenative.NativeQtLibrary; +import net.osmand.plus.views.corenative.NativeCoreContext; import net.osmand.render.RenderingRulesStorage; import net.osmand.util.Algorithms; import android.app.Dialog; @@ -91,7 +92,7 @@ public class MapActivity extends AccessibleActivity implements /** Called when the activity is first created. */ private OsmandMapTileView mapView; - private GLSurfaceView glSurfaceView; + private AtlasMapRendererView atlasMapRendererView; private MapActivityActions mapActions; private MapActivityLayers mapLayers; @@ -150,14 +151,16 @@ public class MapActivity extends AccessibleActivity implements app.checkApplicationIsBeingInitialized(this, startProgressDialog); parseLaunchIntentLocation(); - if(settings.USE_NATIVE_RENDER.get() && NativeQtLibrary.isInit()) { - ViewStub stub = (ViewStub) findViewById(R.id.glSurfaceStub); - glSurfaceView = (GLSurfaceView) stub.inflate(); + if(settings.USE_NATIVE_RENDER.get() && NativeCoreContext.isInit()) { + ViewStub stub = (ViewStub) findViewById(R.id.atlasMapRendererViewStub); + atlasMapRendererView = (AtlasMapRendererView) stub.inflate(); OsmAndMapLayersView ml = (OsmAndMapLayersView) findViewById(R.id.MapLayersView); ml.setVisibility(View.VISIBLE); - NativeQtLibrary.initView(glSurfaceView); + atlasMapRendererView.setAzimuth(0); + atlasMapRendererView.setElevationAngle(90); + NativeCoreContext.getMapRendererContext().setMapRendererView(atlasMapRendererView); mapView = ml.getMapView(); - mapView.setMapRender(NativeQtLibrary.getMapRenderer()); + mapView.setMapRender(atlasMapRendererView); } else { OsmAndMapSurfaceView surf = (OsmAndMapSurfaceView) findViewById(R.id.MapView); surf.setVisibility(View.VISIBLE); @@ -438,8 +441,8 @@ public class MapActivity extends AccessibleActivity implements OsmandPlugin.onMapActivityResume(this); mapView.refreshMap(true); - if(glSurfaceView != null) { - glSurfaceView.onResume(); + if(atlasMapRendererView != null) { + atlasMapRendererView.handleOnResume(); } } @@ -607,6 +610,9 @@ public class MapActivity extends AccessibleActivity implements mapViewTrackingUtilities.setMapView(null); cancelNotification(); app.getResourceManager().getMapTileDownloader().removeDownloaderCallback(mapView); + if(atlasMapRendererView != null) { + atlasMapRendererView.handleOnDestroy(); + } } private void cancelNotification() { @@ -653,8 +659,8 @@ public class MapActivity extends AccessibleActivity implements app.getResourceManager().interruptRendering(); app.getResourceManager().setBusyIndicator(null); OsmandPlugin.onMapActivityPause(this); - if(glSurfaceView != null) { - glSurfaceView.onPause(); + if(atlasMapRendererView != null) { + atlasMapRendererView.handleOnPause(); } } diff --git a/OsmAnd/src/net/osmand/plus/render/MapVectorLayer.java b/OsmAnd/src/net/osmand/plus/render/MapVectorLayer.java index 187251e86e..4a195a6b9f 100644 --- a/OsmAnd/src/net/osmand/plus/render/MapVectorLayer.java +++ b/OsmAnd/src/net/osmand/plus/render/MapVectorLayer.java @@ -1,5 +1,6 @@ package net.osmand.plus.render; +import net.osmand.core.android.MapRendererView; import net.osmand.core.jni.IMapRenderer; import net.osmand.core.jni.PointI; import net.osmand.data.QuadPointDouble; @@ -89,7 +90,7 @@ public class MapVectorLayer extends BaseMapLayer { tileLayer.drawTileMap(canvas, tilesRect); resourceManager.getRenderer().interruptLoadingMap(); } else { - final IMapRenderer mapRenderer = view.getMapRenderer(); + final MapRendererView mapRenderer = view.getMapRenderer(); if (mapRenderer != null) { // opengl renderer mapRenderer.setTarget(new PointI(tilesRect.getCenter31X(), tilesRect.getCenter31Y())); diff --git a/OsmAnd/src/net/osmand/plus/views/OsmandMapTileView.java b/OsmAnd/src/net/osmand/plus/views/OsmandMapTileView.java index 1198067212..92cbfdcafb 100644 --- a/OsmAnd/src/net/osmand/plus/views/OsmandMapTileView.java +++ b/OsmAnd/src/net/osmand/plus/views/OsmandMapTileView.java @@ -5,11 +5,11 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; - import net.osmand.PlatformUtil; import net.osmand.access.AccessibilityActionsProvider; import net.osmand.access.AccessibleToast; import net.osmand.access.MapExplorer; +import net.osmand.core.android.MapRendererView; import net.osmand.core.jni.IMapRenderer; import net.osmand.data.LatLon; import net.osmand.data.QuadPoint; @@ -27,9 +27,8 @@ import net.osmand.plus.helpers.TwoFingerTapDetector; import net.osmand.plus.views.MultiTouchSupport.MultiTouchZoomListener; import net.osmand.plus.views.OsmandMapLayer.DrawSettings; import net.osmand.util.MapUtils; - import org.apache.commons.logging.Log; - +import android.annotation.SuppressLint; import android.content.Context; import android.content.res.Resources; import android.graphics.Bitmap; @@ -146,7 +145,7 @@ public class OsmandMapTileView implements IMapDownloaderCallback { private DisplayMetrics dm; - private IMapRenderer mapRenderer; + private MapRendererView mapRenderer; private OsmandApplication application; @@ -514,6 +513,7 @@ public class OsmandMapTileView implements IMapDownloaderCallback { return additional.fps; } + @SuppressLint("WrongCall") public void drawOverMap(Canvas canvas, RotatedTileBox tileBox, DrawSettings drawSettings) { if(mapRenderer == null) { fillCanvas(canvas, drawSettings); @@ -736,11 +736,11 @@ public class OsmandMapTileView implements IMapDownloaderCallback { return true; } - public void setMapRender(IMapRenderer mapRenderer) { + public void setMapRender(MapRendererView mapRenderer) { this.mapRenderer = mapRenderer; } - public IMapRenderer getMapRenderer() { + public MapRendererView getMapRenderer() { return mapRenderer; } diff --git a/OsmAnd/src/net/osmand/plus/views/corenative/NativeCoreContext.java b/OsmAnd/src/net/osmand/plus/views/corenative/NativeCoreContext.java new file mode 100644 index 0000000000..775ec8fad1 --- /dev/null +++ b/OsmAnd/src/net/osmand/plus/views/corenative/NativeCoreContext.java @@ -0,0 +1,93 @@ +package net.osmand.plus.views.corenative; + +import java.io.File; + +import android.content.Context; +import android.util.DisplayMetrics; +import android.util.Log; +import android.view.WindowManager; +import net.osmand.core.android.CoreResourcesFromAndroidAssetsCustom; +import net.osmand.core.android.MapRendererContext; +import net.osmand.core.android.NativeCore; +import net.osmand.core.jni.Logger; +import net.osmand.core.jni.MapStylesCollection; +import net.osmand.core.jni.ObfsCollection; +import net.osmand.core.jni.QIODeviceLogSink; +import net.osmand.plus.OsmandApplication; + +/** + * Created by Denis on 01.10.2014. + */ +public class NativeCoreContext { + private static final String TAG = "NativeCoreContext"; + + private static boolean init; + + public static boolean isInit() { + return init; + } + + public static boolean tryCatchInit(OsmandApplication app) { + try { + init(app); + return true; + } catch(Throwable t) { + t.printStackTrace(); + Log.e(TAG, "Failed to initialize", t); + return false; + } + + } + + public static void init(OsmandApplication app) { + if (!init && NativeCore.isAvailable()) { + if (!NativeCore.isLoaded()) + NativeCore.load(CoreResourcesFromAndroidAssetsCustom.loadFromCurrentApplication(app)); + if (NativeCore.isLoaded()) { + + File directory = app.getAppPath(""); + Logger.get().addLogSink(QIODeviceLogSink.createFileLogSink( + directory.getAbsolutePath() + "osmandcore.log")); + + WindowManager mgr = (WindowManager)app.getSystemService(Context.WINDOW_SERVICE); + DisplayMetrics dm = new DisplayMetrics(); + mgr.getDefaultDisplay().getMetrics(dm); + + // Get device display density factor +// DisplayMetrics displayMetrics = new DisplayMetrics(); +// act.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); + DisplayMetrics displayMetrics = app.getResources().getDisplayMetrics(); + // TODO getSettings().getSettingsZoomScale() + Math.sqrt(Math.max(0, getDensity() - 1)) + float scaleCoefficient = displayMetrics.density; + if (Math.min(dm.widthPixels / (dm.density * 160), dm.heightPixels / (dm.density * 160)) > 2.5f) { + // large screen + scaleCoefficient *= 1.5f; + } + float displayDensityFactor = scaleCoefficient; + + _obfsCollection = new ObfsCollection(); + _obfsCollection.addDirectory(directory.getAbsolutePath(), false); + + _mapStylesCollection = new MapStylesCollection(); + + _mapRendererContext = new MapRendererContext(); + _mapRendererContext.setDisplayDensityFactor(displayDensityFactor); + _mapRendererContext.setupObfMap( + _mapStylesCollection.getResolvedStyleByName("default"), + _obfsCollection); + + init = true; + } + } + } + + private static MapStylesCollection _mapStylesCollection; + + private static ObfsCollection _obfsCollection; + + private static MapRendererContext _mapRendererContext; + + public static MapRendererContext getMapRendererContext() { + return _mapRendererContext; + } +} diff --git a/OsmAnd/src/net/osmand/plus/views/corenative/NativeQtLibrary.java b/OsmAnd/src/net/osmand/plus/views/corenative/NativeQtLibrary.java deleted file mode 100644 index 384e83d55b..0000000000 --- a/OsmAnd/src/net/osmand/plus/views/corenative/NativeQtLibrary.java +++ /dev/null @@ -1,329 +0,0 @@ -package net.osmand.plus.views.corenative; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import javax.microedition.khronos.egl.EGL10; -import javax.microedition.khronos.egl.EGLConfig; -import javax.microedition.khronos.egl.EGLContext; -import javax.microedition.khronos.egl.EGLDisplay; -import javax.microedition.khronos.egl.EGLSurface; - -import net.osmand.core.android.CoreResourcesFromAndroidAssetsCustom; -import net.osmand.core.jni.AtlasMapRendererConfiguration; -import net.osmand.core.jni.ObfMapObjectsProvider; -import net.osmand.core.jni.MapPrimitivesProvider; -import net.osmand.core.jni.MapRasterLayerProvider_Software; -import net.osmand.core.jni.MapObjectsSymbolsProvider; -import net.osmand.core.jni.IMapRenderer; -import net.osmand.core.jni.Logger; -import net.osmand.core.jni.MapPresentationEnvironment; -import net.osmand.core.jni.MapRendererClass; -import net.osmand.core.jni.MapRendererSetupOptions; -import net.osmand.core.jni.MapStylesCollection; -import net.osmand.core.jni.ObfsCollection; -import net.osmand.core.jni.OnlineRasterMapLayerProvider; -import net.osmand.core.jni.OnlineTileSources; -import net.osmand.core.jni.OsmAndCore; -import net.osmand.core.jni.MapPrimitiviser; -import net.osmand.core.jni.QIODeviceLogSink; -import net.osmand.core.jni.ResolvedMapStyle; -import net.osmand.plus.OsmandApplication; -import net.osmand.plus.render.NativeCppLibrary; -import android.content.Context; -import android.opengl.EGL14; -import android.opengl.GLSurfaceView; -import android.util.DisplayMetrics; -import android.util.Log; -import android.view.WindowManager; - -/** - * Created by Denis on 01.10.2014. - */ -public class NativeQtLibrary { - - private static boolean OFFLINE_MAP = true; - private static IMapRenderer mapRenderer; - public static final String NATIVE_TAG = "NativeRender"; - - private static List doNotGc = new ArrayList(); - private static boolean init; - - - private static T notGc(T obj){ - doNotGc.add(obj); - return obj; - } - - private static T notGcFor1Egl(T obj){ - doNotGc.add(obj); - return obj; - } - - public static void initView(GLSurfaceView glSurfaceView) { - System.out.println("Init GL View"); - //TODO:_glSurfaceView.setPreserveEGLContextOnPause(true); - glSurfaceView.setEGLContextClientVersion(2); - glSurfaceView.setEGLContextFactory(new EGLContextFactory(glSurfaceView)); - glSurfaceView.setRenderer(new NativeRenderer(mapRenderer)); - glSurfaceView.setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY); - mapRenderer.setAzimuth(0.0f); - mapRenderer.setElevationAngle(90); - } - - public static IMapRenderer getMapRenderer() { - return mapRenderer; - } - - public static boolean isInit() { - return init; - } - - public static boolean tryCatchInit(OsmandApplication app) { - try { - init(app); - return true; - } catch(Throwable t) { - t.printStackTrace(); - Log.e(NATIVE_TAG, "Failed to initialize"); - return false; - } - - } - - public static void init(OsmandApplication app) { - if (!init) { - loadLibraries(); - initRenderer(app); - init = true; - } - } - - private static void loadLibraries() { - NativeCppLibrary.loadLibrary("gnustl_shared"); - NativeCppLibrary.loadLibrary("Qt5Core"); - NativeCppLibrary.loadLibrary("Qt5Network"); - NativeCppLibrary.loadLibrary("Qt5Sql"); - NativeCppLibrary.loadLibrary("OsmAndCoreWithJNI"); - } - - private static void initRenderer(OsmandApplication app) { - WindowManager mgr = (WindowManager)app.getSystemService(Context.WINDOW_SERVICE); - DisplayMetrics dm = new DisplayMetrics(); - mgr.getDefaultDisplay().getMetrics(dm); - - // Get device display density factor -// DisplayMetrics displayMetrics = new DisplayMetrics(); -// act.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); - DisplayMetrics displayMetrics = app.getResources().getDisplayMetrics(); - // TODO getSettings().getSettingsZoomScale() + Math.sqrt(Math.max(0, getDensity() - 1)) - float scaleCoefficient = displayMetrics.density; - if (Math.min(dm.widthPixels / (dm.density * 160), dm.heightPixels / (dm.density * 160)) > 2.5f) { - // large screen - scaleCoefficient *= 1.5f; - } - float displayDensityFactor = scaleCoefficient; - int referenceTileSize = (int)(256 * displayDensityFactor); - int rasterTileSize = Integer.highestOneBit(referenceTileSize - 1) * 2; - Log.i(NATIVE_TAG, "displayDensityFactor = " + displayDensityFactor + - " referenceTileSize = " + referenceTileSize + " rasterTileSize = " + rasterTileSize); - Log.i(NATIVE_TAG, "Initializing core..."); - CoreResourcesFromAndroidAssetsCustom coreResources = notGc(CoreResourcesFromAndroidAssetsCustom.loadFromCurrentApplication(app)); - OsmAndCore.InitializeCore(coreResources.instantiateProxy()); - - // initialize log - File directory = app.getAppPath(""); - QIODeviceLogSink fileLogSink = - notGc(QIODeviceLogSink.createFileLogSink(directory.getAbsolutePath() + "osmandcore.log")); - Logger.get().addLogSink(fileLogSink); - - Log.i(NATIVE_TAG, "Going to resolve default embedded style..."); - MapStylesCollection mapStylesCollection = notGc(new MapStylesCollection()); - ResolvedMapStyle mapStyle = mapStylesCollection.getResolvedStyleByName("default"); - if (mapStyle == null) { - throw new IllegalStateException("Failed to resolve style 'default'"); - - } - Log.i(NATIVE_TAG, "Will load OBFs from " + directory.getAbsolutePath()); - ObfsCollection obfsCollection = notGc(new ObfsCollection()); - obfsCollection.addDirectory(directory.getAbsolutePath(), false); - - Log.i(NATIVE_TAG, "Going to prepare all resources for renderer"); - Log.i(NATIVE_TAG, "Going to create renderer"); - mapRenderer = OsmAndCore.createMapRenderer(MapRendererClass.AtlasMapRenderer_OpenGLES2); - if (mapRenderer == null) { - throw new IllegalArgumentException("Failed to create map renderer 'AtlasMapRenderer_OpenGLES2'"); - } - - AtlasMapRendererConfiguration atlasRendererConfiguration = AtlasMapRendererConfiguration.Casts.upcastFrom(mapRenderer.getConfiguration()); - atlasRendererConfiguration.setReferenceTileSizeOnScreenInPixels(referenceTileSize); - mapRenderer.setConfiguration(AtlasMapRendererConfiguration.Casts.downcastTo_MapRendererConfiguration(atlasRendererConfiguration)); - - if (OFFLINE_MAP){ - MapPresentationEnvironment presentation = notGc(new MapPresentationEnvironment(mapStyle, displayDensityFactor, "en")); - //TODO: here should be current locale - //mapPresentationEnvironment->setSettings(configuration.styleSettings); - MapPrimitivesProvider mapPrimitivesProvider = notGc(new MapPrimitivesProvider( - notGc(new ObfMapObjectsProvider(obfsCollection)), - notGc(new MapPrimitiviser(presentation)), rasterTileSize)); - MapRasterLayerProvider_Software mapRasterLayerProvider = notGc(new MapRasterLayerProvider_Software( - mapPrimitivesProvider)); - mapRenderer.setMapLayerProvider(0, mapRasterLayerProvider); - MapObjectsSymbolsProvider mapObjectsSymbolsProvider = notGc(new MapObjectsSymbolsProvider( - mapPrimitivesProvider, rasterTileSize)); - mapRenderer.addSymbolsProvider(mapObjectsSymbolsProvider); - } else { - OnlineRasterMapLayerProvider onlineMapRasterLayerProvider = notGc(OnlineTileSources.getBuiltIn() - .createProviderFor("Mapnik (OsmAnd)")); - mapRenderer.setMapLayerProvider(0, onlineMapRasterLayerProvider); - } - - } - - - - private static class EGLContextFactory implements GLSurfaceView.EGLContextFactory { - private EGLContext gpuWorkerContext; - private EGLSurface gpuWorkerFakeSurface; - private GLSurfaceView glSurfaceView; - - public EGLContextFactory(GLSurfaceView glSurfaceView) { - this.glSurfaceView = glSurfaceView; - } - - public EGLContext createContext(EGL10 egl, EGLDisplay display, EGLConfig eglConfig) { - final String eglExtensions = egl.eglQueryString(display, EGL10.EGL_EXTENSIONS); - Log.i(NATIVE_TAG, "EGL extensions: " + eglExtensions); - final String eglVersion = egl.eglQueryString(display, EGL10.EGL_VERSION); - Log.i(NATIVE_TAG, "EGL version: " + eglVersion); - - Log.i(NATIVE_TAG, "Creating main context..."); - final int[] contextAttribList = { EGL14.EGL_CONTEXT_CLIENT_VERSION, 2, EGL10.EGL_NONE }; - - EGLContext mainContext = null; - try { - mainContext = egl.eglCreateContext(display, eglConfig, EGL10.EGL_NO_CONTEXT, contextAttribList); - } catch (Exception e) { - Log.e(NATIVE_TAG, "Failed to create main context", e); - } - if (mainContext == null || mainContext == EGL10.EGL_NO_CONTEXT) { - Log.e(NATIVE_TAG, "Failed to create main context: " + egl.eglGetError()); - mainContext = null; - System.exit(0); - } - - Log.i(NATIVE_TAG, "Creating GPU worker context..."); - try { - gpuWorkerContext = egl.eglCreateContext(display, eglConfig, mainContext, contextAttribList); - } catch (Exception e) { - Log.e(NATIVE_TAG, "Failed to create GPU worker context", e); - } - if (gpuWorkerContext == null || gpuWorkerContext == EGL10.EGL_NO_CONTEXT) { - Log.e(NATIVE_TAG, "Failed to create GPU worker context: " + egl.eglGetError()); - gpuWorkerContext = null; - } - - if (gpuWorkerContext != null) { - Log.i(NATIVE_TAG, "Creating GPU worker fake surface..."); - try { - final int[] surfaceAttribList = { EGL10.EGL_WIDTH, 1, EGL10.EGL_HEIGHT, 1, EGL10.EGL_NONE }; - gpuWorkerFakeSurface = egl.eglCreatePbufferSurface(display, eglConfig, surfaceAttribList); - } catch (Exception e) { - Log.e(NATIVE_TAG, "Failed to create GPU worker fake surface", e); - } - if (gpuWorkerFakeSurface == null || gpuWorkerFakeSurface == EGL10.EGL_NO_SURFACE) { - Log.e(NATIVE_TAG, "Failed to create GPU worker fake surface: " + egl.eglGetError()); - gpuWorkerFakeSurface = null; - } - } - - MapRendererSetupOptions rendererSetupOptions = notGcFor1Egl(new MapRendererSetupOptions()); - if (gpuWorkerContext != null && gpuWorkerFakeSurface != null) { - rendererSetupOptions.setGpuWorkerThreadEnabled(true); - GpuWorkerThreadPrologue gpuWorkerThreadPrologue = notGcFor1Egl(new GpuWorkerThreadPrologue(egl, - display, gpuWorkerContext, gpuWorkerFakeSurface)); - rendererSetupOptions.setGpuWorkerThreadPrologue(gpuWorkerThreadPrologue.getBinding()); - GpuWorkerThreadEpilogue gpuWorkerThreadEpilogue = notGcFor1Egl(new GpuWorkerThreadEpilogue(egl)); - rendererSetupOptions.setGpuWorkerThreadEpilogue(gpuWorkerThreadEpilogue.getBinding()); - } else { - rendererSetupOptions.setGpuWorkerThreadEnabled(false); - } - RenderRequestCallback renderRequestCallback = notGcFor1Egl(new RenderRequestCallback(glSurfaceView)); - rendererSetupOptions.setFrameUpdateRequestCallback(renderRequestCallback.getBinding()); - mapRenderer.setup(rendererSetupOptions); - - return mainContext; - } - - public void destroyContext(EGL10 egl, EGLDisplay display, EGLContext context) { - egl.eglDestroyContext(display, context); - - if (gpuWorkerContext != null) { - egl.eglDestroyContext(display, gpuWorkerContext); - gpuWorkerContext = null; - } - - if (gpuWorkerFakeSurface != null) { - egl.eglDestroySurface(display, gpuWorkerFakeSurface); - gpuWorkerFakeSurface = null; - } - } - } - - private static class GpuWorkerThreadEpilogue extends MapRendererSetupOptions.IGpuWorkerThreadEpilogue { - public GpuWorkerThreadEpilogue(EGL10 egl) { - _egl = egl; - } - - private final EGL10 _egl; - - @Override - public void method(IMapRenderer mapRenderer) { - try { - if (!_egl.eglWaitGL()) - Log.e(NATIVE_TAG, "Failed to wait for GPU worker context: " + _egl.eglGetError()); - } catch (Exception e) { - Log.e(NATIVE_TAG, "Failed to wait for GPU worker context", e); - } - } - } - - private static class GpuWorkerThreadPrologue extends MapRendererSetupOptions.IGpuWorkerThreadPrologue { - public GpuWorkerThreadPrologue(EGL10 egl, EGLDisplay eglDisplay, EGLContext context, EGLSurface surface) { - _egl = egl; - _eglDisplay = eglDisplay; - _context = context; - _eglSurface = surface; - } - - private final EGL10 _egl; - private final EGLDisplay _eglDisplay; - private final EGLContext _context; - private final EGLSurface _eglSurface; - - @Override - public void method(IMapRenderer mapRenderer) { - try { - if (!_egl.eglMakeCurrent(_eglDisplay, _eglSurface, _eglSurface, _context)) - Log.e(NATIVE_TAG, "Failed to set GPU worker context active: " + _egl.eglGetError()); - } catch (Exception e) { - Log.e(NATIVE_TAG, "Failed to set GPU worker context active", e); - } - } - } - - private static class RenderRequestCallback extends MapRendererSetupOptions.IFrameUpdateRequestCallback { - private GLSurfaceView glSurfaceView; - - public RenderRequestCallback(GLSurfaceView glSurfaceView) { - this.glSurfaceView = glSurfaceView; - } - - @Override - public void method(IMapRenderer mapRenderer) { - glSurfaceView.requestRender(); - } - } - -} diff --git a/OsmAnd/src/net/osmand/plus/views/corenative/NativeRenderer.java b/OsmAnd/src/net/osmand/plus/views/corenative/NativeRenderer.java deleted file mode 100644 index 82d887a021..0000000000 --- a/OsmAnd/src/net/osmand/plus/views/corenative/NativeRenderer.java +++ /dev/null @@ -1,48 +0,0 @@ -package net.osmand.plus.views.corenative; - -import android.opengl.GLSurfaceView; -import android.util.Log; -import net.osmand.core.jni.AreaI; -import net.osmand.core.jni.IMapRenderer; -import net.osmand.core.jni.PointI; - -import javax.microedition.khronos.egl.EGLConfig; -import javax.microedition.khronos.opengles.GL10; - -/** - * Created by Denis on 01.10.2014. - */ -public class NativeRenderer implements GLSurfaceView.Renderer { - private IMapRenderer mapRenderer; - - - public NativeRenderer(IMapRenderer mapRenderer){ - this.mapRenderer = mapRenderer; - } - - public void onSurfaceCreated(GL10 gl, EGLConfig config) { - Log.i(NativeQtLibrary.NATIVE_TAG, "onSurfaceCreated"); - if (mapRenderer.isRenderingInitialized()) - mapRenderer.releaseRendering(); - } - - public void onSurfaceChanged(GL10 gl, int width, int height) { - Log.i(NativeQtLibrary.NATIVE_TAG, "onSurfaceChanged"); - mapRenderer.setViewport(new AreaI(0, 0, height, width)); - mapRenderer.setWindowSize(new PointI(width, height)); - - if (!mapRenderer.isRenderingInitialized()) - { - if (!mapRenderer.initializeRendering()) - Log.e(NativeQtLibrary.NATIVE_TAG, "Failed to initialize rendering"); - } - } - - public void onDrawFrame(GL10 gl) { - mapRenderer.update(); - if (mapRenderer.prepareFrame()) - mapRenderer.renderFrame(); - gl.glFlush(); - } -} - From 367ccbe5f909a5a9984396cd76a7b1de18342e9e Mon Sep 17 00:00:00 2001 From: Alexey Pelykh Date: Fri, 28 Nov 2014 17:10:55 +0200 Subject: [PATCH 044/157] Fix permissions --- OsmAnd/assets/help/style.css | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 OsmAnd/assets/help/style.css diff --git a/OsmAnd/assets/help/style.css b/OsmAnd/assets/help/style.css old mode 100755 new mode 100644 From d54064d9c6c8867703c3d00d7b8541ee861a38eb Mon Sep 17 00:00:00 2001 From: stephan 75 Date: Fri, 28 Nov 2014 16:26:27 +0100 Subject: [PATCH 045/157] Translated using Weblate (German) Currently translated at 99.8% (1566 of 1568 strings) --- OsmAnd/res/values-de/strings.xml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/OsmAnd/res/values-de/strings.xml b/OsmAnd/res/values-de/strings.xml index 38f205f302..1e8f2f214a 100644 --- a/OsmAnd/res/values-de/strings.xml +++ b/OsmAnd/res/values-de/strings.xml @@ -1,4 +1,4 @@ - + Geschwindigkeitsbegrenzung Grenzkontrolle @@ -2016,4 +2016,9 @@ Afghanistan, Ägypten, Albanien, Algerien, Andorra, Angola, Anguilla, Antigua an Erweitert Sichere Verbindung zum Server Nutze https + Karten + KARTE ANZEIGEN + ALLES ANZEIGEN + Koordinaten + Suche nach From b021a964fe6550ba98e40de7f1ba84f1b7892eae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B6=8C=20=EC=A1=B0?= Date: Fri, 28 Nov 2014 17:16:28 +0100 Subject: [PATCH 046/157] Translated using Weblate (Korean) Currently translated at 100.0% (1568 of 1568 strings) --- OsmAnd/res/values-ko/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-ko/strings.xml b/OsmAnd/res/values-ko/strings.xml index a365735e2d..ab2b1440cd 100644 --- a/OsmAnd/res/values-ko/strings.xml +++ b/OsmAnd/res/values-ko/strings.xml @@ -965,7 +965,7 @@ 킷캣(KitKat) 버전 이후로 이전에 저장한 폴더 (%s)에 지도를 다운로드하고 업데이트 할 수 없습니다. \n저장 위치를 변경하고 모든 파일을 그곳에 복사하는 것을 허락하겠습니까? \n Note : 이전 파일은 그대로 유지됩니다. (그러나 수동으로 삭제할 수 있습니다)\n Note : 새로운 저장소는 OsmAnd 와 OsmAnd+ 간에 파일을 공유 할 수 없습니다. - OsmAnd는 새 목적지로 데이터 파일을 복사하겠습니까? + OsmAnd에 새 목적지로 데이터 파일을 복사하겠습니까? 새 목적지로 파일(%s)을 복사중... 새로운 목적지에 OsmAnd 데이터 파일을 복사중 (%s) OsmAnd 데이터 파일을 복사중 From 847e9d93d10e20276ed98a164707f4fe28585f32 Mon Sep 17 00:00:00 2001 From: vshcherb Date: Fri, 28 Nov 2014 18:25:52 +0100 Subject: [PATCH 047/157] Update strings.xml --- OsmAnd/res/values-de/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-de/strings.xml b/OsmAnd/res/values-de/strings.xml index 48b67262f2..aeed0dd98f 100644 --- a/OsmAnd/res/values-de/strings.xml +++ b/OsmAnd/res/values-de/strings.xml @@ -1,4 +1,4 @@ - + Geschwindigkeitsbegrenzung Grenzkontrolle From c362029d5656e518ba082d2e34c70894b9a111a0 Mon Sep 17 00:00:00 2001 From: vshcherb Date: Fri, 28 Nov 2014 18:27:59 +0100 Subject: [PATCH 048/157] Update strings.xml --- OsmAnd/res/values-de/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-de/strings.xml b/OsmAnd/res/values-de/strings.xml index aeed0dd98f..1d3a751d1c 100644 --- a/OsmAnd/res/values-de/strings.xml +++ b/OsmAnd/res/values-de/strings.xml @@ -1,4 +1,4 @@ - + Geschwindigkeitsbegrenzung Grenzkontrolle From 52dd94adc7635f87eb153dc0537fe86851103a31 Mon Sep 17 00:00:00 2001 From: Victor Shcherb Date: Fri, 28 Nov 2014 18:33:04 +0100 Subject: [PATCH 049/157] Remove unnecessary line --- .../net/osmand/router/BinaryRoutePlanner.java | 1 - OsmAnd/res/values-de/strings.xml.orig | 2027 ----------------- 2 files changed, 2028 deletions(-) delete mode 100644 OsmAnd/res/values-de/strings.xml.orig diff --git a/OsmAnd-java/src/net/osmand/router/BinaryRoutePlanner.java b/OsmAnd-java/src/net/osmand/router/BinaryRoutePlanner.java index fd5667f0a4..0d2b9f7c9e 100644 --- a/OsmAnd-java/src/net/osmand/router/BinaryRoutePlanner.java +++ b/OsmAnd-java/src/net/osmand/router/BinaryRoutePlanner.java @@ -135,7 +135,6 @@ public class BinaryRoutePlanner { checkIfGraphIsEmpty(ctx, ctx.getPlanRoadDirection() >= 0, graphDirectSegments, start, visitedDirectSegments, "Route is not found from selected start point."); if (ctx.planRouteIn2Directions()) { - if(!graphDirectSegments.isEmpty() && !graphReverseSegments.isEmpty()) forwardSearch = (nonHeuristicSegmentsComparator.compare(graphDirectSegments.peek(), graphReverseSegments.peek()) < 0); // if (graphDirectSegments.size() * 2 > graphReverseSegments.size()) { // forwardSearch = false; diff --git a/OsmAnd/res/values-de/strings.xml.orig b/OsmAnd/res/values-de/strings.xml.orig deleted file mode 100644 index 422f0357e7..0000000000 --- a/OsmAnd/res/values-de/strings.xml.orig +++ /dev/null @@ -1,2027 +0,0 @@ -<<<<<<< HEAD - -======= - ->>>>>>> f2ef85bf407bf1d001f7de1502c7d4b37955eb8d - - Geschwindigkeitsbegrenzung - Grenzkontrolle - Mautstelle - Stoppzeichen - Verkehrsberuhigung - Geschwindigkeitskontrolle - Verkehrswarnung - Nahegelegene Favoriten ankündigen - Nahegelegene POI ankündigen - Navigation starten - Die Route zu einem Ziel erhält man entweder durch direktes lang-antippen eines Punktes in der Karte, (dann Kurzklick auf den Positionsmarker und das Auswählen des Menüpunktes \'Navigiere zu\'), oder über die Funktion \'Navigiere zu\' bei Klick auf ein Ergebnis einer Such-Liste oder einen Favoriten. - \n\nDer Zielpunkt wird als orangefarbener Punkt auf der Karte markiert. Zu einem gewählten Ziel zeigt OsmAnd auf der Karte die Entfernung und die Richtung (orangefarbenes Dreieck) an. - \n\nDie Option \'Navigation starten\' beginnt eine Live-Navigation mit Sprachansagen (falls konfiguriert), \'Route nur anzeigen\' zeigt eine statische Route ohne Anpassungen bei Positionsveränderung. - \n\nDie Route zu einem gewählten Ziel von einem anderen Punkt als dem gegenwärtigen Standort aus kann angezeigt werden durch Klick auf den gewünschten Ausgangspunkt und dann Auswahl der \'Verwende Position\'-Kontextmenüoption \'Navigiere von\'. - \n\nVerwenden Sie \'Navigiere von\' zusammen mit der Option \'Navigation starten\', wird OsmAnd auf die aktuelle Position umschalten, sobald sie gefunden ist. Dies kann also verwendet werden, um eine Route bereits anzeigen zu lassen bevor GPS die eigene Position gefunden hat. Mit der Option \'Route nur anzeigen\' hingegen kann man sich eine (statische) Route von jedem beliebigen Standort aus zeigen lassen. - - Suchen - Um bestimmte Orte zu finden, können Sie entweder auf der Landkarte über das \'Verwende Position\'-Kontextmenü \'In der Nähe suchen\' aufrufen, oder den Suchbildschirm über \'Menü\' → \'Suche\' erreichen. - \n\nEs gibt folgende Suchmechanismen: - \n\t* Eingabe einer Adresse - \n\t* Angabe von Koordinaten - \n\t* als POI (via Typ oder nach Name) - \n\t* über die Such-Historie - \n\t* mittels Ihrer Favoriten - \n\nEin Kontextmenü für jeden Treffer einer Ergebnisliste bietet Optionen wie \'Navigiere zu\' oder \'Auf Karte anzeigen\'. - - Jedesmal nachfragen - Aufzeichnungs-Intervall für die generelle Positionsaufzeichnung (via Schaltfläche \'GPX-Aufnahme\' auf dem Kartenbildschirm) - Generelles Aufzeichnungs-Intervall - GPS-Hintergrunddienst aktivieren - GPS-Hintergrunddienst unterbrechen? - Hintergrunddienst\n einschalten - Hintergrunddienst\n ausschalten - Aktiviere OsmAnd Hintergrunddienst für Funktionalitäten bei ausgeschalteter Anzeige - Hintergrunddienst - GPS Aufwach-Intervall für Hintergrunddienst - GPS Aufwach-Intervall - Aufzeichnung in GPX-Datei - Generelle Positionsaufzeichnung kann man mit der Schaltfläche \'GPX-Aufnahme\' direkt auf dem Kartenbildschirm aktivieren oder deaktivieren - Track jetzt speichern - Aktuellen Track jetzt auf SD-Karte abspeichern - Aufzeichnung in GPX-Datei während Navigation - Zurückgelegte Strecken während der Navigation werden als GPX auf der SD-Karte gespeichert - Aufzeichnungs-Intervall - Aufzeichnungs-Intervall während Navigation - Intervall zwischen zwei Aufzeichnungspunkten während Navigation - Hilfe - Hilfe - OsmAnd ist eine Navigationsanwendung mit vielen Fähigkeiten. - \n\nHilfe und Tipps sind über das \'Menü\' → \'Hilfe\' zugänglich. - - Karte ansehen - Auto - Fahrrad - Fußgänger - Ansage von Favoriten in den Nähe - Gebäudefärbung nach Typ - Navigation fortsetzen - Navigation pausieren - Aktiv erhalten - Unterbrechen - Alpine Tourenskala (SAC) - Wege entsprechend der SAC-Wanderskala darstellen - Wandersymbole anzeigen - Wandersymbole anzeigen (OSMC) - Früh - Normal - Spät - Auf den letzten Metern - Die Route ist wahrscheinlich zu lang um vom OsmAnd-Offline-Router berechnet zu werden. Offline-Routing ist bis ungefähr 200 km Abstand zwischen einzelnen Punkten möglich. Bitte einen oder mehrere Zwischenpunkte setzen um die Route berechnen zu können. - Kein Auto-Zoom - Auf Nahbereich - Auf Mittelbereich - Auf Fernbereich - Kartenlupe - Weltweite Basiskarte (basemap) - Kartendarstellung - OsmAnd kann die Offline-Vektor-Karten für verschiedene Verwendungszwecke optimiert darstellen: - \n\nNeben der neutralen \'Default\' Darstellung kann man unter \'Menü\' → \'Karte konfigurieren\' → \'Kartendarstellung\' zum Beispiel auswählen: - \n\t* Den \'Touring view\' Stil, er enthält die maximal verfügbare Detailtiefe für Reisende und Tourengänger, inklusive einer Optimierung für Vielfahrer (höherer Kontrast, alle Straßenarten eindeutig unterscheidbar), Optionen für das Alpine Wandern (SAC Skala), Fahrradrouten, Wandersymbol-Untertützung, usw. - \n\t* \'High contrast roads\' zeigt alle Straßen in betont deutlichen Farben, nützlich in extrem hellen Umgebungen - \n\t* \'Winter and ski\' zeigt Landschaften in einer (schneebedeckten) Winteransicht, und zeigt global Skiabfahrten und Lifte (benötigt wird die \'World ski\' Offline-Karte) - - - Als Ziel wählen - Relief Overlay - Relief-Schattierung - Relief-Overlays - Start - Keine Grenzen anzeigen - Unterdrückt die Anzeige regionaler Grenzverläufe - Höhenanzeige (Offset) - Die meisten GPS-Systeme zeigen die Höhenangaben im ellipsoid-basierten WGS84-System an, die Umrechnung auf lokal übliche Höhenangaben erfordert eine ortsabhängige Korrektur. - \n\nEine bessere Näherung an lokale Systeme ist das EGM96-System. OsmAnd unterstützt nun die automatische Anzeige aller Höhenangaben im EGM96-System. - \n\nDies erfolgt sobald die Offline-Datei WW15MGH.DAC vorhanden ist, verfügbar via Einstellungen/Karten-Management (das Original ist http://earth-info.nga.mil/GandG/wgs84/gravitymod/egm96/binary/WW15MGH.DAC). - - Tempolimit - Lat %1$.3f, Lon %2$.3f - Aktueller Standort - - Keine Hausnummern / Gebäude gefunden. - Suche Stadt inkrementell - Suche weitere kleine Orte oder Postleitzahlen - Anzeige reiner Straßenkarten: - Reine Straßenkarten - "Nur Straßen" - Reguläre Karten - Reine Straßenkarten - Anwendung läuft im abgesicherten Modus (Verwendung für langsamere Android-Versionen). - Abgesicherter Modus - Die Anwendung läuft im abgesicherten Modus (kann in den Einstellungen deaktiviert werden). - Der Hintergrunddienst läuft noch, soll er auch unterbrochen werden? - Auswahl eines Straßenfarbschemas: - Straßenfarbschema - Warnungen anzeigen … - Verkehrswarnungen (Tempolimits, Stopzeichen, Rüttelschwellen), stationäre Radarkontrollen und Fahrspuranzeige - Kompass verwenden, wenn keine andere Richtungsbestimmung möglich - Kompass verwenden - Vermeide Autobahnen - Kartenvergrößerung automatisch der Geschwindigkeit anpassen (während Kartennachführung) - Automatischer Zoom - Standort während der Navigation auf Straßen einrasten - Auf Straße einrasten - OsmAnd Karten & Navigation - Globale Landkarten- und Navigations-Applikation für Offline und Online-Karten - - OsmAnd (OSM Automated Navigation Directions) - - OsmAnd ist eine Open-Source-Navigationsapplikation mit Zugriff auf eine große Vielfalt öffentlich zugänglicher OpenStreetMap (OSM) Karten weltweit. Alle Karten (Vektor- oder Kachelformate) können lokal auf der Speicherkarte abgelegt und offline verwendet werden. OsmAnd bietet ferner eine offline und online Routing-Funktion inklusive Sprachnavigation. - - Einige der Kernfunktionen: - - Komplette Offline-Funktionalität (Kartenmaterial kann auf dem Gerät abgelegt werden) - - Kompakte Vektorkarten für die ganze Welt verfügbar - - Direktes Herunterladen von Länder- oder Regionenkarten aus der App heraus - - Darstellung mehrerer überlagerter Kartenschichten wie GPX oder Navigations-Tracks, POIs (Points of Interest), Favoriten, Höhenlinien, ÖPNV-Haltestellen, zusätzliche Karten mit wählbarer Transparenz - - Offline Adress- und POI-Suche - - Offlinenavigation für kurze Distanzen (experimentell) - - Auto-, Fahrrad- und Fußgänger-Modus mit - - optionaler automatischer Tag-Nacht-Umschaltung der Anzeige - - optionalem geschwindigkeitsabhängigem Kartenmaßstab - - optionaler Kartenausrichtung nach Kompass oder Bewegungsrichtung - - optionaler Fahrspuranzeige, Geschwindigkeitswarnung, aufgenommene oder TTS Sprachansagen - - Einschränkungen dieser kostenlosen Version von OsmAnd: - - Anzahl der Kartendownloads - - Kein Zugriff auf Wikipedia Offline-POIs - - OsmAnd wird aktiv weiterentwickelt und das Projekt benötigt Mittel für die Entwicklung, die Komplettierung und den Test (Fahrten) neuer Funktionen. Bitte erwägen Sie den Kauf von OsmAnd+, die Förderung spezieller Funktionen oder eine allgemeine Spende auf osmand.net. - - - OsmAnd+ Karten & Navigation - Globale Landkarten- und Navigations-Applikation für Offline und Online-Karten - - OsmAnd+ (OSM Automated Navigation Directions) - - OsmAnd ist eine Open-Source-Navigationsapplikation mit Zugriff auf eine große Vielfalt öffentlich zugänglicher OpenStreetMap (OSM) Karten weltweit. Alle Karten (Vektor- oder Kachelformate) können lokal auf der Speicherkarte abgelegt und offline verwendet werden. OsmAnd bietet ferner eine offline und online Routing-Funktion inklusive Sprachnavigation. - - OsmAnd+ ist die Kaufversion von OsmAnd. Durch den Kauf fördern Sie das Projekt, unterstützen die Entwicklung neuer Funktionen und erhalten neue Aktualisierungen. - - Einige der Kernfunktionen: - - Komplette Offline-Funktionalität (Kartenmaterial kann auf dem Gerät abgelegt werden) - - Kompakte Vektorkarten für die ganze Welt verfügbar - - Unbeschränktes, direktes Herunterladen von Länder- oder Regionenkarten aus der App heraus - - Offline Wikipedia-Funktion (Anzeige von Wikipedia-POIs), sehr nützlich für Besichtigungstouren - - Darstellung mehrerer überlagerter Kartenschichten wie GPX- oder Navigations-Tracks, POIs (Points of Interest), Favoriten, Höhenlinien, ÖPNV-Haltestellen, zusätzliche Karten mit wählbarer Transparenz - - Offline Adress- und POI-Suche - - Offlinenavigation für kurze Distanzen (experimentell) - - Auto-, Fahrrad- und Fußgänger-Modus mit - - optionaler automatischer Tag-Nacht-Umschaltung der Anzeige - - optionalem geschwindigkeitsabhängigem Kartenmasstab - - optionaler Kartenausrichtung nach Kompass oder Bewegungsrichtung - - optionaler Fahrspuranzeige, Geschwindigkeitswarnung, aufgenommene oder TTS Sprachansagen - - - Nutzerprofil wählen - Sonnenaufgang: %1$s -\nSonnenuntergang: %2$s - Tag/Nacht-Information - So bald wie möglich - Route als GPX-Datei speichern - Kreisverkehr: Nehmen Sie die %1$d Ausfahrt, dann - Links halten, dann - Rechts halten, dann - Unterdrückt die Anzeige aller Flächenelemente in der Karte - Keine Flächen anzeigen - Optimierung der Kartendarstellung für - Darstellungsmodus - Zeige ab Vergrößerung (benötigt Höhenlinien-Datei): - Höhenlinien anzeigen - Erhöht den dargestellten Detailgrad der Karte - Mehr Details in Karte - Aktivieren Sie das Online-Karten-Plugin, um andere Kartenquellen nutzen zu können - Online- und Kachel-Karten - Online-Karten verwenden (lädt Kacheln aus dem Internet und speichert diese auf der SD-Karte) - Online-Karten - Konfiguration von Kachel-Kartenquellen, sowie Over- & Underlay Einstellungen - Karten-Einstellungen - Konfigurieren der Karten-Anzeige - Ermöglicht die Verwendung zahlreicher Online Kachel-Kartenquellen (auch als Over- oder Underlay). Online-Karten werden im Unterordner \'tiles\' zwischengespeichert. Karten-Kacheln können auch offline erstellt und in das Unterordner \'tiles\' kopiert werden. - Zeigt Einstellungen für die Standort-Aufzeichnung oder die Navigation während das Gerät im Standby-Modus ist (periodisches Aufwecken des GPS-Empfängers). - Zeigt Einstellungen für spezielle Eingabehilfen. - Erweiterte Einstellungen - Ermöglicht das Aufzeichnen zurückgelegter Strecken als lokale GPX-Datei oder online via Web-Service. - Zeigt Einstellungen für erweiterte Kartenkonfiguration (z.B. mehr Details) und einige Gerätespezifika. - Zeigt Einstellungen für Entwicklungs- und Fehlersuchhilfen wie simulierte Navigation oder die Messung der Render-Leistung. - Plugins - Module zum Aktivieren oder Deaktivieren antippen. (Ein Neustart von OsmAnd könnte nötig sein.) - Module aktivieren Experteneinstellungen und Zusatzdienste - Plugins - Ermöglicht das Erstellen und Bearbeiten von OSM-POI-Objekten und -Fehlermeldungen, sowie das Hochladen von GPX-Dateien (benötigt ein OSM-Benutzerkonto). - Vektorkarten werden eventuell schneller angezeigt. Funktioniert nur auf manchen Geräten. - - Spiele Ansagen der aktuell ausgewählten Stimme ab - OsmAnd Debugging - Natives Rendern - - Sprachansagen testen - Keine Offline-Vektor-Karte für dieses Gebiet vorhanden. Bitte Offline-Karte über \'Einstellungen\' → \'Karten-Management\' herunterladen oder alternativ auf Online-Karten wechseln (müssen zuvor im Plugin-Manager aktiviert werden). - GPX-Dateien an OSM senden? - Bitte tragen Sie Ihren OSM-Benutzernamen und Passwort ein, um GPX-Dateien hochzuladen. - Unterstütze OsmAnd - Unterstütze neue Funktionen - Unterstützen Sie mit einer Spende die Entwicklung neuer Funktionen für die Anwendung - - Zeige Maßstab an - Info - Zurück zum Standort - Hilfe - Zeige Details - Barrierefreiheit-Erweiterungen für alte Android-Versionen - Barrierefreiheit-Erweiterungen - Barrierefreiheit-Modus - Schaltet die Eingabehilfen-Funktionen ein - An - Aus - Wie globale Systemeinstellung - Zurück zum Menü - Herauszoomen - Hereinzoomen - Zoom ist - Nord - Nord-Nord-Ost - Nord-Ost - Ost-Nord-Ost - Ost - Ost-Süd-Ost - Süd-Ost - Süd-Süd-Ost - Süd - Süd-Süd-West - Süd-West - West-Süd-West - West - West-Nord-West - Nord-West - Nord-Nord-West - Vorne - Vorne rechts - Rechts - Hinten rechts - Hinten - Hinten links - Links - Vorne links - Uhr - nach - Genauigkeit - Höhe - Keine Informationen - Seitwärds (8 Sektoren) - Im Uhrzeigersinn (12 Sektoren) - Richtungsart - Wähle eine Art um relative Richtungen während der Bewegung auszudrücken - Auto. Ankündigungen ein - Auto. Ankündigungen aus - Scrolle die Karte mit Gesten auf dem Touchscreen - Natürliches Scrollen der Karte - Ich bin hier - Horizontale Trackball-Bewegung zoomt Karte - Benutze den Trackball zum Zoomen - Benutze kurze Objektnamen im Touch-Entdeckungsmodus - Benutze Objektnamen - Einstellungen zur Barrierefreiheit - Bedienungshilfen - Zu wenig Prozess-Speicher zum Anzeigen des gewählten Gebietes - Fluoreszierende Overlays - Fluoreszierende Anzeige von Tracks und Routen - Offline-Bearbeitung - Immer Offline-Bearbeitung verwenden - Das Bearbeiten von POIs innerhalb von OsmAnd beeinflusst nicht die Offline-Karten, sondern wird in einer eigenen Datei gespeichert. - hochladen… - {0} POI/Bugs wurden hochgeladen - Alle hochladen - - Auf Karte anzeigen - Änderung auf OSM hochladen - Änderung löschen - Asynchrone OSM Bearbeitung: - Lokal notierte OSM Punkte/Bugs - Lokal vorgemerkte OSM Punkte/Bugs anzeigen und verwalten - - Online Verfolgung (benötigt GPX) - Sende Verfolgungsdaten zu einem festgelegten Internet Dienst, wenn GPX-Aufzeichnung aktiviert ist. - Online-Tracking Web-Adresse - Spezifikation der Online-Tracking Web-Adresse mit Datenübergabe: lat={0}, lon={1}, timestamp={2}, hdop={3}, altitude={4}, speed={5}, bearing={6} - Online-Tracking Intervall - Angabe des Online-Tracking Invervalls - Starte Online-Verfolgung - Stoppe Online-Verfolgung - Aktuellen Track anzeigen - Diese kostenlose Version von OsmAnd ist limitiert auf %1$s Downloads und unterstützt keine offline Wikipedia-Artikel. - Kostenlose Version - Zeige POI-Beschreibung - Nordamerika - Nordamerika - USA - Zentralamerika - Südamerika - Europa - Europa - Frankreich - Europa - Deutschland - Europa/Asien - Russland - Afrika - Asien - Ozeanien - Weltweite und thematische Karten - Weltweite Wikipedia POIs - Sprachpakete (Aufnahmen - begrenzte Funktionalität) - Sprachpakete (TTS-Synthese, empfohlen) - Europa - Italien - Europa - Großbritannien - Nordamerika - Kanada - Landesweite Adressen - Höhenkorrektur (weltweit) - Seezeichen (weltweit) - Bitcoin-Bezahlmöglichkeiten (weltweit) - Übersichtskarte der Welt - Ski-Karte (weltweit) - Teile - Höhenlinien - OpenMaps EU - Wikipedia (offline) - Benutzerdefiniert - Eine Datei mit exportierten Favoriten existiert bereits. Überschreiben? - Profilspezifische Einstellungen - Standardprofil - Karten- und Navigations-Einstellungen werden je Profil gespeichert. Hier Standardprofil vorauswählen. - - Navigation - Nutzerprofilspezifische Einstellungen (Autofahrer, Radfahrer, Fußgänger) - Globale Einstellungen - Karten-Management - Laden und Verwalten von Landkarten - Allgemein - Konfiguration der Anzeige und anderer allgemeiner Einstellungen - Globale Einstellungen - OSM-Benutzername - Nötig für openstreetmap.org-Beiträge - OSM-Kennwort - Nötig für openstreetmap.org-Beiträge - Hintergrunddienst - Für Verwendung von OsmAnd bei ausgeschalteter Anzeige - Kartenrotation - Die Ausrichtung der Karte kann durch antippen auf die Kompassnadel geändert werden. - \n\nZur Wahl stehen: - \n\t* \'Keine Rotation (Norden ist oben)\': Die Ausrichtung wird nicht nachgeführt, Norden ist immer oben - \n\t* \'Nach Bewegungsrichtung\': Die Karte wird gemäß Bewegungsrichtung ausgerichtet und nachgeführt - \n\t* \'Nach Kompass\': Die Karte wird gemäß Kompass ausgerichtet und nachgeführt - - Download erfolgreich.\n\t\n\tAktivieren unter: \'Menü\' → \'Karte konfigurieren\' → \'Kartenquelle…\' → \'Offline-Vektor-Karten\'. - - Tag/Nacht-Modus - Die Anzeige der Offline-Vektor-Karten kann zwischen Tag- (heller) und Nachtansicht (dunkler) umgeschaltet werden. Insbesondere bei nächtlichen Autofahrten ist die dunklere Nacht-Anzeige angenehmer und sicherer. - \n\nDer Umschaltmechanismus kann in der Kartenansicht unter Menü → \'Karte konfigurieren\' → \'Tag/Nacht-Modus\' geändert werden. - \n\nZur Auswahl stehen: - \n\t* \'Sonnenaufgang/-untergang\': automatischer Modus (Voreinstellung) - \n\t* \'Tag\': permanente Tagesansicht - \n\t* \'Nacht\': permanente Nachtansicht - \n\t* \'Umgebungslicht-Sensor\': automatischer Modus gemäß Umgebungslichtsensor des Gerätes (nur wenn Sensor vorhanden) - - OSM Bearbeitung - OsmAnd verwendet Daten basierend auf OpenStreetMap.org (OSM) und kann direkt zur Verbesserung der OSM-Daten verwendet werden. Sie können mit nur wenigen Klicks neue POIs und OSM-Fehlerberichte erstellen. - \n\nDazu müssen Sie zunächst unter \'Einstellungen\' → \'Zusatzmodule\' OSM-Berarbeitung aktivieren und dann unter \'Einstellungen\' → \'OSM-Bearbeitung\' Ihre OSM-Login-Daten hinterlegen. - \n\nEinen neuen POI erstellen Sie ganz einfach mittels \'POI erstellen\' im \'Verwende Position\'-Kontextmenü. Anschließend die Informationen zum POI eintragen und über die Menüführung zu OSM hochladen. Fertig! - \n\nAuch auf der Karte gefundene Fehler können direkt an OSM gemeldet werden. OSM-Fehlerberichte erstellen Sie mittels \'OSM-Fehlerbericht einsenden\' im \'Verwende Position\'-Kontextmenü. - \n\nOsmAnd untertützt das lokale Vormerken Ihrer Einträge (siehe entsprechende Einstellung), aber zum späteren Einsenden wird natürlich eine Internetverbindung benötigt. - - Nicht genügend freier Speicher vorhanden zum Laden von %1$s MB (frei: %2$s). - {2} MB freier Speicher vorhanden! {0} Datei(en) ({1} MB) herunterladen? - Transparentes Layout - Native Bibliothek wird auf diesem Gerät nicht unterstützt. - Native Bibliothek wird initialisiert… - Kartenanzeige nachführen - Wartezeit für Rückkehr zur Kartennachführung - Nie - Nachführung nur bei aktiver Navigation - Kartennachführung erfolgt nur während Navigation. - Kartennachführung aktiv. - Vektor Renderer spezif. Optionen - Overlay / Underlay - Einstellungen Kartenquelle - Einstellungen Vektorkarten - %1$s löschen? - Vorstadt - Dorf - Gemeinde - Stadt - Großstadt - - Simulation stoppen - Simulation starten - - Letzte Änderungen - Neuerungen in Version 0.6.6: - \n\t* Text-To-Speech (TTS) Unterstützung für Sprachansagen - \n\t* Anzeige von mehr Details in den Landkarten - \n\t* World_Basemap für die ganze Welt in der Anwendung enthalten - \n\t* Verbesserungen der Offline-Navigation (immer noch experimentell) - \n\t* GPX-Navigations-Optionen - \n\t* Aktualisierung der Bedienoberfläche und viele Fehlerkorrekturen - - Verbesserungen in 0.6.7: - \n\t* Daten-Manager (Herunterladen, Löschen, und Aktivieren / Deaktivieren von Offline-Daten direkt in OsmAnd) - \n\t* Favoriten und Favoritengruppen (Kategorisieren, Löschen, Managen von Favoriten) - \n\t* GPX Explorer innerhalb der Applikation (Tracks und Track-Daten ansehen) - \n\t* GPX Navigation (nützliche Optionen, Fortsetzung der Navigation nach Crash, unterstützt jetzt Kreisverkehre) - \n\t* Abspeichern von Routen als GPX-Tracks zur Offline-Verwendung - \n\t* Verbessertes GPX Tracking (Filtern von ungenauen Standorten, Abspeichern von Genauigkeit, Höhe, Geschwindigkeit) - \n\t* Funktion zum Upload von GPX Dateien zur OSM Community (http://download.osmand.net/gpx/) - \n\t* Verbessertes Vektor-Rendering - \n\t* Verbesserung der TTS-Ansagen (genaue Entfernungsansagen, optional auch in Meilen+Fuß) - \n\t* Fehlerbehebung - - Änderungen in v0.6.8: - \n\t* Völlig neu entwickelte Suche (POI, Addressen)! Adress-Suche wesentlich beschleunigt. Einheitliche Suche mit vielen Optionen. - \n\t* POI namentliche Suche in großen Regionen / Ländern - \n\t* Flackernde Kartenanzeige für Tablets behoben (Issue 641) - \n\t* Auto-center Option (Issue 356) - \n\t* GPX Navigation verschoben zu \'Route\' und \'Route speichern\' verschoben zu \'Routeninformationen\' - \n\t* POI Daten sind nun in .obf-Datei enthalten (alle Indexes ab 01/10/11) - \n\t* Sprachansagen verbessert (GPS-Standort-Bestimmung, keine Auslassung des ersten Kommandos) - \n\t* Kleinere Verbesserungen - - Änderungen in 0.6.9: - \n\t* Verbesserte Offline-Kartenanzeige - \n\t* Schnelles \"Native Rendering\" - siehe Development-Einstellungen (funktioniert evtl. nicht auf jedem Gerät) - \n\t* Massive Änderungen am \"Look and Feel\" - \n\t* Höhenanzeige - \n\t* Neue Sprachversionen (vietnamesisch, polnisch) - \n\t* Weitere kleine Funktionalitäten - - Änderungen in 0.7.0: - \n\t* Offline Wikipedia Daten mit Artikeln - \n\t* Aktualisierte Karten - \n\t* Weitere kleine Verbesserungen - - Änderungen in 0.7.1: - \n\t* Offline POI-Bearbeitung - \n\t* Online-Tracking Option: Koordinaten periodisch an einen Web-Service schicken (Setup-Anleitung für eigenen Web-Service in den HowTo-Artikeln) - \n\t* Anzeige des gegenwärtig aufgezeichneten Tracks möglich - \n\t* Richtungsüberprüfung: \'Bitte wenden\' wird jetzt angezeigt und angesagt bei entgegengesetzter Bewegungsrichtung oder bei verpasster Abzweigung - \n\t* Neue Ansage \'Strecke neu berechnet\' - \n\t* Optische Anzeige eines innerhalb 100m bevorstehenden Abbiegevorgangs durch Farbwechsel des Richtungspfeils - \n\t* Die Aktualität auch der deaktivierten Karten wird jetzt im Download-Liste in dunkelgrün und dunkelblau angezeigt - \n\t* Weitere Verbesserungen - - Änderungen in 0.7.2: - \n\t* Native rendering auf allen Geräten - \n\t* Editiere POIs offline - \n\t* Barrierefreiheit - \n\t* Viele Fehlerkorrekturen - - Änderungen in 0.8.0: - \n\t* *Modul-Funktionalität* - \n\t* Viele Funktionalitäten können nun blockweise unter Einstellungen/Zusatzmodule aktiviert oder deaktiviert werden. Unter anderem finden Sie dort die Einstellungen für Online Kachel-Kartenquellen, Aufzeichnungs-Einstellungen und vielen anderen existierenden Funktionalitäten. - \n\t* *Unterstützung neuer Offline-Karten* - \n\t* Schnellere und präzisere Kartendarstellung (Probleme mit Küstenlinien und \'gefluteten\' Gebieten größtenteils behoben). - \n\t* Alle Offline-Karten müssen neu heruntergeladen werden (das alte Format wird nicht mehr unterstützt) - \n\t* *Offline-Navigation* - \n\t* Offline-Navigation ist jetzt robuster - \n\t* *Verbesserter Benutzerführung* - \n\t* Benutzbarkeit in vielen Punkten verbessert - - Änderungen in 0.8.1: - \n\t* Präzisere Routen (etwas langsamere Berechnung) - \n\t* Routenneuberechnung verbessert und beschleunigt - \n\t* Anzeige der weiterführenden Fahrspur - \n\t* Anzeige von Geschwindigkeitsbegrenzungen, Radarfallen und Verkehrsberuhigungen (Schwellen) - \n\t* Verbesserte Sprachführung auf Autobahnen - \n\t* Parkplatz-Plugin (\'Wo ist mein Auto?\') - \n\t* Knopf zum De/Aktivieren der Streckenaufzeichnung - - Änderungen in 0.8.2: - \n\t* Verbessertes Routing - \n\t* Konfigurierbare Schaltflächen - \n\t* Karteneinstellungen auf Kartenbildschirm umgezogen - \n\t* Bildschirmsperrtaste mit Aufzeichnungs-Einstellungen - \n\t* Fehlerbehebung für Arabische Schrift, Kannada-Schrift und linksläufige Schriften - - Änderungen in 0.8.3: - \n\t* Wegpunkte setzen - \n\t* Verbessertes Navigationsverhalten - \n\t* Routenoption \'Vermeide Autobahnen\' - \n\t* Anzeige von Fahrradstraßen (cycleway=track) - \n\t* Einige Fehlerbehebungen - - Änderungen in 0.8.4: - \n\t* Einige Fehlerbehebungen - \n\t* Karte behält nach Unterbrechungen Standortbindung - \n\t* Hintergrunddienst wird bei Navigation aktiviert - - Änderungen in 1.0.0: - \n\t* Verbessertes Routing: schneller, präziser, bis 250 km - \n\t* Option reiner Straßenkarten - \n\t* Karte behält nach Unterbrechungen Standortbindung - \n\t* Hintergrunddienst wird bei Navigation aktiviert - - Änderungen in 1.1.0: - \n\t* Entfernungsmesser-Plugin - \n\t* Audio/Video-Notiz-Plugin - \n\t* Höhenlinien-Plugin\n\t* Fehlerbeseitigungen - \n\t* \'Touren-Ansicht\' der Karte mit mehr Kartendetails, neuer Straßenansicht, mehr Kontrast und alpine Wander-Optionen (SAC-Skalierung) - \n\t* EM96 Geoid-Offset-Korrektur für GPS-Höhenwerte - - Änderungen in 1.1.2: - \n\t* Audio/Video-Modul Verbesserungen (Fotos mit EXIF-Informationen) - \n\t* Bedienkomfort und Höhenlinien-Modul verbessert - \n\t* Höhenlinien-Modul erweitert mit Relief-Schattierungen - \n\t* Fehlerbehebungen (Routing-Verbesserungen) - - Änderungen in Version 1.1.4 - \n\t* Neugestaltung der Benutzeroberfläche - \n\t* weitere Fehlerbehebungen - - "Änderungen in 1.2.1: - \n\t*Fehlerbehebung für Geo Intent (Foursquare, c:geo) - \n\t*Fehlerbehebung für zitterndes Bild bei Navigation - \n\t*Andere kleine Fehlerbehebungen - \n\nÄnderungen in 1.2: - \n\t* Fehlerbehebungen (Navigation, Suche, AV-Aufzeichnung, Sprachansagen, einige Anzeigeverbesserungen) - \n\t* Einfachere Konfiguration des Bergkontur-Overlay (nur mit Höhenlinien-Plugin) - \n\t* Verarbeitung von maps.google.com-Links zu Orten - \n\t* Neues Widget (GPS info) - \n\t* Unterstützung von mehreren Fenstern auf aktuellen Samsung-Geräten hinzugefügt - \n\t* Kalman-Filter für Kompass - \n\t* Unterstützung für Pebble-Uhr - - Änderungen in 1.3: - \n\t * Holo-Theme (Anpassung des Theme) - - Änderungen in Version 1.4: - \n\t* Sortieren von Zwischenzielen für eine optimale Reihenfolge (Travelling salesman, Tür-zu-Tür) - \n\t* Offline-Suche von Straßennamen nun auch in angrenzenden Orten - \n\t* PlugIn zum Touren-Planen (Laden, Ändern und Speichern von GPX-Tracks) - \n\t* Neues Download-Menu (Herunterladen von Karten im Hintergrund) - \n\t* Für gespeicherte GPX-Spuren können nun Unterordner angelegt werden - \n\t* SRTM-Dateien (Höhenlinien) können nun auch gelöscht werden - \n\t* Nutzung der neuen Notes-Fehlermarker laut osm.org - - Änderungen in 1.5: - \n\t* Sprachansagen für Geschwindigkeitsbegrenzungen und -kameras - \n\t* Sprachansagen verbessert (Ansage von Straßennamen) - \n\t* Hochauflösende POI-Symbole - \n\t* Viele Verbesserungen der Bedienungsoberfläche - \n\t* Fehlerbehebungen für Entfernungsanzeige, GPX-Analyse, Behandlung von Zwischenzielen, Planungs-Widget, OSM-Schnittstelle, https-Kompatibilität - - Änderungen in 1.6: - \n\t* Unterstützung von Full-HD Geräten - \n\t* Unterstützung von transparentem Kartenhintergrund - \n\t* Anzeige geladener Regionalkarten und Herunterladen fehlender Karten direkt aus der Kartenansicht heraus - \n\t* Höhenliniendaten nun als Landes- oder Regionendateien - \n\t* Neue Welt-Basiskarte mit weltweit allen größeren Straßen, Eisenbahnen und größeren Flächen wie Wäldern - \n\t* Kartenlupenfunktion (langer Klick auf den +/- Knopf) - Hilfreich sowohl für Vektor wie auch Kachelkarten - \n\t* Definiere/Bearbeite Online Kachelquelle (spezifiziere Ablaufdatum) - \n\t* Unterstützung von uhrzeitabhängigen Geschwindigkeitsbegrenzungen (Niederlande) - \n\t* Schnellere Eingabe von Suchadressen - \n\t* Fehlerbehebungen bei Navigation und Kartenanzeige - - Änderungen in 1.7: - \n\t* WICHTIG: Die Kartendaten sollten neuer als Februar 2014 - \n\t* Komplett überarbeitete Routing-Funktion (schnell und präzise) - \n\t* Neuer Bildschirm zur Routenplanung (intuitiver und besser) - \n\t* HINWEIS: GPX-Routing ist verfügbar unter Route -> Einstellung - \n\t* Automatisches Ausblenden von Bedienelementen im Navigationsmodus - \n\t* Berechnung der Offline-Route zum ersten Punkt einer GPX-Route (\'Den Gesamten Track folgen\' Option - \n\t* Aktive Simulation in Tunneln - \n\t* Viele weitere kleinere Verbesserungen - \n\t* Einstellen der Sprachwiedergabe-Geschwindigkeit möglich - - Änderungen in 1.8: - * Berechnen von Routen zwischen Punkten eines GPX-Tracks möglich - * Änderung der Darstellung der herunterladbaren Länder (Unterstützung der Suche mittels lokaler Namen) - * Unterstützung von GPX/KML-Import (Umwandeln von KML zu GPX) - * Automatischer Navigationsstart nach einer Verzögerung - - - Datei kann nicht umbenannt werden. - Datei mit diesem Namen existiert bereits. - Mehrere passende POI-Kategorien gefunden: - Lokale Daten für POI-Suche nicht vorhanden. - Nach Namen suchen - Die POI-Datei \'%1$s\' wird nicht mehr benötigt und kann gelöscht werden. - Lokale Datei für POI-Änderungen nicht gefunden und konnte nicht erstellt werden. - OsmAnd+ aktualisieren - Der Server enthält Karten die mit ihrer derzeitigen Anwendungsversion nicht kompatibel sind. Um sie zu laden und zu verwenden, aktualisieren Sie bitte auf die neueste Version. - Umbenennen - Auf Karte anzeigen - Online-Nominatim - Standort wird ermittelt… - Standort (gefunden) - Adresse… - Favoriten… - Undefiniert - Festgelegt - Aktueller Standort… - Letzte Kartenposition - Suchen in der Nähe von: - In der Nähe suchen - Route als GPX-Track speichern - Route erfolgreich gespeichert als \'%1$s\'. - "Dateiname: " - Datei mit gleichem Namen besteht bereits. - Speichern - Route speichern - GPX Dateien an OSM-Gemeinschaft übermitteln. Die Dateien können dort zur Kartenverbesserung verwendet werden. - %1$d von %2$d Datei(en) erfolgreich hochgeladen. - Senden an OSM - Mehr Kartendetails - Einige Vektor-Daten (Straßen etc.) bereits bei kleineren Vergrößerungen zeigen - Favorit(en) erfolgreich gelöscht. - Es soll(en) %1$d Favorit(en) und %2$d Favoriten-Gruppe(n) gelöscht werden. Fortfahren? - Zu Hause - Freunde - Sehenswertes - Andere - Name - Kategorie - Nicht verwendet - Die offline-Weltkarte für kleine Vergrößerungen ist noch nicht vorhanden. Bitte ggf. World_basemap_x.obf herunterladen. - Keine Offline-Daten vorhanden (SD-Karte). Bitte ggf. herunterladen, damit Karten offline verwendet werden können. - "\n\nLang klicken für Optionen" - - Ausgabe - %1$d von %2$d Datei(en) erfolgreich deaktiviert. - %1$d von %2$d Datei(en) erfolgreich gelöscht. - %1$d von %2$d Datei(en) erfolgreich aktiviert. - Aktion %1$s: Keine Dateien vorhanden - %1$s: %2$s Datei(en). Fortfahren? - Karten-Management - Aktivieren - Deaktivieren - Löschen - Liste aktualisieren - Herunterladen - - POI-Daten - Adress-Daten - ÖPNV-Daten - Karten-Daten - - Deaktiviert - Sprachansagen (TTS) - Sprachansagen (Aufnahmen) - GPX-Daten - Online- und Kachel-Karten - Offline-Karten - POI-Daten - TTS Sprachansage - Neue Suche - Wähle Textgröße für Bezeichnungen in den Landkarten - Karten-Textgröße - Keine - Rendering Debug-Info - Flag zur Prüfung der Rendering-Performance (Geschwindigkeit des Offline-Bildaufbaus) - Entpacke neue Daten… - Ein Online-Navigationsdienst ist ausgewählt, aber es besteht keine Internetverbindung. - Sprache nicht unterstützt - Die gewählte Sprache wird von der installierten Android TTS-Engine nicht unterstützt. Soll im Market nach einer anderen TTS-Engine gesucht werden? Andernfalls wird die voreingestellte Standard-Sprache verwendet. - Fehlendes Sprachpaket - Es ist kein Sprachpaket für die gewählte Sprache installiert. Soll aus dem Market eines installiert werden? - Eine Offline-Vektor-Karte ist für diesen Ort vorhanden. - \n\t - \n\tZur Verwendung aktivieren: \'Menu\' → \'Karte konfigurieren\' → \'Kartenquelle…\' → \'Offline-Vektor-Karten\'. - Navi-Sprachausgabe - Ausgabemodus für Sprachansagen wählen (Systemabhängig) - Wie Anrufe - Wie Benachrichtigungen - Wie Medien/Musik - Kartenebene %1$s wurde nicht heruntergeladen, bitte nochmal laden. - Transparenz der Overlay-Karte ändern - Overlay-Transparenz - Transparenz der Hauptkarte ändern - Kartentransparenz - Transparenz ändern (0 - durchsichtig, 255 - undurchsichtig) - Underlay-Karte… - Underlay-Karte - Wähle Underlay-Karte - Overlay-Karte… - Keine - Overlay-Karte - Wähle Overlay-Karte - Karte schon installiert, Einstellungen werden aktualisiert - Kartenauswahl (Installation oder Aktualisierung) - Internet Verbindung erforderlich aber nicht verfügbar - Weitere installieren… - Offline-Karten - Aktuelles Kartenmaterial ist wichtig für die Offline-Kartenansicht, die POI und Adresssuche, und die Offline-Navigation. OsmAnd hat einen Karten-Manager für das Herunterladen oder Aktualisieren von Offline-Karten. - \n\nDas Herunterladen finden Sie über \'Einstellungen\' → \'Karten-Management\' → \'Herunterladen…\'. - \n\nNachdem die Liste der verfügbaren Regionen aus dem Internet geladen wurde, können Sie Daten zum Herunterladen oder Aktualisieren markieren. Bitte beachten Sie die Dateityp-Auswahloption am oberen Ende des Bildschirms, wählen Sie dort die gewünschte Datei-Kategorie (Reguläre Karten, Relief-Overlay, etc.) - \n\nDie Regionenliste kann durch Eingabe von Zeichen gefiltert werden. Alternativ zeigt die Option \'Filter Gespeicherte\' nur Daten an, für die bereits eine Version auf dem Gerät vorhanden ist. - \n\n\t* Einträge in \'grün\': Daten auf dem Gerät sind aktuell - \n\t* Einträge in \'blau\': Neuere Version zum Herunterladen verfügbar - \n\t* Kursive Darstellung: Auf dem Gerät deaktivierte Karten - - Minimaler Zoomlevel bis zu dem Offline-Vektor-Karten (statt Kacheln) verwendet werden sollen - Min. Vektor-Zoomlevel - Position teilen - Wollen Sie einen interessanten Ort Ihren Freunden oder Ihrer Familie mitteilen? Dazu einfach im \'Verwende Position\'-Kontextmenü die Option \'Position mitteilen\' auswählen. - \n\nZur Auswahl stehen die Übertragungswege: E-Mail, SMS oder das Kopieren der Koordinaten in die Zwischenablage. - - Favoriten - Sie können jeden beliebigen Ort als Favoriten speichern. - \n\nEinen Favoriten erstellen Sie im \'Verwende Position\'-Kontextmenü via \'Als Favorit speichern\'. Name und Kategorie sind dabei frei wählbar. - \n\nGespeicherte Favoriten sind leicht zugänglich via \'Menü\' → \'Meine Orte\'. Mittels Kontextmenü können Sie jeden Favoriten bearbeiten, löschen, als Navigationsziel wählen oder einfach nur auf der Karte anzeigen lassen. - \n\nSie können sich auch alle Ihre Favoriten gleichzeitig auf der Karte anzeigen lassen. Dazu in der Kartenansicht unter \'Menü\' → \'Karte konfigurieren\' einen Haken bei \'Favoriten\' setzen. - - Online OSM Klassifizierung mit Bildern" - Fehler in der Offlinesuche aufgetreten - Konnte geointent nicht verarbeiten: \'%s\' - Adresssuche mit Offline-Daten - Systemeinstellung - Anzeigesprache wählen - Anzeigesprache - Kartenquelle auswählen - Die Kartenquelle und die angezeigten Ebenen können in der Kartenansicht über \'Menü\' → \'Karte konfigurieren\' gewählt werden. - \n\nIm Menü \'Kartenquelle…\' können Sie die Karte wählen: Vorher heruntergeladene Offline-Vektor-Karten, vordefinierte Online-Kachel-Karten (aktivieren Sie das Plugin \'Online und Kachel-Karten\') oder manuell am Rechner (z.B. mit OsmAndMapCreator) erstellte Karten. - \n\nOsmAnd unterstützt auch benutzerdefinierte Quellen. - - Profil verwenden - OsmAnd unterstützt verschiedene (individuell anpassbare) Profile für unterschiedliche Einsatzzwecke. - \n\nDas Profil kann mit dem Profilknopf links unten (Bild Auto, Fahrrad oder Fußgänger) auf dem Kartenbildschirm gewählt werden, oder auch beim Berechnen einer Route (Transportmittel). - - \'Verwende Position\' Menü - Das \'Verwende Position\'-Kontextmenü enthält alle Aktionen im Zusammenhang mit einem Kartenpunkt. - \n\nEs wird über ein langes Drücken auf einen Punkt in der Karte (dann Antippen des Positionsmarkers), durch das Drücken des Trackball-Knopfes in der Kartenansicht, oder via \'Menü\' → \'Verwende Position\' aufgerufen (die letzten beiden Methoden beziehen sich auf den Kartenmittelpunkt). - \n\nLanges Drücken auf einen Positionsmarker entfernt diesen wieder. - - Weiter - Zurück - Längen- und Geschwindigkeitseinheiten auswählen - Längeneinheiten - Meilen/Fuß - Meilen/Yards - Kilometer/Meter - yd - ft - mph - mi - Position mitteilen mittels - Position: %1$s\n%2$s - Um die Position zu sehen, folge dem Web-Link %1$s oder Android Intent Link %2$s - Position senden - Position mitteilen - GPX-Wegpunkt \'\'{0}\'\' erfolgreich hinzugefügt - GPX-Wegpunkt an gespeicherten GPX-Track anfügen - GPX-Wegpunkt anfügen - Administratives - Barriere - Bildung - Notfall - Unterhaltung - Geld - Geocache - Gesundheit - Historisches - Landnutzung - Freizeit - von Menschenhand - Militär - Natur - Büro - Anderes - Geschäft - Sport - Gastronomie - Touristik - ÖPNV - Indiziere Adressen… - Indiziere Karte… - Indiziere POI… - Indiziere ÖPNV… - I/O Fehler aufgetreten - km - km/h - m - Überholtes Karten-Format \'\'{0}\'\' wird nicht mehr unterstützt - Autowerkstatt - Nächstgelegene POI - Eigener Filter - Lebensmittel - Für Touristen - Tankstelle - Online Namens-Finder - Lese gepufferte Kacheln… - "Nicht genügend Speicher für Index \'\'{0}\'\' " - Die Index-Version \'\'{0}\'\' wird nicht unterstützt - OsmAnd-Navigation > 20km - OsmAnd Offline-Navigation für große Entfernungen verwenden (experimentell) anstatt automatisch CloudMade zu nehmen - OsmAnd Offline-Navigation ist noch experimentell und funktioniert nicht gut für Entfernungen über 20 km.\n\nAls Navigationsdienst wird temporär online CloudMade verwendet. - Angegebener Ordner kann nicht gefunden werden. - Daten-Ordner - - Eine Vorversion von OsmAnd ist installiert. Alle Offline-Daten werden weiter unterstützt. Favoriten müssen aber in der Vorversion exportiert und anschließend in die neue Version importiert werden. - Build {0} erfolgreich installiert ({1}). - Lade Build… - Möchten Sie OsmAnd ({0} von {1} {2} MB) installieren? - Laden der Liste von OsmAnd-Builds ist fehlgeschlagen - Lade OsmAnd-Builds… - Auswählen eines OsmAnd-Builds für die Installation - Installations Version - Anwendung \'GPS Status\' ist nicht installiert. Soll diese installiert werden? - Keine Sprachansage verfügbar. Bitte unter Einstellungen ein Sprachpaket auswählen oder herunterladen. - Keine Sprachansage ausgewählt - Tag - Nacht - Sonnenaufgang/-untergang - Umgebungslicht-Sensor - Wähle das Kriterium für die Umschaltung der Tag/Nacht-Anzeige - Tag/Nacht-Modus - Lade {0} Datei(en) ({1} MB)? - {0} Positionen ausgewählt - Filter gespeicherte - Keine markieren - Alle markieren - Aktualisieren - Schnellste Route - Auswählen für schnellste oder deaktivieren für kürzeste Route - Bei Zoomlevel {0} lade {1} Kacheln\n ({2} MB) - Karte herunterladen - Wähle maximale zu ladende Vergrößerung - Diese Karte konnte nicht geladen werden - Kontin. Kartenaufbau - Wähle zwischen kontinuierlichem Kartenaufbau oder Bilddarstellung auf einmal - Fehler aufgetreten beim Rendern des gewählten Gebietes - Verwende Position… - Renderer erfolgreich geladen - Fehler aufgetreten: Renderer wurde nicht geladen - Vektor-Renderer - Wähle Anzeigemodus für Offline-Vektor-Karten - Zeige POI-Internetseite - Zeige POI-Telefon - Internetseite - Telefon - Filtern nach Typ - Hochauflösende Anzeige - Unterdückt Streckung (Unschärfe) von Kartenkacheln auf manchen Anzeigen - Standort noch nicht ermittelt - Herunterladen - Suche ÖPNV - ÖPNV-Ergebnisse (kein Ziel): - ÖPNV-Ergebnisse (Ziel {0}): - kein - ÖPNV-Suche zurücksetzen - Karte - Ansagen - Offline-Daten wurden nicht geladen - Navigation mittels GPX - GPX-Track… - Fehler beim Lesen der GPX-Daten - Offline-Vektor-Karten - Suche nach Verbindung an Haltestelle - Position:\n Lat %1$.5f\n Lon %2$.5f - OSM-Fehler - Bearbeite POI - Lösche POI - Nach Kompass - Nach Bewegungsrichtung - Keine Rotation (Norden ist oben) - Art der Kartenausrichtung wählen - Kartenrotation - Routendetails - Favoriten erfolgreich importiert - GPX-Datei mit den Favoriten nicht gefunden unter {0} - Favoriten erfolgreich unter {0} gespeichert - Keine Favoriten zu speichern - Import - Export - Fehler beim GPX-Laden - Bericht senden - Keine Offline-Daten auf der SD-Karte gefunden. Bitte versuchen Sie, die Region über das Internet zu laden. - Suchbegriff eingeben - Alles - ÖPNV-Linien - Danke an Yandex für die Überlassung von Verkehrsinformationen. - Yandex Verkehr - Route - Favoriten - OSM-Fehlerbericht (online) - ÖPNV-Haltestellen - POI… - Punkt-Namen - Kartenquelle… - Kartenebenen - Suche POI - - Trackball für Kartenbewegung benutzen - Trackball verwenden - Maximale Suchzeit für jede Hintergrund-Standortbestimmung - Maximale Suchzeit - OsmAnd Hintergrund-Navigationsdienst ausschalten - Wo bin ich? - OsmAnd-Navigationsdienst - Netzwerk - GPS - Sekunden - Min. - Art der Hintergrund-Standortbestimmung - Standortbestimmung - Die Hintergrundnavigation erfordert aktiviertes GPS. - Filter verstecken - Filter zeigen - Filter - Sprache ist an - Sprache ist aus - Nicht verwenden - Sprachpaket für Navigation auswählen - Sprachansagen - Sprachansagen werden initialisiert… - Sprachpaket-Version wird nicht unterstützt - Sprachpaket ist defekt - Das aktuelle Sprachpaket ist nicht verfügbar - - Die SD-Karte ist nicht verfügbar. \nKarte lässt sich nicht darstellen. - Die SD-Karte befindet sich im Nur-Lesen Modus. \nSie können nur vorgeladene Karten sehen. Der Internetdownload ist deaktiviert. - Datei wird entpackt… - rechts abbiegen, dann - scharf rechts abbiegen, dann - halb rechts abbiegen, dann - links abbiegen, dann - scharf links abbiegen, dann - halb links abbiegen, dann - Wenden - Geradeaus - Weiter - Offline-Daten herunterladen - Danke, dass Sie OsmAnd verwenden. Für viele Funktionen sind Offline-Karten erforderlich, die Sie in den Einstellungen unter \'Karten-Management\' herunterladen oder selbst erstellen können. Danach können Sie Landkarten ansehen, Adressen, POI und ÖPNV finden. - Warte auf Signal… - Suche in der Nähe - Suche um Aufenthaltsort - Lagesensor - Hochformat - Querformat - Anzeigeausrichtung - Ausrichtung der Landkartenanzeige - Ändern von Öffnungszeiten wird nicht unterstützt - Füge neue Regel hinzu - Strecken - Haltestelle - Haltestellen - Anschließende Route - Vorherige Route - Suche beenden - Wähle Haltestelle zum Aussteigen - anschließende Strecke - vorherige Strecke - zu passierende Haltestellen - Streckenlänge - Öffentlicher Personenverkehr - OK - Zeige öffentliche Haltestellen auf der Karte - Zeige Haltestellen - Navigationsanwendung OsmAnd - POI-Daten wurden erfolgreich aktualisiert ({0} wurden geladen) - Fehler beim aktualisieren der Offline-Daten - Fehler beim Herunterladen der Daten vom Server - Für dieses Gebiet sind keine POI gespeichert - Aktualisierung von POI ist für kleine Zoomeinstellungen nicht verfügbar - POI aktualisieren - Wollen Sie die Daten via Internet aktualisieren? - Ort: {0} - Straße: {0}, {1} - Querstraße: {0} x {1} in {2} - Hausnr.: {0}, {1}, {2} - Favorit - Alles löschen - Verlauf - Daten hochladen… - Hochladen… - Kein Treffer - Suchen… - Adresse suchen… - Online-Suche mit OSM Nominatim - Hausnummer, Straße, Ort - Offline-Suche - Internet verwenden - Max. Online-Zoom - Maximale Vergrößerung bis zu der Online-Karten-Daten (Kacheln) aus dem Internet geladen werden - Gesamtentfernung: %1$s\nReisezeit: %2$d h %3$d min - Online- oder Offline-Dienst zur Routenberechnung wählen - Navigationsdienst - Auf den Daten-Ordner auf der SD-Karte kann nicht zugegriffen werden! - Herunterladen {0} - {1}? - Offline Daten für {0} existieren schon ({1}). Wollen Sie die überschreiben ({2})? - Adresse - Daten erfolgreich heruntergeladen - I/O Fehler aufgetreten - - Herunterladen… - Die Liste der verfügbaren Regionen wird geladen… - Die Liste der Regionen wurde von osmand.net nicht geladen. - Suche war erfolglos. Karten für nicht vorhandene Regionen können selbst erstellt werden, siehe http://osmand.net. - Auf Karte anzeigen - Favorit wurde bearbeitet - Keine Favoriten vorhanden - Ersetzen - Route nur anzeigen - Navigation starten - Nutzerprofil: - Bitte erst ein Ziel wählen - Navigation - GPS-Status anzeigen - Öffnungszeiten - Öffne Changeset… - Schließe Changeset… - Übertrage Knoten… - POI wird geladen… - Autorisierung fehlgeschlagen - fehlgeschlagen - Konvertiere einheimische/englische Namen… - Lade Straßen und Hausnr.… - Lade Postleitzahlen… - Lade Straßen… - Lade Orte… - - POI - Fehler während des Speicherns aufgetreten - Fehler während der Routenberechnung - Während der Routenberechnung ist ein Fehler aufgetreten - Fehler: Die berechnete Route ist leer - Route neu berechnet, Entfernung - Sie haben Ihr Ziel erreicht - Koordinaten sind ungültig! - Zurück zu OsmAnd - Schließen - Daten werden geladen… - Lese lokale Daten… - Die vorherige Programminstanz war abgestürzt. Logdatei unter {0}. Fehler bitte melden und Logdatei anhängen. - GPX-Track wird auf der SD-Karte gespeichert… - Abgeschlossen - Offline-Vektor-Karten und Adressdaten von SD-Karte neu laden - Offline-Daten erneut einbinden - Lade oder aktualisiere Offline-Vektor-Karten und Adressdaten aus dem Internet - Offline-Daten herunterladen - Internet zur Routenberechnung verwenden - Online-Navigation - Einstellungen für OpenStreetMap.org (OSM) - Dateneinstellungen festlegen: Sprache, Daten laden oder aktualisieren - Daten - Karteneinstellungen festlegen: Kartenquelle, Ausrichtung, Markerposition, Bildschirmausrichtung - OSM-Bearbeitung - Weitere Einstellungen - Einstellungen - Karte (Kacheln) aktualisieren - Kartenteile (Kacheln) aktualisieren - Ziel - OSM-Fehlerberichte anzeigen - OSM-Fehler - Markierte Orte - Als Favorit speichern - Englische oder einheimische Namen in der Karte verwenden - Englische Namen - Anwendungseinstellungen - Adresse suchen - Hausnr. wählen - Straße wählen - Ort wählen - Land wählen - - Blickrichtung einblenden - 3D-Kartenansicht verwenden - 3D-Kartenansicht - Zuletzt gewählte POIs auf der Karte anzeigen - POIs anzeigen - Online- oder offline-Quelle für Karte (Kacheln) - Kartenquelle (Kacheln) - Kartenquelle - Internet verwenden - Standort anzeigen - Karte - Einstellungen - GPS-Koordinaten auf der Karte anzeigen - Fehlende Kartenteile aus dem Internet nachladen - Navigationsanwendung OsmAnd - Beenden - Karte - Einstellungen - Meine Orte - Suche - Suche - POI wählen - Weitere Ergebnisse - Suche Straße inkrementell - Suche Hausnr. inkrementell - Wähle Region - Wähle Querstraße - Umliegende Einrichtungen - Karte ansehen - Auto - Fahrrad - Fußgänger - Mitte - Unten - Breiten- und Längengrad im folgenden Format angeben (D - Grad, M - Minuten, S - Sekunden) - Breitengrad - Längengrad - DDD.DDDDD - DDD MM.MMMMM - DDD MM SS.SSSSS - Auf Karte anzeigen - Abbrechen - Adresseingabe - Region - Ort - Straße - Hausnummer - Hausnummer - Querstraße - Position - Als Favorit speichern - Karte aktualisieren - OSM Fehlerbericht einsenden - POI einsenden - Ja - Abbrechen - Übernehmen - Hinzufügen - Nein - Geben Sie diesem Punkt einen Namen - Favorit - Favorit Punkt \'\'{0}\'\' wurde erfolgreich hinzugefügt. - Favorit bearbeiten - Favorit löschen - Wollen Sie den Punkt \'%s\' wirklich löschen? - Der Punkt {0} wurde erfolgreich gelöscht. - Eingabetext des Fehlers - OSM-Fehlerbericht erfolgreich erstellt - Fehler: Fehlerbericht wurde nicht erstellt - Kommentar hinzufügen - Nachricht - Autor - Kommentar dem OSM-Fehlerbericht hinzufügen - Kommentar hinzufügen - Kommentar wurde erfolgreich hinzugefügt - Fehler: Kommentar wurde nicht hinzugefügt - OSM-Fehlerbericht schließen - OSM-Fehlerbericht schließen - Schließen - OSM-Fehlerbericht wurde hinzugefügt - Fehler: OSM-Fehlerbericht wurde nicht erstellt - POI bearbeiten - POI erstellen - POI wurde nicht gefunden oder die Einrichtung ist kein einzelner Knoten - Sicher löschen: {0} (Kommentar eingeben)? - POI löschen - Löschen - POI wurde erfolgreich gelöscht - hinzufügen - ändern - Aktion {0} erfolgreich abgeschlossen. - Unerwarteter Fehler beim Ausführen von {0} aufgetreten. - I/O Fehler während {0} aufgetreten. - Informationen über den Knoten wurden nicht geladen - Name - Öffnungszeiten - Kommentar - POI Änderung - Alle anderen Tags werden beibehalten - Ändern - Zurücksetzen - Filtern - Löschen - Speichern als - Ausgewählten Filter wirklich löschen? - Der Filter {0} wurde gelöscht - Der Filter {0} wurde erstellt - Alles markieren - OsmAnd offline Navigation steht zur Zeit nicht zur Verfügung. - Linksverkehr - Auswählen für Länder mit Linksverkehr - Hier tippen um Offline-Karten herunterzuladen oder zu aktualisieren. \nAntippen bestehender Einträge liefert Details, drücken und halten ermöglicht deaktivieren, umbenennen oder löschen. Aktuelle Daten auf dem Gerät (%1$s frei): - Startpunkt ist noch nicht ermittelt - Möchten Sie den Datei-Download abbrechen? - Die Basis-Karte wird für die korrekte Benutzung der Anwendungen benötigt und ist für das Herunterladen vorausgewählt. - - Routing-Daten - Format: - POI-Suche (Point of Interest) - Adress-Suche - Koordinaten - ÖPNV-Suche - Favoriten-Suche - Suchverlauf - Liste neu laden - Startpunkt zu weit von nächster Straße entfernt. - Mitgeteilter Standort - Fahrzeug vom Parkplatz abholen - Warnung - Hinweis zum Abholen des Fahrzeugs wurde vormals zum Kalender hinzugefügt. Hinweis besteht solange, bis dieser manuell gelöscht wird. - Zeitlimit für Parken setzen - Soll der Standort des geparkten Fahrzeugs gelöscht werden? - Parkplatz-Marker löschen - Parkplatz-Eigenschaft wählen - zeitlich beschränkt - zeitlich unbeschränkt - Eintrag in Kalender hinzufügen - zeitlich begrenztes Parken - zeitlich unbegrenztes Parken - Standort des geparkten Fahrzeugs. %1$s - Fahrzeug abholen um: - PM - AM - Park-Position - Dieses Modul speichert den Standort eines geparkten Fahrzeugs. - Parkplatz-Standort-Plugin - Parkplatz-Standort festlegen - Parkplatz-Standort löschen - Öffentlich - Erkennbar - Verfolgbar - Privat - Belegter Speicher %1$s MB (Android Limit %2$s MB, Dalvik %3$s MB). - Belegter Speicher - Insgesamt durch die Anwendung belegter nativer Speicher %1$s MB (Dalvik %2$s MB, anderer %3$s MB). Proportionaler Speicher %4$s MB (Android Limit %5$s MB, Dalvik %6$s MB). - Gesamter nativer Speicher - Geschwindigkeit für Routen-Simulation wählen - Stunde(n) - Minuten - Das Auto wurde hier geparkt: - Route wird neu berechnet sobald Standort ermittelt - Vorherige Navigation wurde nicht beendet. Der Route weiter folgen? (%1$s Sekunden) - - Radarfallen anzeigen - Verkehrswarnungen anzeigen - Vermeide Mautstraßen - Straßenname - Konfiguration - - Wo bin ich - Bildschirm sperren - Kompass - Statusleiste: - Auf Voreinstellung setzen - Rechte Seite: - Linke Seite: - Parken - GPX-Aufnahme - Geschwindigkeit - Ziel - Höhe - Verbleibende Zeit - Nächste Abzweigung - Nächste Abzweigung (klein) - Übernächste Abzweigung - Mini-Routenkarte - Bildschirm sperren - Bildschirm entsperren - Bildschirm gesperrt - Aufwachintervall setzen: - Tag/Nacht-Modus - Karten-Zusatzoptionen - Kartendarstellung - - Anzeige konfigurieren - Fahrspuren anzeigen - Vermeide ungeteerte Straßen - Vermeide Fähren - Vermeide … - Bestimmte Straßentypen von der Routenberechnung ausschließen - Routen in Leuchtfarbe - Maßstab - Weitere Elemente: - Blickrichtung einblenden - Kartendarstellung - Transparentes Layout - - GPS-Aufwachintervall: %s - Kontinuierlich - Zum Bildschirm Entsperren Schloss antippen - POI-Filter erstellen - E-Mail - Eintrag hinzufügen - Ergänzende Angaben… - Parkplatz - Notfall - ÖPNV - Unterhaltung - Unterkunft - Restaurants - Sehenswürdigkeiten - Sie sind an Ihrem Zwischenziel angekommen - Als Zwischenziel setzen - Zwischenziel - Endpunkt zu weit von der nächsten Straße entfernt. - Zwischenziel %1$s zu weit von der nächsten Straße entfernt. - Als letztes Zwischenziel setzen - Als erstes Zwischenziel setzen - Zwischenziel %1$s - Zwischenziele - Als erstes Zwischenziel einfügen - Als letztes Zwischenziel einfügen - Zielpunkt ersetzen - Sie haben bereits einen Zielpunkt gewählt. - Zwischenziel löschen - Aufzeichnungsdienste - Keine Route - Zwischenziel %1$s - Richtung zum Ziel anzeigen - Berechne eventuell nicht optimale Routen über lange Distanzen - Bitte GPS-Ortung in den Einstellungen aktivieren - "Standort-Aufzeichnungs-Modul aktivieren, um Aufzeichnungsdienste (GPX-Aufnahme, Online-Tracking) zu verwenden" - Barcode-Scanner-Anwendung nicht installiert. Soll im Play-Store danach gesucht werden? - Änderungssatz schließen - unfertig - Höhenlinien-Plugin - Ermöglicht das Laden von offline Höhenlinien und Relief-Schattierungen (\'Einstellungen\ -> \'Karten-Management\ -> \'Herunterladen\ -> \'Kartentyp wählen\). - Höhenlinien-Plugin - Bitte überlegen Sie, ob Sie durch den Kauf des Höhenlinien-Plugins im Play-Store die weitere Entwicklung unterstützen wollen. - Andere Karten - Höhenlinien - Bildgröße der Kamera - interne Größe der Kamerabilder bestimmen - Video aufzeichnen - Audio aufnehmen - Legt fest, welche Aktion das Widget standardmäßig ausführt - Standard Widget Aktion - Wählen Sie ein Video-Ausgabeformat\n(3GP oder MP4) - Video-Ausgabeformat - Externen System-Recorder für Video-Aufnahmen verwenden - System-Recorder - Konfigurieren von Audio- und Video-Einstellungen - Stopp - Audio/Video-Einstellungen - Start - Foto aufnehmen - Externe System-Kamera für Foto-Aufnahmen verwenden - System-Kamera - Bei Anfrage auswählen - Das Dropbox-Plugin ermöglicht Ihnen eine Synchronisation von Tracks und Audio/Video-Notizen mit Ihrem Dropbox-Konto. - Dropbox-Plugin - Reihenfolge ändern - - Die Kamera ist nicht verfügbar - Externen Player öffnen - Wollen Sie diese Aufnahme löschen? - nicht verfügbar - Wiedergabe - Aufnehmen - Fehler bei der Aufnahme - Audio/Video wird aufgenommen. Zum Stoppen drücken Sie das A/V-Widget. - Aus der angegebenen Aufnahme wird abgespielt.\n%1$s - Audio-Notiz aufnehmen - Video-Notiz aufnehmen - Aufnahme %1$s %2$s von %3$s - Anzeigen - Foto %1$s von %2$s - Foto aufnehmen - Aufnahme kann nicht abgespielt werden - Aufnahme löschen - - Aufnahme-Ebene - Audio/Video-Notiz - OsmAnd-Plugin für Offline-Höhenlinien - Entfernungsmessung - Strecken-Aufzeichnung - Konfiguration der Strecken-Aufzeichnung - GPX - Stopp - Audio-Notiz - Audio/Video-Notiz unterwegs aufnehmen - Audio/Video-Notizen - Ein Ort, der mit der Notiz verbunden wird, wurde nicht angegeben. Benutzen Sie \'Verwende Position…\', um der Notiz einen Ort zuzuweisen - Das Plugin beinhaltet Höhenlinien, die in Offline-Karten von OsmAnd angezeigt werden können. Die globalen Daten (zwischen N 70° und S 70°) basieren auf Messungen von SRTM (Shuttle Radar Topography Mission) und ASTER (Advanced Spaceborne Thermal Emission and Reflection Radiometer), einem bildgebenden System des Satelliten Terra, dem Flaggschiff des NASA-Erd-Beobachtungsprogramms. ASTER ist der Erfolg der Zusammenarbeit zwischen der NASA, dem japanischen Ministerium für Wirtschaft, Handel und Industrie (METI) und dem japanischen Raumfahrtsprogramm (J-spacesystems). - Wollen Sie die Navigation wirklich beenden? - Wollen Sie das Ziel (inkl. Zwischenziele) wirklich löschen? - Auswählen um Routen fehlerfrei zu berechnen. Diese Funktion ist weiterhin auf kurze Entfernung begrenzt und langsam. - Präzises Routing (experimentell) - Audio/Video-Daten - Autobahnen bevorzugen - Bevorzugen von … - Autobahnen bevorzugen - keine - ausgewählt - nicht ausgewählt - Karte - Ankunftszeit - GPS-Info - - Straße - Hausnummer - Aktivieren Sie Tracking und die Navigation im Schlaf-Modus (Bildschirm aus). Das GPS-Gerät wird regelmäßig aktiviert. Zeigt Ihre Einstellungen zum Aufzeichnen Ihrer Wege als lokale GPX-Datei oder online bei einem Web-Service. - Aufzeichnungs-Dienste - Theme der Anwendung auswählen - Eingabehilfen-Einstellungen - Adresse auswählen - Favorit auswählen - OSM-Bearbeitungen - Andere Aktionen - Theme der Anwendung - Derzeit besteht keine WLAN-Verbindung. Soll das Herunterladen mit der aktuellen Datenverbindung erfolgen? - Ziel löschen - Andere - In dieser kostenlosen Version können noch %1$d Dateien heruntergeladen werden. - Es können noch %1$d Dateien herunter geladen werden. - Vollversion - Navigation stoppen - Route verwerfen - Kalman-Filter verwenden, um Kompass-Ungenauigkeiten auszublenden - Kalman-Filter verwenden - Eingabehilfen-Modus: Bitte zuerst Ziel auswählen - Magnetsensor statt Lagesensor zur Kompassermittlung verwenden - Magnetsensor verwenden - Höhenlinien-Daten - Bitte warten Sie, der laufende Task wird beendet - Herunterladen… - OSM-Änderungsdatei erfolgreich erzeugt %1$s - Fehler beim Zwischenspeichern der bearbeiteten OSM-Daten - Als OSM-Daten-Änderung zwischenspeichern - Punkt löschen - Zeit - Genauigkeit - Geschwindigkeit - Höhe - Alle Punkte löschen - Anordnung der Zwischenziele auf der Route zum Ziel wurde optimiert. - Punkt - Erstelle GPX-Routen (oder verwende/modifiziere bereits vorhandene GPX-Daten) um die Entfernung zwischen zwei Orten zu messen. - Entfernungsmesser & Routen-Planer - Nicht erneut anzeigen - Als GPX-Datei speichern - Vorhandene GPX-Datei öffnen - Straßenname in weiteren Orten suchen - Sortieren (Tür-zu-Tür) - * Tippen, um einen Punkt zu setzen.\n * Lange auf die Karte tippen, um einen vorigen Punkt zu löschen.\n * Lange auf einen Punkt tippen, um eine Beschreibung zu lesen oder hinzuzufügen.\n * Mehr Aktionen durch Tippen auf das Entfernungsmesser-Widget. - Messung beginnen - Messung beenden - Weitere Messung anlegen - Zuerst Stadt oder Straße auswählen - Ziel %1$s - Kamera-Fokus-Typ - Internen Fokus-Typ für die Kamera auswählen - Autofokus - Fokus auf unendlich setzen - Die Kamera kontinuierlich scharf stellen - Ton bei Auslösung abspielen - Auswählen, ob beim Aufnehmen eines Fotos ein Ton abgespielt werden soll - - Höchstgeschwindigkeit ansagen - Blitzer ansagen - Verkehrswarnungen ansagen - Bitte OSM-Nutzername und Passwort in den Einstellungen eingeben - Zwischenziele löschen - Zwischenziele behalten - Es sind bereits Zwischenziele gesetzt. - Navigiere zu - "Karte: " - nach: - über: - von: - OSM-Passwort (optional) - Navigiere von - Hyperfokaler Fokus - Erweiterte Schärfentiefe (EDOF) - Makro-Fokusmodus (Nahaufnahme) - Ansagen von … - Einstellungen für Ansagen zu Straßennamen, Verkehrswarnungen, Blitzern oder Höchstgeschwindigkeit - Straßennamen ansagen (TTS) - FPS-Debug-Info - Region zum Fahren wählen: USA, Europa, GB, Asien etc. - Japan - USA - Kanada - Europa und Asien - GB, Indien, Australien u.a. - GPX-Wegpunkte ansagen - Fahr-Gebiet - Version : - Über - Versionsinfo, Lizenz, Projekt-Mitglieder - Hilfe - Zooms heruntergeladen: %1$s - Gültigkeit endet in (Minuten): %1$s - Herunterladbar: %1$s - Maximum Zoom: %1$s - Minimum Zoom: %1$s - Kacheldaten: %1$s - Kachelquelle %1$s wurde erfolgreich gespeichert - Elliptischer Merkator - Max Zoom - Ablaufzeit (Minuten) - Min Zoom - URL - Wähle vorhandene… - Name - Definieren/Bearbeiten… - und - oder - GPS Status - Auswahl merken - Zuerst die Route berechnen - Simulation anhand einer GPX-Spur - Simulation anhand berechneter Route - Wandern - Motorrad - Boot - Flugzeug - Auf http://code.google.com/p/osmand/wiki/FAQ finden sich häufige Fragen und Antworten. - Häufige Fragen (FAQ) - Es sollen %1$d Änderungen von OSM-Daten gelöscht werden. Fortfahren? - Alles löschen - Schifffahrtsobjekte - Wähle sichtbare Nutzerprofile der Anwendung - Anwendungsprofile - Autobahnen bevorzugen - Autobahnen bevorzugen - Kürzeste Strecke - Kürzeste Strecke benutzen - Mautstraßen vermeiden - Mautstraßen vermeiden - Unbefestigte Wege meiden - Unbefestigte Wege meiden - Fähren vermeiden - Fähren vermeiden - Autobahnen vermeiden - Autobahnen vermeiden - Gewichtsbeschränkung - Angabe eines Fahrzeuggewichts für die Zulässigkeit Route - "Seit Android 4.4 (KitKat) können neue Karten-Downloads nicht mehr am Speicherort früherer Android-Versionen gespeichert werden (%s). Jetzt den zulässigen Speicherort wählen und alle OsmAnd-Dateien dorthin kopieren? -\n Hinweis 1: Die ursprünglichen Dateien bleiben hiervon unberührt, können aber nachfolgend manuell gelöscht werden. -\n Hinweis 2: Die Dateien können dann nicht mehr von OsmAnd und OsmAnd+ gemeinsam genutzt werden." - Soll Osmand auch die Dateien an den neuen Speicherort verschieben? - Kopieren der Datei (%s) an den neuen Speicherort… - Kopieren der Osmand-Dateien zum neuen Speicherort (%s) - Kopiere Osmand-Dateien - Berechne Osmand-Offline-Route - LKW - Navigations-Einstellungen - Einstellungen für Routenberechnung - Sprachgeschwindigkeit der TTS-Ausgabe - Sprachgeschwindigkeit - Schnelle Routenberechnung fehlgeschlagen (%s), Rückfall auf langsame Berechnung. - Zwei-Phasen-Routing für Auto-Navigation deaktivieren - Komplexes Routing deaktivieren - Auf Karte auswählen… - Favorit… - Routing-Einstellungen - Routen-Informationen - OsmAnd-Route ohne Internetverbindung berechnen - Soll der angezeigte Track zum Navigieren genutzt werden? - Als Ziel hinzufügen - GPX-Datei auswählen… - Ziel wählen - Musikwiedergabe bei Navigationsanweisung unterbrechen - Position immer in Bildschirmmitte anzeigen - Stimme - Verschiedene - Teilen der Route als GPX-Datei - Route über OsmAnd teilen - Ländereinstellungen - Musikwiedergabe unterbrechen - Ungültiges Format: %s - Teilen - Über OsmAnd geteilte Favoriten - Route zwischen Punkten berechnen - Niemals - Navigationsanweisungen in regelmäßigen Abständen wiederholen - Wiederholen von Navigationsanweisungen - Zielankündigung - Wann soll die Ankunft am Ziel angekündigt werden? - Tage - Export - GPX-Datei speichern oder zu den Favoriten importieren? - Speichern - Ausgewählte Tracks - Alle Tracks - Meine Favoriten - Meine Orte - Meine Orte - Lade %1$s … - Aktuelle Zeit - \n\nZur Darstellung auf der Karte Antippen und Halten - Navigation automatisch starten - ausgewählte - als Favoriten-Gruppe speichern - Wegpunkte auswählen - Sortieren nach Entfernung - Sortieren nach Namen - Auf Karte anzeigen - Zoom-Tasten bei Navigation anzeigen - Zoom-Tasten anzeigen - Download-Ziel nicht gefunden. Bitte Internet-Verbindung überprüfen. - Keine GPX-Spur ausgewählt. Zum Auswählen auf eine Spur lange drücken. - Deselektieren - Zum Anzeigen auswählen - Gebäude ausblenden - Fußwege ausblenden - Text ausblenden - Wälder und Gebüsch ausblenden - Gebäude ab Zoomstufe 15 anzeigen - Mehr Details in Karte - Weniger Details in Karte - Zugangsbeschrünkungen verbergen - Zugangsbeschränkungen anzeigen - Straßenqualität anzeigen - Straßenoberfläche anzeigen - Fahrrad-Routen anzeigen - Stunden her - Minuten her - Sekunden her - Bevorzugte Sprache für Beschriftungen auf der Karte (ist diese nicht verfügbar, wird auf Englisch oder lokale Namen gewechselt) - Bevorzugte Sprache für Karten-Beschriftung - Lokale Namen - U-Bahn-Linien - GPS-Aufwach-Intervall - Weiter - Alle löschen - - - Afrikaans - Albanisch - Arabisch - Weißrussisch - Bulgarisch - Bosnisch - Katalanisch - Tschechisch - Walisisch - Dänisch - Deutsch - Griechisch - Englisch - Spanisch - Baskisch - Persisch - Finnisch - Französisch - Hebräisch - Hindi - Kroatisch - Ungarisch - Armenisch - Indonesisch - Italienisch - Hebräisch - Japanisch - Georgisch - Koreanisch - Litauisch - Lettisch - Marathi - Niederländisch - Norwegisch - Polnisch - Portugiesisch - Portugiesisch (Brasilien) - Rumänisch - Russisch - Sardinisch - Slowakisch - Slowenisch - Serbisch - Schwedisch - Suaheli - Türkisch - Ukrainisch - Vietnamesisch - Chinesisch - Chinesisch (vereinfacht) - Chinesisch (traditionell) - - -OsmAnd (OSM Automated Navigation Directions) ist eine Karten- und Navigations-App mit Zugang zu den freien, weltweit verfügbaren und hoch qualitativen Daten von OpenStreetMap (OSM). Alle Kartendaten können für die Offline-Nutzung auf der Speicherkarte oder den internen Speicher des Endgerätes gespeichert werden. Über das GPS des Endgerätes bietet OsmAnd eine Routing-Funktion mit visueller Anzeige und Sprachausgabe für KFZ, Fahrräder und Fußgänger. Alle Hauptfunktionen funktionieren sowohl online als auch offline (ohne Verbindung zum Internet). - -Der Funktionsumfang beinhaltet unter anderem: - -Navigation - - funktioniert online (schnell) und offline (kein Roaming-Gebühren im Ausland) - - exakte Sprachausgabe (aufgenommen und synchronisierte Stimmen) - - optionale Fahrspurführung, Anzeige der Straßennamen und der geschätzten Ankunftszeit - - Unterstützung von Zwischenzielen auf ihrer Route - - automatische Neuberechnung der Route, sobald von der ursprünglichen Route abgewichen wird. - - Suche nach Punkten anhand der Adresse, dem Typ (z. B. Restaurant, Hotel, Tankstelle, Museum) oder geografischen Koordinaten - -Kartenansicht - - Anzeige des Standpunktes und der Blickrichtung auf der Karte - - optionale Ausrichtung der Karte anhand des Kompasses oder der Bewegungsrichtung - - Speichern der wichtigsten Punkte als Favorit - - Anzeige von POI (Point Of Interests) - - Darstellung spezieller Online-Karten - - Darstellung der Satelliten-Ansicht (auf Bing basierend) - - Darstellung verschiedener Überlagerungen wie GPS-Tracks und weitere Karten mit einstellbarer Transparenz - - Anzeige von Ortsnamen in Englisch, der lokalen Sprache oder phonetischer Aussprache - -Nutzen von Daten von OpenStreetMap und Wikipedia - - qualitativ hochwertige Informationen der besten frei verfügbaren Projekte der Welt - - globale Karten von Openstreetmap, verfügbar nach Land oder Region - - Wikipedia POIs, praktisch für Stadtbesichtigungen (nicht verfügbar in der kostenfreien Version) - - unlimitierter kostenloser Download direkt in der App (Download-Limit in der kostenfreien Version: 16 Karten) - - immer aktuelle Karten (mindestens eine aktualisierung pro Monat) - - kompakte Offline-Vektor-Karten - - Auswahl zwischen kompletten Karten und reinen Straßenkarten (Beispiel: Die gesamte Karte für Japan ist 700 MB, die reine Straßenkarte 200 MB groß) - - zusätzliche Unterstützung von Online-karten oder zwischengespeicherten Karten-Abschnitten - -Sicherheitsfunktionen - - optionaler automatisierter Wechsel zwischen Tag- und Nachtansicht - - optionale Einblendung der aktuellen Geschwindigkeitsbeschränkung mit Erinnerung falls diese überschritten wird - - optionales geschwindigkeitsabhängiges Zoomen der Karte - - Teilen des Standortes, so dass Ihre Freunde sie finden können - -Fahrrad- und Fußgängerfunktionen - - - die Karten beinhalten Fuß, Wander- und Fahrradwege, gut geeignet für Outdoor-Aktivitäten - - spezielle Routing und Darstellungsoptionen für Radfahrende zu Fuß gehende - - optionales Einblenden von Haltestellen des öffentlichen Nahverkehrs (Bus, Straßenbahn, Zug…) - - optionales Aufzeichenen des zurückgelegten Weges als lokale GPX-Datei oder bei einem Online-Service - - optionale Darstellung der Geschwindigkeit und aktuelle Höhe - - Darstellung von Höhenlinien und Bergschattierungen (über zusätzliches Plugin) - -direktes Beitragen zu OpenStreetMap - - Melden von Fehlern - - Hochladen von GPX-Tracks zu OSM direkt aus der App - - Hinzufügen von POIs und hochladen dieser zu OSM (oder später, wenn gerade offline) - - optionales Aufzeichnen der Strecke (auch im Hintergrundmodues (während das Endgerät im Ruhemodus ist) - -OsmAnd ist OpenSource und wird aktiv weiterentwickelt. Jeder kann dazu beitragen, indem er Fehler mitteilt, die Übersetzungen verbessert oder neue Funktionen programmiert. Das Projekt befindet sich in einem Status der kontinuierlichen Verbesserung aufgrund der ständigen Interaktion zwischen Entwickler und Nutzer. Der Fortschritt des Projektes ist auch abhängig von finanzieller Unterstützung um die Entwicklung, das Programmieren und Testen neuer Funktionen zu ermöglichen. Durch den Kauf von OsmAnd+ können Sie helfen die App noch besser zu machen. Es ist auch möglich für spezielle neue Funktionen oder die allgemeine Entwicklung auf osmand.net zu spenden. - -Durchschnittliche Kartenabdeckung und -qualität: - - Westeuropa: **** - - Osteuropa: *** - - Russland: *** - - Nordamerika: *** - - Südamerika: ** - - Asien: ** - - Japan und Korea: *** - - mittlerer Osten: ** - - Afrika: ** - - Antarktis: * - -Liste der Unterstützten Länder (annähernd Weltweit!): -Afghanistan, Ägypten, Albanien, Algerien, Andorra, Angola, Anguilla, Antigua and Barbuda, Äquatorialguinea, Arabische Republik Sahara, Argentinien, Armenien, Aruba, Aserbaidschan, Äthiopien, Australien, Bahamas, Bahrain, Bangladesch, Barbados, Belgien, Belize, Benin, Bermuda, Bhutan, Bolivien, Bonaire, Bosnien und Herzegowina, Botswana, Brasilien, Brunei, Bulgarien, Burkina Faso, Burundi, Chile, China, Costa Rica, Curaçao, Dänemark, Deutschland, Dominica, Dominikanische Republik, Dschibuti, Ecuador, El Salvador, Elfenbeinküste, Eritrea, Estland, Fidschi, Finnland, Frankreich, Französisch-Guayana, Französisch-Polynesien, Gabun, Gambia, Georgien, Ghana, Gibraltar, Grenada, Griechenland, Grönland, Großbritannien, Guadeloupe, Guam, Guatemala, Guernsey, Guinea, Guinea-Bissau, Guyana, Haiti, Honduras, Hong Kong, Indien, Indonesien, Insel Man, Irak, Iran, Irland, Island, Israel, Italien, Jamaika, Japan, Jemen, Jersey, Jordanien, Jungferninseln, Kambodscha, Kamerun, Kanada, Kap Verde, Kasastan, Katar, Kenia, Kirgistan, Kiribati, Kolumbien, Komoren, Kongo, Kroatien, Kuba, Kuwait, Laos, Lesotho, Lettland, Libanon, Liberia, Libyen, Liechtenstein, Litauen, Luxemburg, Macao, Madagaskar, Malawi, Malaysia, Malediven, Mali, Malta, Marokko, Martinique, Mauretanien, Mauritius, Mayotte, Mazedonien, Mexiko, Mikronesien, Moldau, Monaco, Mongolei, Montenegro, Montserrat, Mosambik, Myanmar, Namibia, Nauru, Nepal, Neukaledonien, Neuseeland, Nicaragua, Niederlande, Niederländische Antillen, Niger, Nigeria, Nordkorea, Norwegen, Oman, Österreich, Osttimor, Pakistan, Palau, Palästinensische Autonomiegebiete, Panama, Papua-Neuguinea, Paraquay, Peru, Philippinen, Polen, Portugal, Puerto Rico, Ruanda, Rumänien, Russland, Saint-Barthélemy, Saint Helena, Saint Helena, Ascension und Tristan da Cunha, Saint Kitts und Nevis, Saint Lucia, Saint Martin, Saint-Pierre und Miquelon, Saint Vincent und die Grenadinen, Sambia, Samoa, San Marino, Saudi Arabien, Schweden, Schweiz, Senegal, Serbien, Seychellen, Sierra Leona Singapur, Simbabwe, Slovakei, Slowenien, Somalia, Spanien, Sri Lanka, Südafrika, Sudan, Südgeorgien, Südkorea, Südsudan, Suriname, Swasiland, Syrien, Taiwan, Tadschikistan, Tansania, Thailand, Togo, Trinidad und Tobago, Tschad, Tschechische Republik, Tunesien, Türkei, Turkmenistan, Tuvalu, Uganda, Ukraine, Ungarn, Uruguay, Usbekistan, Vanuatu, Vatikan, Venezuela, Vereinigte Arabische Emirate, Vereinigte Staaten von Amerika, Vietnam, Wallis und Futuna, Weißrussland, Zentralafrikanische Republik, Zypern. - - -OsmAnd (OSM Automated Navigation Directions) ist eine Karten- und Navigations-App mit Zugang zu den freien, weltweit verfügbaren und hoch qualitativen Daten von OpenStreetMap (OSM). Alle Kartendaten können für die Offline-Nutzung auf der Speicherkarte oder den internen Speicher des Endgerätes gespeichert werden. Über das GPS des Endgerätes bietet OsmAnd eine Routing-Funktion mit visueller Anzeige und Sprachausgabe für KFZ, Fahrräder und Fußgänger. Alle Hauptfunktionen funktionieren sowohl online als auch offline (ohne Verbindung zum Internet). - -Der Funktionsumfang beinhaltet unter anderem: - -Navigation - - funktioniert online (schnell) und offline (kein Roaming-Gebühren im Ausland) - - exakte Sprachausgabe (aufgenommen und synchronisierte Stimmen) - - optionale Fahrspurführung, Anzeige der Straßennamen und der geschätzten Ankunftszeit - - Unterstützung von Zwischenzielen auf ihrer Route - - automatische Neuberechnung der Route, sobald von der ursprünglichen Route abgewichen wird. - - Suche nach Punkten anhand der Adresse, dem Typ (z. B. Restaurant, Hotel, Tankstelle, Museum) oder geografischen Koordinaten - -Kartenansicht - - Anzeige des Standpunktes und der Blickrichtung auf der Karte - - optionale Ausrichtung der Karte anhand des Kompasses oder der Bewegungsrichtung - - Speichern der wichtigsten Punkte als Favorit - - Anzeige von POI (Point Of Interests) - - Darstellung spezieller Online-Karten - - Darstellung der Satelliten-Ansicht (auf Bing basierend) - - Darstellung verschiedener Überlagerungen wie GPS-Tracks und weitere Karten mit einstellbarer Transparenz - - Anzeige von Ortsnamen in Englisch, der lokalen Sprache oder phonetischer Aussprache - -Nutzen von Daten von OpenStreetMap und Wikipedia - - qualitativ hochwertige Informationen der besten frei verfügbaren Projekte der Welt - - globale Karten von Openstreetmap, verfügbar nach Land oder Region - - Wikipedia POIs, praktisch für Stadtbesichtigungen (nicht verfügbar in der kostenfreien Version) - - unlimitierter kostenloser Download direkt in der App (Download-Limit in der kostenfreien Version: 16 Karten) - - immer aktuelle Karten (mindestens eine aktualisierung pro Monat) - - kompakte Offline-Vektor-Karten - - Auswahl zwischen kompletten Karten und reinen Straßenkarten (Beispiel: Die gesamte Karte für Japan ist 700 MB, die reine Straßenkarte 200 MB groß) - - zusätzliche Unterstützung von Online-karten oder zwischengespeicherten Karten-Abschnitten - -Sicherheitsfunktionen - - optionaler automatisierter Wechsel zwischen Tag- und Nachtansicht - - optionale Einblendung der aktuellen Geschwindigkeitsbeschränkung mit Erinnerung falls diese überschritten wird - - optionales geschwindigkeitsabhängiges Zoomen der Karte - - Teilen des Standortes, so dass Ihre Freunde sie finden können - -Fahrrad- und Fußgängerfunktionen - - - die Karten beinhalten Fuß, Wander- und Fahrradwege, gut geeignet für Outdoor-Aktivitäten - - spezielle Routing und Darstellungsoptionen für Radfahrende zu Fuß gehende - - optionales Einblenden von Haltestellen des öffentlichen Nahverkehrs (Bus, Straßenbahn, Zug…) - - optionales Aufzeichenen des zurückgelegten Weges als lokale GPX-Datei oder bei einem Online-Service - - optionale Darstellung der Geschwindigkeit und aktuelle Höhe - - Darstellung von Höhenlinien und Bergschattierungen (über zusätzliches Plugin) - -direktes Beitragen zu OpenStreetMap - - Melden von Fehlern - - Hochladen von GPX-Tracks zu OSM direkt aus der App - - Hinzufügen von POIs und hochladen dieser zu OSM (oder später, wenn gerade offline) - - optionales Aufzeichnen der Strecke (auch im Hintergrundmodues (während das Endgerät im Ruhemodus ist) - -OsmAnd ist OpenSource und wird aktiv weiterentwickelt. Jeder kann dazu beitragen, indem er Fehler mitteilt, die Übersetzungen verbessert oder neue Funktionen programmiert. Das Projekt befindet sich in einem Status der kontinuierlichen Verbesserung aufgrund der ständigen Interaktion zwischen Entwickler und Nutzer. Der Fortschritt des Projektes ist auch abhängig von finanzieller Unterstützung um die Entwicklung, das Programmieren und Testen neuer Funktionen zu ermöglichen. Durch den Kauf von OsmAnd+ können Sie helfen die App noch besser zu machen. Es ist auch möglich für spezielle neue Funktionen oder die allgemeine Entwicklung auf osmand.net zu spenden. - -Durchschnittliche Kartenabdeckung und -qualität: - - Westeuropa: **** - - Osteuropa: *** - - Russland: *** - - Nordamerika: *** - - Südamerika: ** - - Asien: ** - - Japan und Korea: *** - - mittlerer Osten: ** - - Afrika: ** - - Antarktis: * - -Liste der Unterstützten Länder (annähernd Weltweit!): -Afghanistan, Ägypten, Albanien, Algerien, Andorra, Angola, Anguilla, Antigua and Barbuda, Äquatorialguinea, Arabische Republik Sahara, Argentinien, Armenien, Aruba, Aserbaidschan, Äthiopien, Australien, Bahamas, Bahrain, Bangladesch, Barbados, Belgien, Belize, Benin, Bermuda, Bhutan, Bolivien, Bonaire, Bosnien und Herzegowina, Botswana, Brasilien, Brunei, Bulgarien, Burkina Faso, Burundi, Chile, China, Costa Rica, Curaçao, Dänemark, Deutschland, Dominica, Dominikanische Republik, Dschibuti, Ecuador, El Salvador, Elfenbeinküste, Eritrea, Estland, Fidschi, Finnland, Frankreich, Französisch-Guayana, Französisch-Polynesien, Gabun, Gambia, Georgien, Ghana, Gibraltar, Grenada, Griechenland, Grönland, Großbritannien, Guadeloupe, Guam, Guatemala, Guernsey, Guinea, Guinea-Bissau, Guyana, Haiti, Honduras, Hong Kong, Indien, Indonesien, Insel Man, Irak, Iran, Irland, Island, Israel, Italien, Jamaika, Japan, Jemen, Jersey, Jordanien, Jungferninseln, Kambodscha, Kamerun, Kanada, Kap Verde, Kasastan, Katar, Kenia, Kirgistan, Kiribati, Kolumbien, Komoren, Kongo, Kroatien, Kuba, Kuwait, Laos, Lesotho, Lettland, Libanon, Liberia, Libyen, Liechtenstein, Litauen, Luxemburg, Macao, Madagaskar, Malawi, Malaysia, Malediven, Mali, Malta, Marokko, Martinique, Mauretanien, Mauritius, Mayotte, Mazedonien, Mexiko, Mikronesien, Moldau, Monaco, Mongolei, Montenegro, Montserrat, Mosambik, Myanmar, Namibia, Nauru, Nepal, Neukaledonien, Neuseeland, Nicaragua, Niederlande, Niederländische Antillen, Niger, Nigeria, Nordkorea, Norwegen, Oman, Österreich, Osttimor, Pakistan, Palau, Palästinensische Autonomiegebiete, Panama, Papua-Neuguinea, Paraquay, Peru, Philippinen, Polen, Portugal, Puerto Rico, Ruanda, Rumänien, Russland, Saint-Barthélemy, Saint Helena, Saint Helena, Ascension und Tristan da Cunha, Saint Kitts und Nevis, Saint Lucia, Saint Martin, Saint-Pierre und Miquelon, Saint Vincent und die Grenadinen, Sambia, Samoa, San Marino, Saudi Arabien, Schweden, Schweiz, Senegal, Serbien, Seychellen, Sierra Leona Singapur, Simbabwe, Slovakei, Slowenien, Somalia, Spanien, Sri Lanka, Südafrika, Sudan, Südgeorgien, Südkorea, Südsudan, Suriname, Swasiland, Syrien, Taiwan, Tadschikistan, Tansania, Thailand, Togo, Trinidad und Tobago, Tschad, Tschechische Republik, Tunesien, Türkei, Turkmenistan, Tuvalu, Uganda, Ukraine, Ungarn, Uruguay, Usbekistan, Vanuatu, Vatikan, Venezuela, Vereinigte Arabische Emirate, Vereinigte Staaten von Amerika, Vietnam, Wallis und Futuna, Weißrussland, Zentralafrikanische Republik, Zypern. - - - Blau - Braun - Grün - Hellblau - Orange - Pink - Rot - Gelb - - Objektsuche beenden - Kanäle aktualisieren - Objekt suchen - Stoppe OsMoDroid - Starte OsMoDroid - Das OsMoDroid-Plugin liegt in einer alten Version vor und muss aktualisiert werden. - Das OsMoDroid-Plugin ist eine Erweiterung von OsmAnd für die OsMoDroid-Anwendung zum Online-Tracking. Informationen über den Dienst finden Sie auf http://esya.ru. - OsMoDroid-Plugin - - Geräte-ID - Konfigurieren der Überwachungs-Einstellungen und des persönlichen Überwachungs-Kanals - "Erweiterte OpenStreetMap-basierte Live-Überwachung, siehe http://osmo.mobi ... Ermöglicht die Positionsdarstellung in von einzelnen Geräten in Echtzeit. Bei anonym erstellten Gruppen sind die Optionen etwas eingeschränkt: Lebensdauer der Gruppe nur für einige Tage, auch ist keine zentrale Steuerung der Gruppe möglich. Es gibt verschiedene Einstellungen für zeitlich begrenzte oder Dauer-Aufzeichnung. Voll funktionsfähige Gruppen müssen auf der genannten Internetseite erstellt werden, auf die Gruppe haben nur registrierte Nutzer Zugriff. " - OsMo (Erweiterte Live-Überwachung) - OsMo OpenStreetMap-Überwachung - OsMo Verbindungsproblem: - OsMo-Sitzung beenden - OsMo-Sitzung starten - Aufzeichnung automatisch starten und Standorte nach dem Starten der Anwendung senden - Aufzeichnung automatisch starten - Persönliche Aufzeichnungs-ID - Zum Anzeigen oder Teilen der Aufzeichnungs-ID tippen. Mit der Aufzeichnungs-ID verbundene Geräte können alle Bewegungen dieses Geräts aufzeigen! Zum Trennen der Verbindung die Regenerieren-Option auswählen. - Sitzungstoken: %1$s - Auf Autorisierung warten… - Gesendete Standorte %1$d (im Zwischenspeicher %2$d) - Verbindung erfolgreich: %1$s - OsMo-Sitzung neustarten - Debug-Information - Nutzername - Aufzeichnungs-ID - Mit Gerät koppeln - OsMo Gruppen/Geräte - Ändern der Nutzereinstellungen - Info - OsMo-Gruppe - Um eine Verbindung zur Gruppe %2$s herzustellen, bitte die Gruppen-ID (%1$s) angeben oder (%3$s) antippen. - Diesem Gerät permanent folgen - Aktuelle Sitzung im Browser teilen - Sitzung nicht verfügbar, bitte überprüfen, ob \'Standort senden\'\ aktiviert ist. - Sitzung teilen - Sitzungs-URL zur Geräte-Verfolgung (%1$s) - Aufzeichnungs-Intervall - Zeit-Intervall zum Senden des Standortes auswählen - Verbinden - Läuft ab in - Beschreibung - Richtlinie - Gruppen-ID - Gruppen-Name - Mit Gruppe verbinden - Verbinden mit - Gruppe erstellen - OsMo-Server-Vorgang fehlgeschlagen - OpenStreetMap-Überwachung - meine Standorte senden - OsMo-Schnellzugriff - Verbundene Geräte - Anmelden - Um Gruppen erstellen zu können, müssen Sie ein registrierter Nutzer von OsMo sein. - Ihre OsMo-Anmeldedaten sind nicht gültig. - Sind sie sicher, dass Sie Ihre persönliche ID regenerieren möchten? Alle Geräte, die mit Ihnen verbunden sind, werden Ihnen nicht mehr folgen können. - Nutzer-ID regenerieren - Registrierter Name - Mein Nickname - Nutzer - Folgen - Nutzer %1$s hat die Gruppe %2$s betreten - Nutzer %1$s hat die Gruppe %2$s verlassen - Gruppenbenachrichtigungen anzeigen - Zeige Pop-up-Meldung, wenn eine Nutzer der Gruppe beitritt oder sie verlässt - Um eine Verbindung zum Gerät %2$s herzustellen, bitte den Link %3$s antippen oder die Tracker-ID (%1$s) angeben - Anmeldung fehlgeschlagen - Fehler bei der OsMo-Anmeldung: %1$s.\n Möglicherweise ist der Dienst nicht verfügbar oder Ihre Anmeldung ist abgelaufen.\n Fortsetzen mit einer neuen Registrierung? - Auf Einladung beitreten - " - Alle angelegten Gruppen sind öffentlich! Für eine anonyme Verbindung bitte direkt mittels Tracker-ID verbinden.\n - In einer Gruppe können sich bis zu 16 Mitglieder anmelden.\n - Bei Inaktivität oder nur einem einzigen Mitglied über 2 Wochen wird die Gruppe gelöscht.\n - Der Zugang zu einer Gruppe kann beschränkt werden: \"nur auf Einladung\". Zur Steuerung der Gruppe benötigt man Zugang zur Admin-Konsole.\n - Zum Erstellen einer Gruppe mit abweichenden Bedingungen bitte Kontakt aufnehmen unter http://osmo.mobi" - Bitte vor dem Erstellen von Gruppen beachten! - OsMo-Anmeldung fehlgeschlagen - OsMo-Punkte %1$s heruntergeladen. - Verbindung beim App-Start automatisch aufbauen - Automatische Verbindung - OsMo-Dienst - OsMo Spur %1$s heruntergeladen. - Einladen… - Die Gruppe %1$s verlassen? - Bewegliches Ziel abbrechen - Als bewegliches Ziel auswählen - Darstellungsfarbe - Zentrieren auf dem Bildschirm - - GPX-Track ist leer - Wegpunkte: %1$s - Strecke: %1$s (%2$s Punkte) - Startzeit: %1$tF, %1$tT - Endzeit: %1$tF, %1$tT - Durchschnittsgeschwindigkeit: %1$s - Maximale Geschwindigkeit: %1$s - Durchschnittliche Höhe: %1$s - Höhenunterschied: %1$s - Ab-/Anstieg: %1$s - Zeitspanne: %1$s - Zeit in Bewegung: %1$s - Abschnitt - %1$s Punkte - Punkt %1$s - Aufnahme - %1$s \nRoutenpunkte %2$s - %1$s \nPunkte - %1$s \nTrack %2$s - Aktuell aufgenommener Track - Trennungs-Intervall - "Spurteile: %1$s " - Starte GPX-Aufzeichnung - Stoppe GPX-Aufzeichnung - Starte neues Segment - Wegpunkt - Sichtbarkeit - Tags - Beschreibung - Bitte Aufzeichnung unter \'Einstellungen\' → \'Navigation\' aktivieren. - GPX-Route wählen - GPX-Route umkehren - Derzeitiges Ziel verwenden - Gesamten Track durchlaufen - Keine GPX-Dateien gefunden in /tracks-Ordner - GPX-Dateiname - GPX-Datei erfolgreich gespeichert unter {0} - Berechnen des ersten und letzten Abschnitts der OsmAnd-Route -Fehlende Karten herunterladen: %1$s (%2$d MB)? - Mehr... - Bitte ID eingeben - Ausgangsposition - Bus-, Trolleybus-, Sammeltaxi-Linien - Zeichnen Sie Ihre Strecken auf - h - Dauer - Distanz - Touren - Alle - Wegpunkte - Ziele - Verkehrswarnungen - Speichern Sie Ihre Tracks mit einem Klick. Zeigt die Einstellung, wie Strecken aufgezeichnet werden – in lokale GPX-Dateien oder online via Web-Service. - - Ein Element antippen, um mehr Details zu erfahren oder antippen und halten zum Deaktivieren oder Löschen. Aktuell auf dem Gerät vorhandene Daten (%1$s frei): - Karten-Schriftgröße festlegen - Schriftgröße - Doppelung beim Favoriten-Namen - Name des Favoriten bereits vergeben, er wurde auf %1$s geändert. - Nativen Renderer benutzen - C++ Renderer statt Java-Renderer nutzen - Der Name des Favoriten wurde auf %1$s geändert, denn Zeichenketten mit Emoticons können nicht gespeichert werden. - Route drucken - Toleranz für Tempolimit - Schwellenwert für Warnung bei Überschreiten der Höchstgeschwindigkeit. - Gerät wurde nicht gefunden - OsMo-Dienst ist nicht verfügbar:\n- bitte Verbindung prüfen;\n- bitte Einstellungen prüfen;\n- ggf. Meldung auf Twitter: https://twitter.com/OsMomobi - Anonymer Benutzer - Angemeldet als %1$s - Anonyme Benutzer können nicht:\n- Gruppen bilden;\n- Gruppen und Geräte mit dem Server synchronisieren;\n- Gruppen und Geräte im Privatbereich verwalten. - Routen - Details - Routen und ÖPNV - Verbleibende Elemente - Statuszeile - Rechtes Panel - Linkes Panel - Anzeigen - Karte konfigurieren - Im Umkreis von - "Änderungen in 1.9: * Verbesserte Karten-Stile mit Darstellung der Straßenoberflächen, ÖPNV-Layer und Wander-Symbolen * POI-Suche entlang einer berechneten Route * pro Sitzung eine Straße als nicht passierbar kennzeichnen * Vereinfachung des Karten-Downloads und der Karten-Updates * Audio-visuelle Benachrichtigung bei Annäherung an ein Zwischenziel * Ausdruck der Reiseroute und der Fahr-Anweisungen * Auswertung von Abbiegespuren * Unterstützung von Android Wear Geräten * viele Änderungen an der Programm-Oberfläche * Separater Zoom nur für die Beschriftungen auf der Karte * Besondere Benachrichtigung bei Abweichen von der vorgegebenen Route * Anmeldung beim Dienst OsMo * Verbesserungen bei der Kompatibilität zu OsMo-Versionen " - Sonstiges - Straßenbahnenlinien - Bildschirm aktivieren - Bildschirm bei Navigationsanweisung aktivieren - Niemals - Auswählen auf der Karte - Straße blockieren … - Straßen- und Eisenbahnlinien - Eisenbahn-Strecken - Sammeltaxi-Routen - Oberleitungsbuslinien - Buslinien - Ausblenden - %1$s benötigt diese Berechtigung, um den Bildschirm auszuschalten (Energiesparfunktion). - Erweitert - Start - Sichere Server-Verbindung verwenden - Https nutzen - Karten - Suchen nach - KARTE ZEIGEN - ALLES ZEIGEN - Koordinaten - From 1628c7a15ecd7d5929d38836278f36300bc241ca Mon Sep 17 00:00:00 2001 From: ace shadow Date: Fri, 28 Nov 2014 23:03:01 +0100 Subject: [PATCH 050/157] Translated using Weblate (Slovak) Currently translated at 100.0% (1568 of 1568 strings) --- OsmAnd/res/values-sk/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/OsmAnd/res/values-sk/strings.xml b/OsmAnd/res/values-sk/strings.xml index 334fa6cb7c..eb8b02a2ee 100644 --- a/OsmAnd/res/values-sk/strings.xml +++ b/OsmAnd/res/values-sk/strings.xml @@ -1998,4 +1998,5 @@ Afganistan, Albánsko, Alžírsko, Andora, Angola, Anguilla, Antigua a Barbuda, ZOBRAZIŤ MAPU ZOBRAZIŤ VŠETKO Súradnice + Mapy From 5e672c02e6016293099c13d7975ae0f8edbe5652 Mon Sep 17 00:00:00 2001 From: Hinagiku Zeppeki Date: Sat, 29 Nov 2014 02:47:07 +0100 Subject: [PATCH 051/157] Translated using Weblate (Japanese) Currently translated at 100.0% (1568 of 1568 strings) --- OsmAnd/res/values-ja/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/OsmAnd/res/values-ja/strings.xml b/OsmAnd/res/values-ja/strings.xml index 4cfaf8f0fa..dedbb580a4 100644 --- a/OsmAnd/res/values-ja/strings.xml +++ b/OsmAnd/res/values-ja/strings.xml @@ -2104,4 +2104,10 @@ OsmAndはオープンソースであり、活発に開発が進められいま 以下は匿名ユーザーでは使用できません:↵\n- グループ作成;↵\n- サーバを利用してのグループやデバイスの同期;↵\n- 専用の場所でのグループやデバイスの管理. 匿名ユーザー %1$sとしてログインしました + ホーム画面 + マップ + 検索 + マップ表示 + 全て表示 + 座標 From de43443ebea3459eedb8b901f45b41bad56c062c Mon Sep 17 00:00:00 2001 From: Lu Ca Date: Sat, 29 Nov 2014 00:27:29 +0100 Subject: [PATCH 052/157] Translated using Weblate (Sardinian) Currently translated at 100.0% (1568 of 1568 strings) --- OsmAnd/res/values-sc/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-sc/strings.xml b/OsmAnd/res/values-sc/strings.xml index d00ec97584..26963e30b1 100644 --- a/OsmAnd/res/values-sc/strings.xml +++ b/OsmAnd/res/values-sc/strings.xml @@ -81,7 +81,7 @@ Dae sa versione Android 4.4 (KitKat) non podes prus iscarrigare e agiornare sas mapas in sa cartella bècia (%s). La bòles remplasare cun sa chi est acusentida e copiare in cue totus sos datos? \n Nota 1: sos datos antepostos tuos non at a èssere mudados (ma podent essere burrados manualmente). \n Nota 2: in sa cartella noa non at a èssere possìbile cumpartzire sos datos intra OsmAnd e OsmAnd+. - OsmAnd podet proare a copiare sos datos suos in sa destinatzione noa. Boles a lu fàghere? + Boles chi OsmAnd còpiet sos datos suos fintzas in sa destinatzione noa? Copiande su documentu (%s) in sa destinatzione noa... Copiande sos datos de OsmAnd in (%s), sa destinatzione noa Copiande sos datos de OsmAnd @@ -1785,7 +1785,7 @@ Si cussigiat de annànghere unu o prus puntos intermedios pro megiorare sas pres Imprea https Domo Chirca pro - AMMUSTRA MAPA + AMMUSTRA SA MAPA AMMUSTRA TOTU Coordinatas Mapas From 407a455e20f70b35045baafb5e732e49505a676a Mon Sep 17 00:00:00 2001 From: ace shadow Date: Fri, 28 Nov 2014 23:04:09 +0100 Subject: [PATCH 053/157] Translated using Weblate (Slovak) Currently translated at 100.0% (1568 of 1568 strings) --- OsmAnd/res/values-sk/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-sk/strings.xml b/OsmAnd/res/values-sk/strings.xml index eb8b02a2ee..7a0380ab11 100644 --- a/OsmAnd/res/values-sk/strings.xml +++ b/OsmAnd/res/values-sk/strings.xml @@ -1597,7 +1597,7 @@ Afganistan, Albánsko, Alžírsko, Andora, Angola, Anguilla, Antigua a Barbuda, Kopírujem dátové súbory OsmAnd do nového cieľa (%s) Kopírujem dátové súbory OsmAnd Kopírujem súbor (%s) do nového cieľa... - Chcete aby sa OsmAnd pokúsil presunúť údaje do nového cieľa? + Chcete aby OsmAnd presunul údajové súbory do nového cieľa? Vypočítať OsmAnd offline trasu Od Androidu verzie 4.4 (KitKat) nie je možné sťahovať a aktualizovať mapy v pôvodnom úložnom priečinku (%s). Chcete ho zmeniť na vhodné nové úložisko a skopírovať tam všetky súbory? \n Poznámka 1: pôvodné súbory zostanú nedotknuté (môžete ich neskôr vymazať ručne).\n Poznámka 2: v novom úložisku nebude možné zdieľať súbory medzi OsmAnd a OsmAnd+. From a0800890f3c7ac85dd0aa728d483845804deacea Mon Sep 17 00:00:00 2001 From: Victor Shcherb Date: Sat, 29 Nov 2014 13:21:48 +0100 Subject: [PATCH 054/157] Small changes --- OsmAnd/res/layout/dash_search_fragment.xml | 16 +++++---- OsmAnd/res/values/strings.xml | 1 + .../osmand/plus/CurrentPositionHelper.java | 34 +++++++++++-------- .../osmand/plus/OsmAndLocationProvider.java | 2 +- .../plus/dashboard/DashSearchFragment.java | 14 +++++--- .../plus/helpers/AvoidSpecificRoads.java | 14 ++++++-- .../plus/views/OsmAndMapLayersView.java | 1 - 7 files changed, 54 insertions(+), 28 deletions(-) diff --git a/OsmAnd/res/layout/dash_search_fragment.xml b/OsmAnd/res/layout/dash_search_fragment.xml index 95408d7fd7..df0f6a8f7e 100644 --- a/OsmAnd/res/layout/dash_search_fragment.xml +++ b/OsmAnd/res/layout/dash_search_fragment.xml @@ -7,12 +7,16 @@ android:background="@drawable/bg_cardui" android:orientation="vertical" > - + + + + Nearest road was not found Home Use secure connection with server Use https diff --git a/OsmAnd/src/net/osmand/plus/CurrentPositionHelper.java b/OsmAnd/src/net/osmand/plus/CurrentPositionHelper.java index beff07b766..80a10c6224 100644 --- a/OsmAnd/src/net/osmand/plus/CurrentPositionHelper.java +++ b/OsmAnd/src/net/osmand/plus/CurrentPositionHelper.java @@ -42,35 +42,32 @@ public class CurrentPositionHelper { ctx = new RoutePlannerFrontEnd(false).buildRoutingContext(cfg, null, app.getResourceManager().getRoutingMapFiles()); } - public synchronized RouteDataObject runUpdateInThread(double lat , double lon) { + public synchronized RouteDataObject runUpdateInThread(double lat, double lon) throws IOException { RoutePlannerFrontEnd rp = new RoutePlannerFrontEnd(false); - try { - if(ctx == null || am != app.getSettings().getApplicationMode()) { - initCtx(app); - if(ctx == null) { - return null; - } - } - RouteSegment sg = rp.findRouteSegment(lat, lon, ctx); - if(sg == null) { + if (ctx == null || am != app.getSettings().getApplicationMode()) { + initCtx(app); + if (ctx == null) { return null; } - return sg.getRoad(); - } catch (IOException e) { + } + RouteSegment sg = rp.findRouteSegment(lat, lon, ctx); + if (sg == null) { return null; } + return sg.getRoad(); + } private void scheduleRouteSegmentFind(final Location loc){ if(calculatingThread == Thread.currentThread()) { - lastFound = runUpdateInThread(loc.getLatitude(), loc.getLongitude()); + lastFound = runUpdateInThreadCatch(loc.getLatitude(), loc.getLongitude()); } else if(calculatingThread == null && loc != null) { Runnable run = new Runnable() { @Override public void run() { try { - lastFound = runUpdateInThread(loc.getLatitude(), loc.getLongitude()); + lastFound = runUpdateInThreadCatch(loc.getLatitude(), loc.getLongitude()); if (lastAskedLocation != loc) { // refresh and run new task if needed getLastKnownRouteSegment(lastAskedLocation); @@ -85,6 +82,15 @@ public class CurrentPositionHelper { } + protected RouteDataObject runUpdateInThreadCatch(double latitude, double longitude) { + try { + return runUpdateInThread(latitude, longitude); + } catch (IOException e) { + e.printStackTrace(); + return null; + } + } + private static double getOrthogonalDistance(RouteDataObject r, Location loc){ double d = 1000; if (r.getPointsLength() > 0) { diff --git a/OsmAnd/src/net/osmand/plus/OsmAndLocationProvider.java b/OsmAnd/src/net/osmand/plus/OsmAndLocationProvider.java index d4f4afbfd7..0310bde0a6 100644 --- a/OsmAnd/src/net/osmand/plus/OsmAndLocationProvider.java +++ b/OsmAnd/src/net/osmand/plus/OsmAndLocationProvider.java @@ -216,7 +216,7 @@ public class OsmAndLocationProvider implements SensorEventListener { } public RouteDataObject findRoute(double lat , double lon) { - return currentPositionHelper.runUpdateInThread(lat, lon); + return currentPositionHelper.runUpdateInThreadCatch(lat, lon); } public void resumeAllUpdates() { diff --git a/OsmAnd/src/net/osmand/plus/dashboard/DashSearchFragment.java b/OsmAnd/src/net/osmand/plus/dashboard/DashSearchFragment.java index 8de9cfefe7..d00207c490 100644 --- a/OsmAnd/src/net/osmand/plus/dashboard/DashSearchFragment.java +++ b/OsmAnd/src/net/osmand/plus/dashboard/DashSearchFragment.java @@ -1,18 +1,21 @@ package net.osmand.plus.dashboard; +import net.osmand.plus.OsmAndAppCustomization; +import net.osmand.plus.R; +import net.osmand.plus.activities.search.SearchActivity; import android.app.Activity; import android.content.Intent; import android.graphics.Typeface; import android.os.Bundle; import android.support.annotation.Nullable; +import android.text.Editable; +import android.text.TextWatcher; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.AutoCompleteTextView; +import android.widget.EditText; import android.widget.TextView; -import net.osmand.plus.OsmAndAppCustomization; -import net.osmand.plus.OsmandApplication; -import net.osmand.plus.R; -import net.osmand.plus.activities.search.SearchActivity; /** * Created by Denis on 24.11.2014. @@ -25,6 +28,7 @@ public class DashSearchFragment extends DashBaseFragment { public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = getActivity().getLayoutInflater().inflate(R.layout.dash_search_fragment, container, false); setupButtons(view); + // TODO cache typeface ? Typeface typeface = Typeface.createFromAsset(getActivity().getAssets(), "fonts/Roboto-Medium.ttf"); ((TextView) view.findViewById(R.id.search_for)).setTypeface(typeface); return view; @@ -39,6 +43,8 @@ public class DashSearchFragment extends DashBaseFragment { private void setupButtons(View view){ final Activity activity = getActivity(); final OsmAndAppCustomization appCustomization = getMyApplication().getAppCustomization(); +// EditText searchText = (EditText) view.findViewById(R.id.search_text); +// searchText.addTextChangedListener(textWatcher); (view.findViewById(R.id.poi)).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { diff --git a/OsmAnd/src/net/osmand/plus/helpers/AvoidSpecificRoads.java b/OsmAnd/src/net/osmand/plus/helpers/AvoidSpecificRoads.java index 04beefd12c..ef9f2bdef5 100644 --- a/OsmAnd/src/net/osmand/plus/helpers/AvoidSpecificRoads.java +++ b/OsmAnd/src/net/osmand/plus/helpers/AvoidSpecificRoads.java @@ -27,6 +27,7 @@ import android.widget.ArrayAdapter; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.TextView; +import android.widget.Toast; public class AvoidSpecificRoads { private List missingRoads; @@ -143,14 +144,23 @@ public class AvoidSpecificRoads { } private void findRoad(final MapActivity activity, final LatLon loc) { new AsyncTask() { + Exception e = null; @Override protected RouteDataObject doInBackground(LatLon... params) { - return app.getLocationProvider().findRoute(loc.getLatitude(), loc.getLongitude()); + try { + return app.getLocationProvider().findRoute(loc.getLatitude(), loc.getLongitude()); + } catch (Exception e) { + this.e = e; + e.printStackTrace(); + return null; + } } protected void onPostExecute(RouteDataObject result) { - if(result != null) { + if(e != null) { + Toast.makeText(activity, R.string.error_avoid_specific_road, Toast.LENGTH_LONG).show(); + } else if(result != null) { getBuilder().addImpassableRoad(result); RoutingHelper rh = app.getRoutingHelper(); if(rh.isRouteCalculated() || rh.isRouteBeingCalculated()) { diff --git a/OsmAnd/src/net/osmand/plus/views/OsmAndMapLayersView.java b/OsmAnd/src/net/osmand/plus/views/OsmAndMapLayersView.java index e50acfc5a9..ca3dd7e2e8 100644 --- a/OsmAnd/src/net/osmand/plus/views/OsmAndMapLayersView.java +++ b/OsmAnd/src/net/osmand/plus/views/OsmAndMapLayersView.java @@ -6,7 +6,6 @@ import android.graphics.Canvas; import android.util.AttributeSet; import android.view.KeyEvent; import android.view.MotionEvent; -import android.view.SurfaceHolder; import android.view.View; public class OsmAndMapLayersView extends View { From 5ba7462a3acf37669283e7db94145520c35957b8 Mon Sep 17 00:00:00 2001 From: Mirco Zorzo Date: Sat, 29 Nov 2014 11:35:45 +0100 Subject: [PATCH 055/157] Translated using Weblate (Italian) Currently translated at 100.0% (1568 of 1568 strings) --- OsmAnd/res/values-it/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-it/strings.xml b/OsmAnd/res/values-it/strings.xml index c33f74214b..d2ded378ae 100644 --- a/OsmAnd/res/values-it/strings.xml +++ b/OsmAnd/res/values-it/strings.xml @@ -1638,7 +1638,7 @@ Si consiglia di aggiungere uno o più punti intermedi per migliorarne le prestaz Dalla versione KitKat non è più possibile scaricare e aggiornare le mappe nel precedente indirizzo di memorizzazione (%s). Vuoi sostituirlo con quello consentito e copiare lì tutti i file? \n Nota: i file precedenti non verranno modificati. \n Nota: non sarà possibile condividere i files fra OsmAnd and OsmAnd+. - Volete che OsmAnd provi a spostare i propri dati nella nuova destinazione? + Volete che OsmAnd sposti anche i propri dati nella nuova destinazione? Copia in corso del file (%s) nella nuova destinazione... Copia in corso dei file OsmAnd nella nuova destinazione (%s) Copia dei file di dati di OsmAnd From d9c36ac6330d873775e6ad27de50acaba08c1bb3 Mon Sep 17 00:00:00 2001 From: Hinagiku Zeppeki Date: Sat, 29 Nov 2014 03:32:22 +0100 Subject: [PATCH 056/157] Translated using Weblate (Japanese) Currently translated at 100.0% (1568 of 1568 strings) --- OsmAnd/res/values-ja/strings.xml | 35 ++++++++++++++++---------------- 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/OsmAnd/res/values-ja/strings.xml b/OsmAnd/res/values-ja/strings.xml index dedbb580a4..66c722437f 100644 --- a/OsmAnd/res/values-ja/strings.xml +++ b/OsmAnd/res/values-ja/strings.xml @@ -505,8 +505,8 @@ POIの更新は利用できません 地図の表示とナビゲーションの設定はプロファイルごとに記憶されます。デフォルトのプロファイルを設定してください。 デフォルトプロファイル 設定 - 今すぐ現在のトラックをSDに保存 - 現在のトラックを保存 + 現在の経路を今すぐSDに保存 + 現在の経路を保存 ナビゲーション中の経路の記録間隔を選択 ナビゲーション中の経路記録間隔 @@ -783,8 +783,8 @@ POIの更新は利用できません 現在Wi-Fiに接続されていません。現在のインターネット接続のままでダウンロードを続行しますか? 通り 家屋番号 - 旅行についての記録 - 旅行の記録に関する設定します + 旅程の記録 + 移動中の経路記録に関する設定 スリープ(画面消灯)モード時のトラッキングとナビをGPSデバイスを定期的にウェイクアップすることで有効化します。 あなたの旅行のローカルのGPXファイルかオンラインのウェブサービスで記録するかを容易に設定する画面を表示します。 ロギングサービス @@ -856,7 +856,7 @@ POIの更新は利用できません 記録中 %1$s %3$s の %2$s 記録中 停止 - 開始 + 記録 音声/ビデオメモ オフライン等高線のためのOsmAndプラグイン 距離の測定 @@ -1182,7 +1182,7 @@ ASTERはNASAと日本の経済産業省(METI)、そして宇宙システム オンライン追跡間隔を指定 オンライン追跡間隔 - パラメータの構文を使用してWebアドレスを指定します:緯度={0}、経度={1}、タイムスタンプ={2}、HDOP={3}、標高={4}、速度={5}、ベアリング={6} + 指定したWebアドレスに経路データを送信/使えるパラメータ:緯度={0}、経度={1}、タイムスタンプ={2}、HDOP={3}、標高={4}、速度={5}、ベアリング={6} オンライン追跡ウェブアドレス \'追跡ログをGPXに記録\'を有効にして下さい。 現在のトラックを表示 @@ -1695,14 +1695,13 @@ OsmAndはオープンソースであり、活発に開発が進められいま \n\t- TTSエンジンの改善(より正確な距離による指示、マイルを有効に) \n\t- バグ修正 - 0.6.6の変更と追加: - \n\t- 音声案内用にテキスト読み上げエンジン搭載 - \n\t- 地図描写は、より詳細に - \n\t- 全世界用基本マップをアプリと一緒にパッケージ - \n\t- オフラインでのナビゲーションを微調整(実験段階) - \n\t- GPXのナビゲーションオプション - \n\t- ユーザーインターフェイスの更新と大きなバグを修正 - + "0.6.6の変更と追加: +\n\t- 音声案内用にテキスト読み上げエンジン搭載 +\n\t- マップ描写に、詳細(細かな施設)表示を追加 +\n\t- 全世界用基本マップをアプリと一緒にパッケージ +\n\t- オフラインでのナビゲーションを微調整(実験段階) +\n\t- GPXのナビゲーションオプション +\n\t- ユーザーインターフェイスの更新と大きなバグを修正 " マップソースとマップレイヤーの変更は「メニュー」→「マップレイヤー」から。 \n\n「マップソース」下の事前にロードされたオフラインベクター形式マップを選択することができます(オフラインナビゲーションには必要です)、もしくは事前定義された(オンラインまたはオフラインキャッシュ)タイルマップ(有効化するには「オンラインマップ」プラグインは「設定」→「プラグイン」)もしくはPC上のOsmAndMapCreatorで作成されたe.g.も使用できます。 \n\nOsmAndまた、カスタムソースをサポートしています。 @@ -1769,8 +1768,8 @@ OsmAndはオープンソースであり、活発に開発が進められいま スワヒリ語 ヘブライ語 自宅 - GPX記録が有効になっている場合は、指定したWebサービスへデータを送信します。 - オンライントラッキング(GPXが必要) + GPX記録が有効になっている場合、指定したWebサービスへデータを送信。 + オンライン追跡(GPXが必要) オンライントラッキング開始 オンライントラッキング停止 GPX記録開始 @@ -1780,7 +1779,7 @@ OsmAndはオープンソースであり、活発に開発が進められいま 文字列を隠す 森林、低木等を隠す ズーム15で建物表示 - より詳細に + 細かな施設も表示 詳細を省く アクセス制限を非表示 アクセス制限を表示 @@ -2025,7 +2024,7 @@ OsmAndはオープンソースであり、活発に開発が進められいま 無効なフォーマット: %s すべて削除 近くのお気に入りを知らせる -方向(仮翻訳) +目的地(仮翻訳) 旅行 全て 経由点 From cf5eec122457a8d585ed4f4671cc7706ccd37366 Mon Sep 17 00:00:00 2001 From: Ivan Vantu5z Date: Sat, 29 Nov 2014 09:41:51 +0100 Subject: [PATCH 057/157] Translated using Weblate (Russian) Currently translated at 99.8% (1566 of 1568 strings) --- OsmAnd/res/values-ru/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-ru/strings.xml b/OsmAnd/res/values-ru/strings.xml index de3e4d8843..e65fc71505 100644 --- a/OsmAnd/res/values-ru/strings.xml +++ b/OsmAnd/res/values-ru/strings.xml @@ -125,7 +125,7 @@ Настройки источников онлайн карт и слоёв Настройки карты Настроить отображение карты - Этот плагин позволяет использовать различные источники онлайн карты, а также подготовленные растровые карты в качестве базовой карты или подложки/покрытия. Карты могут быть подготовлены на компьютере и скопированы в папку osmand на scard. + Этот плагин позволяет использовать различные источники онлайн карт, а также подготовленные растровые карты в качестве базовой карты или подложки/покрытия. Карты могут быть подготовлены на компьютере и скопированы в папку данных OsmAnd. Этот плагин предоставляет навигацию и запись маршрутов в энергосберегающем режиме. Плагин работает в фоновом режиме и периодически активизирует GPS для записи маршрута или воспроизведения голосовых команд. Этот плагин содержит настройки для дополнительных возможностей (accessibility). Дополнительные настройки From cb5656c64dac65e4997968d9ee15354134900ebf Mon Sep 17 00:00:00 2001 From: Ldm Public Date: Sat, 29 Nov 2014 09:17:48 +0100 Subject: [PATCH 058/157] Translated using Weblate (French) Currently translated at 77.8% (453 of 582 strings) --- OsmAnd/res/values-fr/phrases.xml | 68 +++++++++++++++++++++++++++++++- 1 file changed, 66 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-fr/phrases.xml b/OsmAnd/res/values-fr/phrases.xml index 797bf3ba78..63f8fc3955 100644 --- a/OsmAnd/res/values-fr/phrases.xml +++ b/OsmAnd/res/values-fr/phrases.xml @@ -246,7 +246,7 @@ Course d\'orientation Magasin d\'activités de plein air Padel - Parking + Parc de stationnement Entrée de parking Mont-de-piété Sommet @@ -304,7 +304,7 @@ Magasin de chaussures Sikhisme Doline - Skateboard + Planche à roulettes Patin à glace Ski Cale de lancement @@ -407,4 +407,68 @@ Site paléontologique Vente à la ferme + Librairie spécialisée en bandes dessinées + Antiquaire + Equipement de chasse + Boutique de décoration + Pont levant + Poste frontière + Table + Centre de contrôle technique automobile + Jetée + + Gouvernement + Fond de pension + Centre des impôts + Banque de sang + Sage-femme + Podologue + Psychothérapeute + Entreprise + Mairie + Institution éducative + Piste cycable + Football autralien + Handball + Course hippique + Patinoire + Sport mécanique + Parapente + Aviron + Bateau du patrimoine + Horloge + Club d\'astronomie + Club de sports + Association de pêche + Association Linux + Club de chasse + Cinéma + Théâtre + Cirque + Lieu de pêche + Parc de stationnement + + Barbecue + + Chantier naval + Horloger + Bijoutier + Opticien + Laboratoire photographique + Maître voilier + Sculpteur + Salon de manucure + Café Internet + + Comptable + Baie + Fjord + Mouillage + Balise + Amer + Marque spéciale + Cale sèche + Mouillage + Épave + From ef670e5c45c4f9e1d82c37ef2fae090171eefa1d Mon Sep 17 00:00:00 2001 From: Mirco Zorzo Date: Sat, 29 Nov 2014 13:22:37 +0100 Subject: [PATCH 059/157] Translated using Weblate (Italian) Currently translated at 37.8% (220 of 582 strings) --- OsmAnd/res/values-it/phrases.xml | 226 +++++++++++++++++++++++++++++++ 1 file changed, 226 insertions(+) diff --git a/OsmAnd/res/values-it/phrases.xml b/OsmAnd/res/values-it/phrases.xml index cedc0ae1dd..0ff9146b73 100644 --- a/OsmAnd/res/values-it/phrases.xml +++ b/OsmAnd/res/values-it/phrases.xml @@ -6,4 +6,230 @@ Distributore automatico Libreria + Sito paleontologico + + Panificio + Alcolici + Drogheria + Negozio bevande + Macelleria + Gastronomia + Vendita prodotti di fattoria + Fruttivendolo + Negozio dolciumi + Gelateria + Negozio di té + Latteria + Antiquariato + Galleria + Negozio bambini + Valigeria + Arredo bagno + Arredamento camera da letto + Negozio tappeti + Farmacia + Abbigliamento + Abbigliamento bambini + Negozio calzature + Negozio informatica + Copisteria + Negozio campeggio + Negozio drappeggi + Negozio materassi + Negozio articoli per immersione + Negozio per fai-da-te + Sexy shop + Negozio pesca + Fioreria-fiorista + Cornici + Negozio mobili + Articoli per Giardinaggio + Negozio gas + Guado + Passo montano + Ponte + Mura cittadine + Ponte levatoio + Dosso + Chicane + Striscie rallentatrici + Autoriparatore + Gommista + Centro revisioni + Autolavaggio + Rifornimento carburanti gassosi + Stazione di ricarica + Aria compressa + Parcheggio + Parcheggio per moto + Entrata parcheggio + Garage + + Fermata trasporto pubblico + Fermata autobus + Fermata autobus (obsoleto) + Fermata tram + Stazione trasporto pubblico + Stazione bus (obsoleto) + Entrata metropolitana + Stazione metropolitana + Aeroporto + Eliporto + Noleggio bici + Parcheggio bici + + Negozio anime + Boutique moda + Emporio + Negozio regali + Vetreria + Ferramenta + Negozi apparecchi acustici + Negozio erba + Negozio HiFi + Negozio caccia-pesca + Negozio decorazione d\'interni + Gioielleria + Chiosco + Negozio articoli da cucina + Negozio telefonia mobile + Negozio moto + Strumenti musicali + Optometrista + Alimenti biologici + Negozio articoli per l\'attività all\'aperto + Negozio articoli per pittura + Negozio animali domestici + Negozio usato + Tabaccheria + Negozio giocattoli + Nogozio casalinghi + Agenzia di stampa + Negozio per radiotecnica + Articoli sportivi + Biglietteria + Negozio aspirapolvere + Negozi articoli a basso costo + Videonoleggio + Negozio finestre cieche + Grande magazzino + Negozio elettronica + Autosalone + Autoricambi + Negozio quad + Negozio cosmetici + Mercato + Polizia + Pompieri + Telefono di emergenza + Idrante + Estintore + Stazione ambulanze + Negozio nautica + Negozio per ufficio + Negozio articoli per la tavola + Gate aeroporto + + Gondola + Ascensore carrozzine + Autovelox + Rotonda per inversione di marcia + Depuratore acque + Mulino ad acqua + + Sottostazione + Trasformatore + Generatore elettrico + + Centrale elettrica + Ufficio postale + Cassetta postale + Telefono + Torre telecomunicazioni + Isola ecologica + Cestino rifiuti + + Pontile + Videosorveglianza + Costrizione in corso + Fabbrica + Tunnel verticale + Ingresso di una galleria mineraria + Pozzo petrolifero + Punto geodetico + Mulino a vento + Cava + Vigneto + Frutteto + Salina + Campo da cricket circondato da reti + + Scuola guida + Scuola + Parco giochi + Collegio + Università + + Struttura che fornisce servizi sociali + Tribunale + Carcere + Anagrafe + Ambasciata + Ufficio pubblico + Ufficiale giudiziario + Ufficio migrazione + Guardia di finanza + Ufficio amministrativo + Città capoluogo di provincia + Città + Paese + Borgo-contrada + Insediamento rurale isolato + Grande quartiere + Quartiere + Località + + Farmacia + Ospedale + Medico + Clinica + Pronto soccorso + Dentista + Servizi di assistenza continua + Culla per la vita + Veterinario + Medicina alternativa + + Banca del sangue + Centro medico + Levatrice + Optometrista + Fisioterpista + Psicoterapeuta + Logopedista + Assicurazione + Negozio immobiliare + Ufficio per l\'impiego + Ponte + + Riabilitazione + Pista atletica + Pista per bicicletta + Football australiano + Baseball + Basket + Beach volley + Canoa + Scacchi + Cricket + Corse cani + Equitazione + Golf + Pallamano + Hockey + Corse cavalli + Pattinaggio sul ghiaccio + Parapendio + Pelota + Pattinaggio a rotelle From 2cbb52b9feedac01877039069f7fee2381ea59e3 Mon Sep 17 00:00:00 2001 From: User99gmxat Date: Sat, 29 Nov 2014 13:42:04 +0100 Subject: [PATCH 060/157] Update strings.xml --- OsmAnd/res/values-de/strings.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/OsmAnd/res/values-de/strings.xml b/OsmAnd/res/values-de/strings.xml index 1d3a751d1c..beb90b10a8 100644 --- a/OsmAnd/res/values-de/strings.xml +++ b/OsmAnd/res/values-de/strings.xml @@ -2003,7 +2003,7 @@ Afghanistan, Ägypten, Albanien, Algerien, Andorra, Angola, Anguilla, Antigua an Bildschirm bei Navigationsanweisung aktivieren Niemals Auswählen auf der Karte - Straße blockieren … + Straße blockieren… Straßen- und Eisenbahnlinien Eisenbahn-Strecken Sammeltaxi-Routen @@ -2020,4 +2020,5 @@ Afghanistan, Ägypten, Albanien, Algerien, Andorra, Angola, Anguilla, Antigua an KARTE ZEIGEN ALLES ZEIGEN Koordinaten + Nächstgelegene Straße konnte nicht gefunden werden From 042304475287842e749a0dbc6c91ab85a18c1bb7 Mon Sep 17 00:00:00 2001 From: Victor Shcherb Date: Sat, 29 Nov 2014 15:41:55 +0100 Subject: [PATCH 061/157] Fix small issues --- .../osmand/plus/OsmAndAppCustomization.java | 1 - .../net/osmand/plus/OsmandApplication.java | 2 + .../plus/activities/DashboardActivity.java | 42 +++++++------- .../src/net/osmand/plus/api/render/Paint.java | 56 ------------------- .../src/net/osmand/plus/api/render/Path.java | 5 -- .../net/osmand/plus/api/render/Typeface.java | 5 -- .../plus/dashboard/DashFavoritesFragment.java | 3 +- .../plus/dashboard/DashMapFragment.java | 31 ++++++++-- .../plus/dashboard/DashPluginsFragment.java | 3 +- .../plus/dashboard/DashSearchFragment.java | 4 +- .../net/osmand/plus/helpers/FontCache.java | 27 +++++++++ .../plus/render/MapRenderRepositories.java | 8 +-- .../plus/views/OsmAndMapSurfaceView.java | 9 +++ .../osmand/plus/views/OsmandMapTileView.java | 4 +- 14 files changed, 97 insertions(+), 103 deletions(-) delete mode 100644 OsmAnd/src/net/osmand/plus/api/render/Paint.java delete mode 100644 OsmAnd/src/net/osmand/plus/api/render/Path.java delete mode 100644 OsmAnd/src/net/osmand/plus/api/render/Typeface.java create mode 100644 OsmAnd/src/net/osmand/plus/helpers/FontCache.java diff --git a/OsmAnd/src/net/osmand/plus/OsmAndAppCustomization.java b/OsmAnd/src/net/osmand/plus/OsmAndAppCustomization.java index 8ff1290ba1..ba6e818e4b 100644 --- a/OsmAnd/src/net/osmand/plus/OsmAndAppCustomization.java +++ b/OsmAnd/src/net/osmand/plus/OsmAndAppCustomization.java @@ -21,7 +21,6 @@ import net.osmand.plus.helpers.WaypointHelper; import net.osmand.plus.routing.RouteCalculationResult; import net.osmand.plus.views.OsmandMapTileView; import android.app.Activity; -import android.view.Window; public class OsmAndAppCustomization { diff --git a/OsmAnd/src/net/osmand/plus/OsmandApplication.java b/OsmAnd/src/net/osmand/plus/OsmandApplication.java index d324db191b..57e9d9c572 100644 --- a/OsmAnd/src/net/osmand/plus/OsmandApplication.java +++ b/OsmAnd/src/net/osmand/plus/OsmandApplication.java @@ -121,6 +121,8 @@ public class OsmandApplication extends Application { MapActivity mapActivity; DownloadActivity downloadActivity; + // Typeface + @Override public void onCreate() { long timeToStart = System.currentTimeMillis(); diff --git a/OsmAnd/src/net/osmand/plus/activities/DashboardActivity.java b/OsmAnd/src/net/osmand/plus/activities/DashboardActivity.java index e3fe3a9c59..37c7982f0d 100644 --- a/OsmAnd/src/net/osmand/plus/activities/DashboardActivity.java +++ b/OsmAnd/src/net/osmand/plus/activities/DashboardActivity.java @@ -9,7 +9,6 @@ import java.util.Date; import java.util.List; import java.util.Random; -import android.support.v4.app.Fragment; import net.osmand.access.AccessibleAlertBuilder; import net.osmand.plus.OsmAndAppCustomization; import net.osmand.plus.OsmandApplication; @@ -42,6 +41,7 @@ import android.graphics.drawable.ColorDrawable; import android.net.Uri; import android.os.Build; import android.os.Bundle; +import android.support.v4.app.Fragment; import android.text.SpannableString; import android.text.Spanned; import android.text.format.DateFormat; @@ -57,7 +57,6 @@ import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuItem; /** - * Created by Denis on 05.11.2014. */ public class DashboardActivity extends BaseDownloadActivity { public static final boolean TIPS_AND_TRICKS = false; @@ -71,10 +70,10 @@ public class DashboardActivity extends BaseDownloadActivity { private static final String EXCEPTION_FILE_SIZE = "EXCEPTION_FS"; //$NON-NLS-1$ private static final String CONTRIBUTION_VERSION_FLAG = "CONTRIBUTION_VERSION_FLAG"; + private static final int HELP_ID = 0; + private static final int SETTINGS_ID = 1; + private static final int EXIT_ID = 2; private ProgressDialog startProgressDialog; - - - @Override protected void onCreate(Bundle savedInstanceState) { @@ -156,25 +155,22 @@ public class DashboardActivity extends BaseDownloadActivity { android.support.v4.app.FragmentTransaction fragmentTransaction = manager.beginTransaction(); //after rotation list of fragments in fragment transaction is not cleared //so we need to check whether some fragments are already existing - if (manager.findFragmentByTag(DashSearchFragment.TAG) == null){ - DashSearchFragment searchFragment = new DashSearchFragment(); - fragmentTransaction.add(R.id.content, searchFragment, DashSearchFragment.TAG); - } if (manager.findFragmentByTag(DashMapFragment.TAG) == null){ DashMapFragment mapFragment = new DashMapFragment(); fragmentTransaction.add(R.id.content, mapFragment, DashMapFragment.TAG); } - + if (manager.findFragmentByTag(DashSearchFragment.TAG) == null){ + DashSearchFragment searchFragment = new DashSearchFragment(); + fragmentTransaction.add(R.id.content, searchFragment, DashSearchFragment.TAG); + } if (manager.findFragmentByTag(DashFavoritesFragment.TAG) == null){ DashFavoritesFragment favoritesFragment = new DashFavoritesFragment(); fragmentTransaction.add(R.id.content, favoritesFragment, DashFavoritesFragment.TAG); } - if (manager.findFragmentByTag(DashUpdatesFragment.TAG) == null){ DashUpdatesFragment updatesFragment = new DashUpdatesFragment(); fragmentTransaction.add(R.id.content, updatesFragment, DashUpdatesFragment.TAG); } - if (manager.findFragmentByTag(DashPluginsFragment.TAG) == null){ DashPluginsFragment pluginsFragment = new DashPluginsFragment(); fragmentTransaction.add(R.id.content, pluginsFragment, DashPluginsFragment.TAG).commit(); @@ -282,6 +278,10 @@ public class DashboardActivity extends BaseDownloadActivity { @Override public void onDismiss(DialogInterface dialog) { checkVectorIndexesDownloaded(); + // Do some action on close + // FIXME uncomment + // app.getResourceManager().getRenderer().clearCache(); + // mapView.refreshMap(true); } }); } else { @@ -382,12 +382,12 @@ public class DashboardActivity extends BaseDownloadActivity { @Override public boolean onCreateOptionsMenu(Menu menu) { - menu.add(0, 0, 0, R.string.tips_and_tricks).setIcon(R.drawable.ic_ac_help) - .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); - menu.add(0, 1, 0, R.string.settings).setIcon(R.drawable.ic_ac_settings) - .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); - menu.add(0, 2, 0, R.string.exit_Button).setIcon(R.drawable.ic_ac_close) - .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW); + menu.add(0, HELP_ID, 0, R.string.tips_and_tricks).setIcon(R.drawable.ic_ac_help) + .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); + menu.add(0, SETTINGS_ID, 0, R.string.settings).setIcon(R.drawable.ic_ac_settings) + .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); + menu.add(0, EXIT_ID, 0, R.string.exit_Button).setIcon(R.drawable.ic_ac_close) + .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); return true; } @@ -400,7 +400,7 @@ public class DashboardActivity extends BaseDownloadActivity { @Override public boolean onOptionsItemSelected(MenuItem item) { OsmAndAppCustomization appCustomization = getMyApplication().getAppCustomization(); - if (item.getItemId() == 0) { + if (item.getItemId() == HELP_ID) { if(TIPS_AND_TRICKS) { TipsAndTricksActivity activity = new TipsAndTricksActivity(this); Dialog dlg = activity.getDialogToShowTips(false, true); @@ -409,10 +409,10 @@ public class DashboardActivity extends BaseDownloadActivity { final Intent helpIntent = new Intent(this, HelpActivity.class); startActivity(helpIntent); } - } else if (item.getItemId() == 1){ + } else if (item.getItemId() == SETTINGS_ID){ final Intent settings = new Intent(this, appCustomization.getSettingsActivity()); startActivity(settings); - } else if (item.getItemId() == 2){ + } else if (item.getItemId() == EXIT_ID){ getMyApplication().closeApplication(this); } return true; diff --git a/OsmAnd/src/net/osmand/plus/api/render/Paint.java b/OsmAnd/src/net/osmand/plus/api/render/Paint.java deleted file mode 100644 index 018ac9ab3e..0000000000 --- a/OsmAnd/src/net/osmand/plus/api/render/Paint.java +++ /dev/null @@ -1,56 +0,0 @@ -package net.osmand.plus.api.render; - - -public interface Paint { - public enum Style { - FILL (0), - STROKE (1), - FILL_AND_STROKE (2); - Style(int nativeInt) { - this.nativeInt = nativeInt; - } - final int nativeInt; - } - - public enum Cap { - BUTT (0), - ROUND (1), - SQUARE (2); - private Cap(int nativeInt) { - this.nativeInt = nativeInt; - } - final int nativeInt; - } - - public enum Join { - MITER (0), - ROUND (1), - BEVEL (2); - private Join(int nativeInt) { - this.nativeInt = nativeInt; - } - final int nativeInt; - } - - public enum Align { - LEFT (0), - CENTER (1), - RIGHT (2); - private Align(int nativeInt) { - this.nativeInt = nativeInt; - } - final int nativeInt; - } - - void setColor(int color); - - int getColor(); - - void setTextAlign(Align align); - - void setStrokeWidth(float width); - - void setAntiAlias(boolean flag); - - void setStyle(Style style); -} diff --git a/OsmAnd/src/net/osmand/plus/api/render/Path.java b/OsmAnd/src/net/osmand/plus/api/render/Path.java deleted file mode 100644 index 0a384baf05..0000000000 --- a/OsmAnd/src/net/osmand/plus/api/render/Path.java +++ /dev/null @@ -1,5 +0,0 @@ -package net.osmand.plus.api.render; - -public interface Path { - -} diff --git a/OsmAnd/src/net/osmand/plus/api/render/Typeface.java b/OsmAnd/src/net/osmand/plus/api/render/Typeface.java deleted file mode 100644 index a234efd27b..0000000000 --- a/OsmAnd/src/net/osmand/plus/api/render/Typeface.java +++ /dev/null @@ -1,5 +0,0 @@ -package net.osmand.plus.api.render; - -public class Typeface { - -} diff --git a/OsmAnd/src/net/osmand/plus/dashboard/DashFavoritesFragment.java b/OsmAnd/src/net/osmand/plus/dashboard/DashFavoritesFragment.java index 136b5bfbae..d84f1b3d83 100644 --- a/OsmAnd/src/net/osmand/plus/dashboard/DashFavoritesFragment.java +++ b/OsmAnd/src/net/osmand/plus/dashboard/DashFavoritesFragment.java @@ -21,6 +21,7 @@ import net.osmand.plus.OsmAndFormatter; import net.osmand.plus.R; import net.osmand.plus.activities.MapActivity; import net.osmand.plus.base.FavoriteImageDrawable; +import net.osmand.plus.helpers.FontCache; import net.osmand.util.MapUtils; import java.util.ArrayList; @@ -36,7 +37,7 @@ public class DashFavoritesFragment extends DashBaseFragment { @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = getActivity().getLayoutInflater().inflate(R.layout.dash_favorites_fragment, container, false); - Typeface typeface = Typeface.createFromAsset(getActivity().getAssets(), "fonts/Roboto-Medium.ttf"); + Typeface typeface = FontCache.getRobotoMedium(getActivity()); ((TextView) view.findViewById(R.id.fav_text)).setTypeface(typeface); ((Button) view.findViewById(R.id.show_all)).setTypeface(typeface); diff --git a/OsmAnd/src/net/osmand/plus/dashboard/DashMapFragment.java b/OsmAnd/src/net/osmand/plus/dashboard/DashMapFragment.java index cc738a85c4..a8812bea36 100644 --- a/OsmAnd/src/net/osmand/plus/dashboard/DashMapFragment.java +++ b/OsmAnd/src/net/osmand/plus/dashboard/DashMapFragment.java @@ -15,6 +15,9 @@ import net.osmand.map.MapTileDownloader.DownloadRequest; import net.osmand.map.MapTileDownloader.IMapDownloaderCallback; import net.osmand.plus.OsmAndAppCustomization; import net.osmand.plus.R; +import net.osmand.plus.activities.MapActivity; +import net.osmand.plus.activities.MapActivityActions; +import net.osmand.plus.helpers.FontCache; import net.osmand.plus.render.MapVectorLayer; import net.osmand.plus.resources.ResourceManager; import net.osmand.plus.views.MapTextLayer; @@ -41,22 +44,25 @@ public class DashMapFragment extends DashBaseFragment implements IMapDownloader getMyApplication().getResourceManager().getMapTileDownloader().addDownloaderCallback(this); } + protected void startMapActivity() { + MapActivity.launchMapActivityMoveToTop(getActivity()); + } + @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = getActivity().getLayoutInflater().inflate(R.layout.dash_map_fragment, container, false); setupMapView(view); - Typeface typeface = Typeface.createFromAsset(getActivity().getAssets(), "fonts/Roboto-Medium.ttf"); + Typeface typeface = FontCache.getRobotoMedium(getActivity()); ((TextView) view.findViewById(R.id.map_text)).setTypeface(typeface); ((Button) view.findViewById(R.id.show_map)).setTypeface(typeface); (view.findViewById(R.id.show_map)).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - Activity activity = getActivity(); - OsmAndAppCustomization appCustomization = getMyApplication().getAppCustomization(); - final Intent mapIndent = new Intent(activity, appCustomization.getMapActivity()); - activity.startActivityForResult(mapIndent, 0); + startMapActivity(); } + + }); return view; @@ -64,6 +70,13 @@ public class DashMapFragment extends DashBaseFragment implements IMapDownloader private void setupMapView(View view){ OsmAndMapSurfaceView surf = (OsmAndMapSurfaceView) view.findViewById(R.id.MapView); + surf.setOnClickListener(new View.OnClickListener() { + + @Override + public void onClick(View v) { + startMapActivity(); + } + }); osmandMapTileView = surf.getMapView(); osmandMapTileView.getView().setVisibility(View.VISIBLE); osmandMapTileView.removeAllLayers(); @@ -75,10 +88,16 @@ public class DashMapFragment extends DashBaseFragment implements IMapDownloader osmandMapTileView.addLayer(mapVectorLayer, 0.5f); osmandMapTileView.setMainLayer(mapVectorLayer); mapVectorLayer.setVisible(true); + osmandMapTileView.setShowMapPosition(false); + } + + @Override + public void onResume() { + super.onResume(); LatLon lm = getMyApplication().getSettings().getLastKnownMapLocation(); int zm = getMyApplication().getSettings().getLastKnownMapZoom(); osmandMapTileView.setLatLon(lm.getLatitude(), lm.getLongitude()); - osmandMapTileView.setIntZoom(zm); + osmandMapTileView.setComplexZoom(zm, osmandMapTileView.getSettingsZoomScale()); osmandMapTileView.refreshMap(true); } diff --git a/OsmAnd/src/net/osmand/plus/dashboard/DashPluginsFragment.java b/OsmAnd/src/net/osmand/plus/dashboard/DashPluginsFragment.java index cb2d801a3c..87997852db 100644 --- a/OsmAnd/src/net/osmand/plus/dashboard/DashPluginsFragment.java +++ b/OsmAnd/src/net/osmand/plus/dashboard/DashPluginsFragment.java @@ -14,6 +14,7 @@ import android.widget.LinearLayout; import android.widget.TextView; import net.osmand.plus.OsmandPlugin; import net.osmand.plus.R; +import net.osmand.plus.helpers.FontCache; import java.util.List; @@ -27,7 +28,7 @@ public class DashPluginsFragment extends DashBaseFragment { @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = getActivity().getLayoutInflater().inflate(R.layout.dash_plugins_fragment, container, false); - Typeface typeface = Typeface.createFromAsset(getActivity().getAssets(), "fonts/Roboto-Medium.ttf"); + Typeface typeface = FontCache.getRobotoMedium(getActivity()); ((TextView) view.findViewById(R.id.plugin_text)).setTypeface(typeface); ((Button) view.findViewById(R.id.show_all)).setTypeface(typeface); view.findViewById(R.id.show_all).setOnClickListener(new View.OnClickListener() { diff --git a/OsmAnd/src/net/osmand/plus/dashboard/DashSearchFragment.java b/OsmAnd/src/net/osmand/plus/dashboard/DashSearchFragment.java index d00207c490..77906528af 100644 --- a/OsmAnd/src/net/osmand/plus/dashboard/DashSearchFragment.java +++ b/OsmAnd/src/net/osmand/plus/dashboard/DashSearchFragment.java @@ -3,6 +3,7 @@ package net.osmand.plus.dashboard; import net.osmand.plus.OsmAndAppCustomization; import net.osmand.plus.R; import net.osmand.plus.activities.search.SearchActivity; +import net.osmand.plus.helpers.FontCache; import android.app.Activity; import android.content.Intent; import android.graphics.Typeface; @@ -28,8 +29,7 @@ public class DashSearchFragment extends DashBaseFragment { public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = getActivity().getLayoutInflater().inflate(R.layout.dash_search_fragment, container, false); setupButtons(view); - // TODO cache typeface ? - Typeface typeface = Typeface.createFromAsset(getActivity().getAssets(), "fonts/Roboto-Medium.ttf"); + Typeface typeface = FontCache.getRobotoMedium(getActivity()); ((TextView) view.findViewById(R.id.search_for)).setTypeface(typeface); return view; } diff --git a/OsmAnd/src/net/osmand/plus/helpers/FontCache.java b/OsmAnd/src/net/osmand/plus/helpers/FontCache.java new file mode 100644 index 0000000000..989a21676f --- /dev/null +++ b/OsmAnd/src/net/osmand/plus/helpers/FontCache.java @@ -0,0 +1,27 @@ +package net.osmand.plus.helpers; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +import android.content.Context; +import android.graphics.Typeface; + +public class FontCache { + private static Map fontMap = new ConcurrentHashMap(); + public static final String ROBOTO_MEDIUM = "fonts/Roboto-Medium.ttf"; + public static final String ROBOTO_REGULAR = "fonts/Roboto-Regular.ttf"; + + public static Typeface getRobotoMedium(Context context) { + return getFont(context, ROBOTO_MEDIUM); + } + + public static Typeface getFont(Context context, String fontName) { + if (fontMap.containsKey(fontName)) { + return fontMap.get(fontName); + } else { + Typeface tf = Typeface.createFromAsset(context.getAssets(), fontName); + fontMap.put(fontName, tf); + return tf; + } + } +} \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/plus/render/MapRenderRepositories.java b/OsmAnd/src/net/osmand/plus/render/MapRenderRepositories.java index 4c54604e49..915dd55d99 100644 --- a/OsmAnd/src/net/osmand/plus/render/MapRenderRepositories.java +++ b/OsmAnd/src/net/osmand/plus/render/MapRenderRepositories.java @@ -614,15 +614,15 @@ public class MapRenderRepositories { // calculate data box QuadRect dataBox = requestedBox.getLatLonBounds(); long now = System.currentTimeMillis(); - if (cObjectsBox.left > dataBox.left || cObjectsBox.top > dataBox.top || cObjectsBox.right < dataBox.right - || cObjectsBox.bottom < dataBox.bottom || (nativeLib != null) == (cNativeObjects == null)) { + if (cObjectsBox.left > dataBox.left || cObjectsBox.top < dataBox.top || cObjectsBox.right < dataBox.right + || cObjectsBox.bottom > dataBox.bottom || (nativeLib != null) == (cNativeObjects == null)) { // increase data box in order for rotate if ((dataBox.right - dataBox.left) > (dataBox.top - dataBox.bottom)) { - double wi = (dataBox.right - dataBox.left) * .2; + double wi = (dataBox.right - dataBox.left) * .05; dataBox.left -= wi; dataBox.right += wi; } else { - double hi = (dataBox.top - dataBox.bottom) * .2; + double hi = (dataBox.top - dataBox.bottom) * .05; dataBox.top += hi; dataBox.bottom -= hi; } diff --git a/OsmAnd/src/net/osmand/plus/views/OsmAndMapSurfaceView.java b/OsmAnd/src/net/osmand/plus/views/OsmAndMapSurfaceView.java index fdcf093d02..845f5096f3 100644 --- a/OsmAnd/src/net/osmand/plus/views/OsmAndMapSurfaceView.java +++ b/OsmAnd/src/net/osmand/plus/views/OsmAndMapSurfaceView.java @@ -11,6 +11,7 @@ import android.view.SurfaceView; public class OsmAndMapSurfaceView extends SurfaceView implements Callback { private OsmandMapTileView mapView; + private OnClickListener onClickListener; public OsmAndMapSurfaceView(Context context, AttributeSet attrs) { super(context, attrs); @@ -52,6 +53,11 @@ public class OsmAndMapSurfaceView extends SurfaceView implements Callback { return r; } + @Override + public void setOnClickListener(OnClickListener l) { + super.setOnClickListener(l); + this.onClickListener = l; + } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { Boolean r = mapView.onKeyDown(keyCode, event); @@ -63,6 +69,9 @@ public class OsmAndMapSurfaceView extends SurfaceView implements Callback { @Override public boolean onTouchEvent(MotionEvent event) { + if(onClickListener != null) { + return super.onTouchEvent(event); + } return mapView.onTouchEvent(event); } diff --git a/OsmAnd/src/net/osmand/plus/views/OsmandMapTileView.java b/OsmAnd/src/net/osmand/plus/views/OsmandMapTileView.java index 92cbfdcafb..00967d98dc 100644 --- a/OsmAnd/src/net/osmand/plus/views/OsmandMapTileView.java +++ b/OsmAnd/src/net/osmand/plus/views/OsmandMapTileView.java @@ -5,12 +5,12 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; + import net.osmand.PlatformUtil; import net.osmand.access.AccessibilityActionsProvider; import net.osmand.access.AccessibleToast; import net.osmand.access.MapExplorer; import net.osmand.core.android.MapRendererView; -import net.osmand.core.jni.IMapRenderer; import net.osmand.data.LatLon; import net.osmand.data.QuadPoint; import net.osmand.data.QuadPointDouble; @@ -27,7 +27,9 @@ import net.osmand.plus.helpers.TwoFingerTapDetector; import net.osmand.plus.views.MultiTouchSupport.MultiTouchZoomListener; import net.osmand.plus.views.OsmandMapLayer.DrawSettings; import net.osmand.util.MapUtils; + import org.apache.commons.logging.Log; + import android.annotation.SuppressLint; import android.content.Context; import android.content.res.Resources; From 17e302e2e59561242243eaa1fa081a464a09e940 Mon Sep 17 00:00:00 2001 From: jan madsen Date: Sat, 29 Nov 2014 14:11:00 +0100 Subject: [PATCH 062/157] Translated using Weblate (Danish) Currently translated at 100.0% (582 of 582 strings) --- OsmAnd/res/values-da/phrases.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-da/phrases.xml b/OsmAnd/res/values-da/phrases.xml index cfeae9d0a0..b285ceadd0 100644 --- a/OsmAnd/res/values-da/phrases.xml +++ b/OsmAnd/res/values-da/phrases.xml @@ -214,7 +214,7 @@ Mineskakt Stoll Oliebrønd - Trianguleringspunkt + Geodætisk punkt Vindmølle Stenbrud Vingård From c637a0ef5696cfb53ecd4fc39ac99ab5371c65bb Mon Sep 17 00:00:00 2001 From: Mirco Zorzo Date: Sat, 29 Nov 2014 14:53:09 +0100 Subject: [PATCH 063/157] Translated using Weblate (Italian) Currently translated at 62.1% (362 of 582 strings) --- OsmAnd/res/values-it/phrases.xml | 154 +++++++++++++++++++++++++++++++ 1 file changed, 154 insertions(+) diff --git a/OsmAnd/res/values-it/phrases.xml b/OsmAnd/res/values-it/phrases.xml index 0ff9146b73..6f73942b75 100644 --- a/OsmAnd/res/values-it/phrases.xml +++ b/OsmAnd/res/values-it/phrases.xml @@ -232,4 +232,158 @@ Parapendio Pelota Pattinaggio a rotelle + Spiaggia + Baia + Rapide + Fiordo + Zona umida + Riserva naturale + Isola + Base militare navale + Sito esplosioni nucleari +Poligono militare + Area pericolosa + Caserma + Bunker + Aeroporto militare + Area militare + Relitto + + Scoglio + Transponder radar marittimo + Cascata + Dolina + Ghiacciaio + Crinale + Cratere + Vulcano + Sella + Picco montuoso + Entrata grotta/caverna + Pagamento Bitcoin + + Bancomat + Banca + Internet caffè + + Crematorio + Celle mortuarie + Bordello + Sauna + Car sharing + Autonoleggio + Lavanderia + Lavasecco + Tatuatore + Centro massaggi + Parrucchiere + Centro unghie + Salone di bellezza + Costruzione finestre + + Costruttore orologi + Sarto + Produzione calzature + Scultore + Idraulico + Laboratorio fotografico + Fotografo + Posatore di parquet + Pittore + Ottico + Gioielliere + Riscaldamento, ventilazione e condizionamento + Giardiniere + Elettricista + Sarto + Luogo di culto: cristiano + Luogo di culto + Chalet + + Rifugio alpino + Motel + Ostello + Pensione + Hotel + Parco a tema + + Zoo + Monumento + Relitto navale + Pietra runica + Rovine storiche + Fontana + Forte + Porta di ingresso della città + Castello + Pietra di confine + Campo di battaglia + Sito archeologico + Memoriale + Attrazione turistica + Museo + Pallavolo + + Toboga + Tennis + Tennis tavolo + Piscina + Calcio + Sci + Skateboard + Pattinaggio + Tiro + Canottaggio + Rugby a 15 + Rugby a 13 + Racquet + Pala battifuoco + Manichetta antincendio + Stazione protezione civile + Cassone di sabbia + Laghetto acqua anti-incendio + Punto di accesso di emergenza + + Casello + Posto di controllo + Dosso lungo + Cuscini rallentatori + Dosso tavola + Restringimento di carreggiata rallentatore + Luce di stop + + Rampa per veicoli + Fermata tram (absoleta) + Terminal aeroporto + Scivolo + Terminal traghetto + Faro + + Stazione skilift + Funivia + Skilift a àncora + Skilift a J + Skilift a piattello + Skilift misto + Skilift + Skilift a fune + Skilift per oggetti + Skilift a tappeto + + Tunnel + Fermata filobus + Stazione ferroviaria + Pozzo + Fontanella + Impianto idrico + Cantiere navale + Torre idrica + Chiuse + Inversione di marcia per battelli + Sbarramento + Diga + Centralino telefonico + + Discarica + Zona raccolta di rifiuti From ef2740f7ee03d995da992c0d49d3bc633c5c523f Mon Sep 17 00:00:00 2001 From: Mirco Zorzo Date: Sat, 29 Nov 2014 17:00:09 +0100 Subject: [PATCH 064/157] Translated using Weblate (Italian) Currently translated at 100.0% (1568 of 1568 strings) --- OsmAnd/res/values-it/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-it/strings.xml b/OsmAnd/res/values-it/strings.xml index d2ded378ae..35089ea594 100644 --- a/OsmAnd/res/values-it/strings.xml +++ b/OsmAnd/res/values-it/strings.xml @@ -1547,7 +1547,7 @@ Afghanistan, Albania, Algeria, Andorra, Angola, Anguilla, Antigua and Barbuda, A Annuncia i punti GPX di passaggio Ferma OsMoDroid Avvia OsMoDroid - Scegliete la regione di guida: USA, Europa, UK, Asia o Altre + Scegliete la regione di guida: USA, Europa, UK, Asia o altre Regione di guida Giappone Stati Uniti @@ -1583,7 +1583,7 @@ Afghanistan, Albania, Algeria, Andorra, Angola, Anguilla, Antigua and Barbuda, A Versione: Informazioni - Informazioni versione, licenze, membri del progetto + Informazioni versione, licenze e membri del progetto Aiuto Stili mappa "OsmAnd supporta le mappe vettoriali offline con stili di visualizzazione differenti per adattarsi alle tue esigenze: From a3a322f73311f2ad7a53241a9d98305cfe03a2bc Mon Sep 17 00:00:00 2001 From: xmd5a Date: Sat, 29 Nov 2014 20:49:57 +0300 Subject: [PATCH 065/157] Update phrases --- OsmAnd/res/values/phrases.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/OsmAnd/res/values/phrases.xml b/OsmAnd/res/values/phrases.xml index 7c4a73ea0e..6d92ea79cf 100644 --- a/OsmAnd/res/values/phrases.xml +++ b/OsmAnd/res/values/phrases.xml @@ -214,6 +214,8 @@ Pier Surveillance + Observatory + Astronomical observatory Construction Works Mineshaft @@ -404,6 +406,8 @@ Caravan site Picnic site Spring + Hot spring + Geyser Cemetery Graveyard Shelter From d9836e03a94ddffd3f0fec9d6262015c4615b0de Mon Sep 17 00:00:00 2001 From: Mirco Zorzo Date: Sat, 29 Nov 2014 17:10:13 +0100 Subject: [PATCH 066/157] Translated using Weblate (Italian) Currently translated at 100.0% (1568 of 1568 strings) --- OsmAnd/res/values-it/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-it/strings.xml b/OsmAnd/res/values-it/strings.xml index 35089ea594..fb9bd51c21 100644 --- a/OsmAnd/res/values-it/strings.xml +++ b/OsmAnd/res/values-it/strings.xml @@ -782,7 +782,7 @@ Visualizza le impostazioni per la configurazione avanzata della mappa (come aumentarne i dettagli) e alcune di specifici dispositivi. Visualizza impostazioni per funzionalità in sviluppo e debug come la navigazione animata o visualizzare la prestazione del rendering. Plugin - Seleziona un plugin per attivarlo o disattivarlo. (potrebbe essere richiesto il riavvio di OsmAnd.) + Seleziona un plugin per attivarlo o disattivarlo. (Potrebbe essere richiesto il riavvio di OsmAnd.) I plugin abilitano funzionalità aggiuntive e impostazioni avanzate Plugin Novità nella versione 0.8.0: @@ -1741,7 +1741,7 @@ Si consiglia di aggiungere uno o più punti intermedi per migliorarne le prestaz Formato non valido: %s ID univoco del dispositivo Configura le impostazioni di monitoraggio e imposta il canale di monitoraggio personale - "OpenStreetMap monitoraggio avanzato in diretta, vedi http://osmo.mobi. Fornisce la possibilità di tracciare altri dispositivi e di essere tracciati. Crea gruppo anonimi, condivide reciprocamente la posizione e comunica. Sono disponibili varie impostazioni di monitoraggio, per la sessione in corso o permanenti. I gruppi anonimi sono limitate per il numero di giorni e alcune funzioni es. non c\'è il controllo remoto e l\'amministratore del gruppo. Gruppi con tutte le funzionalità possono essere creati dal sito e solo gli utenti registrati possono accedervi. " + "OpenStreetMap monitoraggio avanzato in diretta, vedi http://osmo.mobi. Fornisce la possibilità di tracciare altri dispositivi e di essere tracciati. Crea gruppo anonimi, condivide reciprocamente la posizione e comunica. Sono disponibili varie impostazioni di monitoraggio, per la sessione in corso o permanenti. I gruppi anonimi sono limitati a un numero di giorni e alcune funzioni es. non c\'è il controllo remoto e l\'amministratore del gruppo. Gruppi con tutte le funzionalità possono essere creati dal sito e solo gli utenti registrati possono accedervi. " OsMo (Monitoraggio avanzato in tempo reale) Monitoraggio OpenStreetMap Mai From c47816d0dd2f4e7dd8b15ed56d536c0cda060415 Mon Sep 17 00:00:00 2001 From: Ldm Public Date: Sat, 29 Nov 2014 17:42:54 +0100 Subject: [PATCH 067/157] Translated using Weblate (French) Currently translated at 77.8% (453 of 582 strings) --- OsmAnd/res/values-fr/phrases.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-fr/phrases.xml b/OsmAnd/res/values-fr/phrases.xml index 63f8fc3955..024d543b55 100644 --- a/OsmAnd/res/values-fr/phrases.xml +++ b/OsmAnd/res/values-fr/phrases.xml @@ -446,7 +446,7 @@ Théâtre Cirque Lieu de pêche - Parc de stationnement + Parc Barbecue From cd3fcd0020f035d2b8546816c57931ef55edcceb Mon Sep 17 00:00:00 2001 From: Lu Ca Date: Sat, 29 Nov 2014 23:14:11 +0100 Subject: [PATCH 068/157] Translated using Weblate (Sardinian) Currently translated at 100% (0 of 0 strings) Created new translation. --- OsmAnd/res/values-sc/phrases.xml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 OsmAnd/res/values-sc/phrases.xml diff --git a/OsmAnd/res/values-sc/phrases.xml b/OsmAnd/res/values-sc/phrases.xml new file mode 100644 index 0000000000..a6b3daec93 --- /dev/null +++ b/OsmAnd/res/values-sc/phrases.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file From e9cbb5dff206e29b546f3938ca9668364030c68e Mon Sep 17 00:00:00 2001 From: Roberto GEB Date: Sat, 29 Nov 2014 19:17:10 +0100 Subject: [PATCH 069/157] Translated using Weblate (Spanish) Currently translated at 100.0% (1568 of 1568 strings) --- OsmAnd/res/values-es/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-es/strings.xml b/OsmAnd/res/values-es/strings.xml index 4b8f22828e..ec52d10d98 100644 --- a/OsmAnd/res/values-es/strings.xml +++ b/OsmAnd/res/values-es/strings.xml @@ -1484,7 +1484,7 @@ Afganistán, Albania, Alemania, Andorra, Angola, Anguila, Antigua y Barbuda, Ant Preferencias de ruteo Especifica la velocidad en el habla sintetizada (TTS) Velocidad del habla sintetizada (TTS) - ¿Quieres que OsmAnd intente mover sus archivos de datos al nuevo destino? + ¿Quieres que OsmAnd copie sus archivos de datos al nuevo destino? Copiando archivo (%s) al nuevo destino... Copiando archivos de OsmAnd al nuevo destino (%s) Copiando archivos de datos de OsmAnd From 0c13dd1604f02c7753d74e1db24dd3eceaf71e61 Mon Sep 17 00:00:00 2001 From: jan madsen Date: Sat, 29 Nov 2014 20:52:01 +0100 Subject: [PATCH 070/157] Translated using Weblate (Danish) Currently translated at 100.0% (582 of 582 strings) --- OsmAnd/res/values-da/phrases.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/OsmAnd/res/values-da/phrases.xml b/OsmAnd/res/values-da/phrases.xml index b285ceadd0..70541b2051 100644 --- a/OsmAnd/res/values-da/phrases.xml +++ b/OsmAnd/res/values-da/phrases.xml @@ -24,8 +24,8 @@ Kunsthandler Babyudstryr Tasker - Badeværelser - Senge + Badeværelsesmøbler + Soveværelsesmøbler Modebutik Tæppeforretning Materialist @@ -52,7 +52,7 @@ Værktøj Høreapparater Urter - HiFi + HiFi butik Husholdningsartikler Jagtudstyr Boligindretning @@ -70,7 +70,7 @@ Dyrehandel Radiodele Genbrugsbutik - Skibsproviantere + Skibsproviant Sportsforretning Papirvare Isenkræmmer From 67a97c41508241a03e143d6473df81aada3dea79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20G=C4=85tkowski?= Date: Sun, 30 Nov 2014 13:09:13 +0100 Subject: [PATCH 071/157] Translated using Weblate (Polish) Currently translated at 100.0% (1568 of 1568 strings) --- OsmAnd/res/values-pl/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/OsmAnd/res/values-pl/strings.xml b/OsmAnd/res/values-pl/strings.xml index 65a7794c7d..306b3f7dd7 100644 --- a/OsmAnd/res/values-pl/strings.xml +++ b/OsmAnd/res/values-pl/strings.xml @@ -1951,4 +1951,10 @@ Afganistan, Afryka Południowa, Albania, Algieria, Andora, Angola, Anguilla, Ant Użyj bezpiecznego połączenia z serwerem Użyj https Zaawansowane + Dom + Mapy + Wyszukaj + POKAŻ MAPĘ + POKAŻ WSZYSTKIE + Współrzędne From 9b846726475a6654b5ffd5549e4918aae36385d0 Mon Sep 17 00:00:00 2001 From: Konfrare Albert Date: Sun, 30 Nov 2014 12:29:40 +0100 Subject: [PATCH 072/157] Translated using Weblate (Catalan) Currently translated at 100.0% (1568 of 1568 strings) --- OsmAnd/res/values-ca/strings.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/OsmAnd/res/values-ca/strings.xml b/OsmAnd/res/values-ca/strings.xml index b33dd7675e..d9b39b8fcd 100644 --- a/OsmAnd/res/values-ca/strings.xml +++ b/OsmAnd/res/values-ca/strings.xml @@ -793,7 +793,7 @@ \n\t* S\'ha corregit Arabic, Kannada scripting i llenguatges RTL " Seguible No s\'ha pogut analitzar la geo intenció «%s» -Geoenmegatzament +Geocerca L\'us de la navagacio fora de línia d\'OsmAnd s\'aplica nomes a rutes > 20km (experimental) Mode avançat… Aparcament @@ -896,7 +896,7 @@ Mostra les parades del transport públic al mapa Intersecció: {0} x {1} a {2} Preferit - Història + Historial Enviant… Cerca una adreça utilitzant OSM Nominatim Núm. de la casa, carrer, ciutat @@ -1702,7 +1702,7 @@ La llista de països inclosos (bàsicament tot el món!): Afganistan, Albània, Traces seleccionades Totes les traces Preferits - Llocs personals + Preferits Llocs personals L\'usuari %1$s s\'ha unit al grup %2$s L\'usuari %1$s ha deixat el grup %2$s @@ -1897,10 +1897,10 @@ La llista de països inclosos (bàsicament tot el món!): Afganistan, Albània, Avançat Utilitzeu una connexió segura amb el servidor Utilitzeu https - Casa - Recerca de - VEURE EL MAPA - VEURE TOT + Inici + Cerca per + MOSTRA EL MAPA + MOSTRA\'LS TOTS Coordenades Mapes From 2b095019a601294260c149f371b72eb59531389f Mon Sep 17 00:00:00 2001 From: Leif Larsson Date: Sun, 30 Nov 2014 13:05:08 +0100 Subject: [PATCH 073/157] Translated using Weblate (Swedish) Currently translated at 99.4% (1559 of 1568 strings) --- OsmAnd/res/values-sv/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/OsmAnd/res/values-sv/strings.xml b/OsmAnd/res/values-sv/strings.xml index 33cf5f52b1..5add54ea54 100644 --- a/OsmAnd/res/values-sv/strings.xml +++ b/OsmAnd/res/values-sv/strings.xml @@ -1738,4 +1738,5 @@ VISA KARTA VISA ALLA Koordinater + Kartor From a256e6b02f736ef06bbe2deae8cd32b46ef0dfcf Mon Sep 17 00:00:00 2001 From: jan madsen Date: Sun, 30 Nov 2014 12:53:22 +0100 Subject: [PATCH 074/157] Translated using Weblate (Danish) Currently translated at 100.0% (582 of 582 strings) --- OsmAnd/res/values-da/phrases.xml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/OsmAnd/res/values-da/phrases.xml b/OsmAnd/res/values-da/phrases.xml index 70541b2051..2f289ddabc 100644 --- a/OsmAnd/res/values-da/phrases.xml +++ b/OsmAnd/res/values-da/phrases.xml @@ -130,16 +130,16 @@ Trykluft Parkering Motorcykelparkering - Parkering indgang - Garager + Indgang til parkering + Garage Offentlig transport stoppested Busstoppested - Trolley busstoppested + Trolleybus stoppested Busstoppested (forældet) Sporvognsstoppested Sporvognsstoppestedet (forældet) - Offentlig transport station + Offentligtransport station Busstation (forældet) Banegård (forældet) Perron (forældet) @@ -182,7 +182,7 @@ Brønd Standrør - Vandværker + Vandværk Værft Renseanlæg Vandtårn @@ -244,7 +244,7 @@ Apotek Hospital - Læger + Læge Klinik Førstehjælp Tandlæge @@ -270,7 +270,7 @@ Forsikring Ejendomsmægler Advokat - Teleselvskab + Telekommunikation selskab NGO Rådhus Arbejdsformidling @@ -280,14 +280,14 @@ Arkitekt Reklamebureau Uddannelsesinstitution - Studio + Lydstudio Bookmaker Stadium Sportscenter Golfbane Skøjtebane - Boldbane + Sportsplads Løbebane Cykelbane Travbane @@ -610,7 +610,7 @@ Alternativ medicin Audiolog Blodbank - Medicinskcenter + Medicinsk center Jordemoder Ergoterapeut Optiker From 450644ac3bb7fd6fd9709933025d29bad9abdfcc Mon Sep 17 00:00:00 2001 From: Mirco Zorzo Date: Sun, 30 Nov 2014 11:05:34 +0100 Subject: [PATCH 075/157] Translated using Weblate (Italian) Currently translated at 82.1% (478 of 582 strings) --- OsmAnd/res/values-it/phrases.xml | 122 ++++++++++++++++++++++++++++++- 1 file changed, 121 insertions(+), 1 deletion(-) diff --git a/OsmAnd/res/values-it/phrases.xml b/OsmAnd/res/values-it/phrases.xml index 6f73942b75..52554cebff 100644 --- a/OsmAnd/res/values-it/phrases.xml +++ b/OsmAnd/res/values-it/phrases.xml @@ -336,7 +336,7 @@ Canottaggio Rugby a 15 Rugby a 13 - Racquet + Racquetball Pala battifuoco Manichetta antincendio Stazione protezione civile @@ -386,4 +386,124 @@ Discarica Zona raccolta di rifiuti + Istituto scolastico + Scommesse + + Stadio + Centro sportivo + Pista pattinaggio sul ghiaccio + Atletica leggera + Bocce + Ciclismo + Ginnastica + Luogo di culto: duddista + Luogo di culto: induismo + Luogo di culto: shintoismo + Luogo di culto: taoismo + Monastero + Monastero storico + Croce storica + Tabernacolo storico + Informazioni turistiche + Orologio + Punto panoramico + Campeggio + Area caravan e camper + Area attrezzata per picnic + Sorgente + Zona cimiteriale + Cimitero + Pensilina o ricovero + Funicolare + Club artistico + Club astrofili + Club informatico + Club giochi da tavolo + Club motociclistico + Club sportivo + Club giochi + Club automobilistico + Club scacchistico + Club cinefili + Fan club + Club pesca + Club veterani + Club Linux Lug + Club teatrale + Club fotografico + Club caccia + Libreria + Teatro + Circo + Discoteca + Night + Stripclub + Postazione di caccia + Mini golf + Parco giochi + Piscina + Parco acquatico + Parco + + Bar + Ristorante + Fast food + Bar + Pub + Acqua potabile + Barbecue + + Apicoltore + Fabbro + Birrificio + Costruzione barche + Rilegatore + Carpentiere + Posatore di moquette + Servizio di catering + Orologiaio + Vetraio + Artigiano + Isolamento termico degli edifici + Fabbro per serrature + Servizio di duplicazione chiavi + Costruzioni metalliche + Stuccatore + Vasaio + Attrezzature per barche a vela + Costruzione e riparazione di tetti + Sellaio + Velaio + Segheria + Ponteggi e impalcature + Allestimento di stand + Scalpellino + Spazzacamino + Tende da sole + Piastrellista + Lattoniere + Tappezziere + Impresa di pompe funebri + Municipio + Centro di ricerca e sviluppo + Ufficio IT + Redazione giornalistica + Studio di architettura + Agenzia pubblicitaria + Studio di registrazione + Nave storica + Luogo di culto: musulmano + Luogo di culto: sikhismo + Agenzia di viaggi + Cinema + Casinò + Centro sociale + Prestasoldi + Monte di pietà + Cambia valute + Studio contabile + Fiume + Ruscello + Isoletta + From 84515185870519fc186cba0a03bda6b86feccb30 Mon Sep 17 00:00:00 2001 From: Lu Ca Date: Sun, 30 Nov 2014 00:06:10 +0100 Subject: [PATCH 076/157] Translated using Weblate (Sardinian) Currently translated at 8.0% (47 of 582 strings) --- OsmAnd/res/values-sc/phrases.xml | 53 ++++++++++++++++++++++++++++++-- 1 file changed, 51 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-sc/phrases.xml b/OsmAnd/res/values-sc/phrases.xml index a6b3daec93..f303a681d8 100644 --- a/OsmAnd/res/values-sc/phrases.xml +++ b/OsmAnd/res/values-sc/phrases.xml @@ -1,2 +1,51 @@ - - \ No newline at end of file + +Giassu paleontològicu + + Furru de su pane + Alcòlicos + Drogheria + Tzentru cummertziale + Butega de bèvidas + Bancu + Gastronomia + Butega prodotos de fatoria + Bendidore de frùtora + Pischeria + Butega de durches + Gelateria + Supermercadu + Butega de su té + Lateria + Distribudore automàticu + + Libreria + Butega de bitziclètas + Butega de ànime + Anticuariadu + Butega d\'arte + Butega pro pitzinnos + Valigeria + Arredu bagnu + Arredu aposentu de letu + Butega de moda + Butega de tapetes + Potecaria + Bestimenta + Bestimenta pro pitzinnos + Butega de iscarpas + Butega de informàtica + Copisteria + Butega pro su campègiu + Butega de drapègios + Butega de banitas + Butega de artìculos pro imberghidura + Butega de artìculos pro sa domo + Sexy shop + Butega pro sa pisca + Froraju + Curnisas + Butega de mòbiles + Artìculos pro su giardinu + Butega de gas lìcuidu + Empòriu + From 8562980457a028df6bfb1352593d59613f7c1c33 Mon Sep 17 00:00:00 2001 From: Mirco Zorzo Date: Sun, 30 Nov 2014 13:18:39 +0100 Subject: [PATCH 077/157] Translated using Weblate (Italian) Currently translated at 100.0% (1568 of 1568 strings) --- OsmAnd/res/values-it/strings.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/OsmAnd/res/values-it/strings.xml b/OsmAnd/res/values-it/strings.xml index fb9bd51c21..52dde9d2c9 100644 --- a/OsmAnd/res/values-it/strings.xml +++ b/OsmAnd/res/values-it/strings.xml @@ -781,10 +781,10 @@ Visualizza impostazioni per facilitare la registrazione dei tuoi spostamenti su un file GPX o il live tracking tramite un servizio web. Visualizza le impostazioni per la configurazione avanzata della mappa (come aumentarne i dettagli) e alcune di specifici dispositivi. Visualizza impostazioni per funzionalità in sviluppo e debug come la navigazione animata o visualizzare la prestazione del rendering. - Plugin + Componenti aggiuntivi Seleziona un plugin per attivarlo o disattivarlo. (Potrebbe essere richiesto il riavvio di OsmAnd.) I plugin abilitano funzionalità aggiuntive e impostazioni avanzate - Plugin + Componenti aggiuntivi Novità nella versione 0.8.0: \n\t- *Funzionalità a plugin*\n\t- Molte delle funzionalità sono raggruppate per caratteristiche e possono essere abilitate/disabilitate nel Plugin Manager. Si possono abilitare sorgenti di mappe a tasselli (online o in cache), impostazioni per il tracking e molte altre funzionalità nuove o preesistenti. @@ -1790,7 +1790,7 @@ Si consiglia di aggiungere uno o più punti intermedi per migliorarne le prestaz Intervallo di registrazione Scegli l\'intervallo di tempo per l\'invio della posizione giorni - Connetti + Attiva Scade fra Descrizione Regole From 2d51fca3f2cabb800c6b94e1f25de1ed7a13d0c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20G=C4=85tkowski?= Date: Sun, 30 Nov 2014 13:12:32 +0100 Subject: [PATCH 078/157] Translated using Weblate (Polish) Currently translated at 100.0% (1568 of 1568 strings) --- OsmAnd/res/values-pl/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-pl/strings.xml b/OsmAnd/res/values-pl/strings.xml index 306b3f7dd7..7c46d17adf 100644 --- a/OsmAnd/res/values-pl/strings.xml +++ b/OsmAnd/res/values-pl/strings.xml @@ -1556,7 +1556,7 @@ Afganistan, Afryka Południowa, Albania, Algieria, Andora, Angola, Anguilla, Ant Kopiowanie pliku (%s) do nowej lokalizacji... Kopiowanie plików OsmAnd do nowej lokalizacji (%s) Kopiowanie plików OsmAnd - Czy chcesz aby OsmAnd spróbował przenieść dane do nowej lokalizacji? + Czy chcesz aby OsmAnd równierz skopiował dane do nowej lokalizacji? Od wersji 4.4 KitKat nie można pobierać ani aktualizować map w poprzedniej lokalizacji (%s). Czy chcesz ją zmienić na lokalizację dozwoloną i skopiować do niej wszystkie pliki? \n Uwaga 1: Twoje stare pliki zostaną nienaruszone (mogą być usunięte manualnie). \n Uwaga 2: W nowej lokalizacji nie będzie możliwe współdzielenie tych samych plików pomiędzy OsmAnd i OsmAnd+. From 2113d53d79cb2d16c392dbc31f63045deed86430 Mon Sep 17 00:00:00 2001 From: Leif Larsson Date: Sun, 30 Nov 2014 15:17:09 +0100 Subject: [PATCH 079/157] Translated using Weblate (Swedish) Currently translated at 99.4% (1559 of 1568 strings) --- OsmAnd/res/values-sv/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-sv/strings.xml b/OsmAnd/res/values-sv/strings.xml index 5add54ea54..9e3bf0d9e7 100644 --- a/OsmAnd/res/values-sv/strings.xml +++ b/OsmAnd/res/values-sv/strings.xml @@ -1339,7 +1339,7 @@ Efter Androidversion 4.4 (KitKat) går det inte att hämta och uppdatera kartor på den tidigare lagringsmappen (%s). Vill du byta till en tillåten plats och kopiera alla OsmAnd-filerna dit? \n OBS: Gamla filer berörs inte (men kan tas bort manuellt). \n OBS: På den nya lagringsplatsen kommer det inte att vara möjligt att dela filer mellan OsmAnd och OsmAnd+. - Vill du att OsmAnd ska försöka kopiera datafilerna till den nya platsen? + Vill du att OsmAnd också ska kopiera datafilerna till den nya platsen? Kopierar filen (%s) till den nya platsen … Kopierar OsmAnd-datafiler till den nya platsen (%s) Kopierar OsmAnd-datafiler From 27fea5abed6b5bf58f796662044bf1f08de253b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20G=C4=85tkowski?= Date: Sun, 30 Nov 2014 13:18:15 +0100 Subject: [PATCH 080/157] Translated using Weblate (Polish) Currently translated at 3.4% (20 of 582 strings) --- OsmAnd/res/values-pl/phrases.xml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/OsmAnd/res/values-pl/phrases.xml b/OsmAnd/res/values-pl/phrases.xml index a5c27af9e7..5d0b9fc313 100644 --- a/OsmAnd/res/values-pl/phrases.xml +++ b/OsmAnd/res/values-pl/phrases.xml @@ -11,4 +11,14 @@ Sklep z owocami morza Cukiernia Lodziarnia + Stanowisko paleontologiczne + + Supermarket + Sklep herbaciany + Sklep z nabiałem + Automat sprzedający + + Księgarnia + Sklep rowerowy + Sklep z antykami From c5c6b690d8a1b98e6c51c25404891bd6ee1c703c Mon Sep 17 00:00:00 2001 From: jan madsen Date: Sun, 30 Nov 2014 21:09:57 +0100 Subject: [PATCH 081/157] Translated using Weblate (Danish) Currently translated at 100.0% (582 of 582 strings) --- OsmAnd/res/values-da/phrases.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/OsmAnd/res/values-da/phrases.xml b/OsmAnd/res/values-da/phrases.xml index 2f289ddabc..b6cafd8c39 100644 --- a/OsmAnd/res/values-da/phrases.xml +++ b/OsmAnd/res/values-da/phrases.xml @@ -434,7 +434,7 @@ Stripklub Badeby Hundeskov - Fiskested + Fiskeplads Jagtstand Marina Minigolf @@ -474,7 +474,7 @@ Juvelér Låsesmed Nøglebar - Metalarbejder + Metalarbejde Optiker Maler Gulvlægger @@ -496,7 +496,7 @@ Solafskærmning Skorstensfejer Skrædder - Fliselægger + Brolægger Blikkenslager Møbelpolstrer Urmager @@ -592,11 +592,11 @@ Vrag, sømærke Militærflyveplads - Militærbunker + Bunker Kaserne Farezone Militærsøvelsesområde - Militærflådebase + Flådebase Nuklear eksplosionsområde Storby By From 9d513064ad21642ad88f01bf11f60b63e60c9ecf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Michalski?= Date: Sun, 30 Nov 2014 22:11:03 +0100 Subject: [PATCH 082/157] Translated using Weblate (Polish) Currently translated at 6.5% (38 of 582 strings) --- OsmAnd/res/values-pl/phrases.xml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/OsmAnd/res/values-pl/phrases.xml b/OsmAnd/res/values-pl/phrases.xml index 5d0b9fc313..063ff4ed82 100644 --- a/OsmAnd/res/values-pl/phrases.xml +++ b/OsmAnd/res/values-pl/phrases.xml @@ -21,4 +21,22 @@ Księgarnia Sklep rowerowy Sklep z antykami + Sklep zoologiczny + Sklep ze sztuką + Towary dziecięce + Sklep z torbami + Wyposażenie łazienek + Wyposażenie pokoji + Butik + Sklep z dywanami + Sklep z narkotykami + Sklep odzieżowy + Sklep odzieżowy dla dzieci + Sklep obuwniczy + Sklep komputerowy + Sklep z zasłonami + Sklep z firankami + Sklep z pościelą + Sprzęt do nurkowania + Punkt ksero i drukowania From df61d73ca1d57cb35fc4ad1c3202b8a987380dbc Mon Sep 17 00:00:00 2001 From: Lu Ca Date: Sun, 30 Nov 2014 23:20:25 +0100 Subject: [PATCH 083/157] Translated using Weblate (Sardinian) Currently translated at 21.8% (127 of 582 strings) --- OsmAnd/res/values-sc/phrases.xml | 86 ++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) diff --git a/OsmAnd/res/values-sc/phrases.xml b/OsmAnd/res/values-sc/phrases.xml index f303a681d8..9ba02c7ead 100644 --- a/OsmAnd/res/values-sc/phrases.xml +++ b/OsmAnd/res/values-sc/phrases.xml @@ -48,4 +48,90 @@ Artìculos pro su giardinu Butega de gas lìcuidu Empòriu + Butega de donos + Bidreria + Ferramenta + Butega aparitzos acùsticos + Erboristeria + Butega HiFi + Atretzadura pro cassa e pisca + Butega de decoradura d\'intèrnos + Butega de prendas + Artìculos pro sa coghina + Butega de telefonia mòbile + Butega de mototzicletas + Istrumentos musicales + Agentzia de imprenta + Optometrista + Alimentos biològicos + Artìculos pro s\'atividade a s\'abertu + Butega de artìculos pro sa pintadura + Butega de animales domèsticos + Butega pro radiotècnica + Butega de cosas de segunda manu + Butega de nàutica + Artìculos isportivos + Butega pro s\'ufìtziu + Billeteria + Istancu + Butega de gioghitos + Butega de suspidoras + Videonolègiu + Butega de eletrònica + Butega de automòbiles + Autoricàmbios + Butega de quad + Butega de bellettos + Mercadu + Politzia + Pompieres + Telèfonu de emergèntzia + Idrante + Istudadore + Istatzione \"protezione civile\" + Logu de intrada de emergèntzia + + Badu + Coladòrgiu montanu + Ponte + Murallas de sa tzitade + Ponte levatòiu + Casellu + Dossu + Dossu longu + Chicane + Lughe de stop + + Mecànicu + Gommista + Tzentru revisiones + Parchègiu + Parchègiu pro mototzicletas + Intrada parchègiu + Garàgiu + + Firmada trasportu pùblicu + Firmada àutobus + Firmada filobus + Firmada àutobus (disusadu) + Firmada tram + Firmada tram (disusada) + Istatzione trasportu pùblicu + Istatzione bus (disusadu) + Istatzione de sos trenos + Piattaredda ferroviària (disusasu) + Firmada de sos trenos (disusada) + Intrada de sa metropolitana + Istatzione de sa metropolitana + Postèggiu de sos taxi + + Aeroportu + Eliportu + Pista d\'aterazu + Lassinadòrju + Faru + + Parchègiu bitzicletas + + Gondola From 2afa9d5bc7abf10ba17bccc7465fcba6a39f51c0 Mon Sep 17 00:00:00 2001 From: Viktar Palstsiuk Date: Mon, 1 Dec 2014 11:14:11 +0100 Subject: [PATCH 084/157] Translated using Weblate (Belarusian) Currently translated at 100.0% (1567 of 1567 strings) --- OsmAnd/res/values-be/strings.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-be/strings.xml b/OsmAnd/res/values-be/strings.xml index 8a8ea1b511..58c258c4f5 100644 --- a/OsmAnd/res/values-be/strings.xml +++ b/OsmAnd/res/values-be/strings.xml @@ -1,4 +1,4 @@ - + Без аўтаматычнага масштабіраваньня Зачыніць Для сярэдняга масштаба @@ -1959,4 +1959,5 @@ OsmAnd мае адкрыты зыходны код і актыўна разві ПАКАЗАЦЬ МАПУ ПАКАЗАЦЬ УСЁ Каардынаты - + Бліжэйшая дарога не была знойдзена + From a99933af332c45c00145e7169c00d4bb717da5e8 Mon Sep 17 00:00:00 2001 From: Jurijus Date: Mon, 1 Dec 2014 11:23:16 +0100 Subject: [PATCH 085/157] Translated using Weblate (Lithuanian) Currently translated at 100.0% (1567 of 1567 strings) --- OsmAnd/res/values-lt/strings.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-lt/strings.xml b/OsmAnd/res/values-lt/strings.xml index 743658964f..c41494bf06 100644 --- a/OsmAnd/res/values-lt/strings.xml +++ b/OsmAnd/res/values-lt/strings.xml @@ -1,4 +1,4 @@ - + Pradžios taškas yra per toli nuo artimiausio kelio. Bendrinta vieta Dėmesio @@ -1850,4 +1850,5 @@ RODYTI ŽEMĖLAPĮ RODYTI VISKĄ Koordinatės - + Nerastas trumpiausias kelias + From 9025125c38407c159a19899b6284ca9aedaccef5 Mon Sep 17 00:00:00 2001 From: jan madsen Date: Mon, 1 Dec 2014 11:40:09 +0100 Subject: [PATCH 086/157] Translated using Weblate (Danish) Currently translated at 100.0% (586 of 586 strings) --- OsmAnd/res/values-da/phrases.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/OsmAnd/res/values-da/phrases.xml b/OsmAnd/res/values-da/phrases.xml index b6cafd8c39..c484232c48 100644 --- a/OsmAnd/res/values-da/phrases.xml +++ b/OsmAnd/res/values-da/phrases.xml @@ -632,4 +632,8 @@ Flod Vandløb Militærområde + Observatorie + Astronomisk observatorium + Varm kilde + Gejser From 8597ee748c9e087b9e345815f05229e6c71e808d Mon Sep 17 00:00:00 2001 From: jan madsen Date: Mon, 1 Dec 2014 11:41:38 +0100 Subject: [PATCH 087/157] Translated using Weblate (Danish) Currently translated at 100.0% (1567 of 1567 strings) --- OsmAnd/res/values-da/strings.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-da/strings.xml b/OsmAnd/res/values-da/strings.xml index 2b31683213..bf175ea0f1 100644 --- a/OsmAnd/res/values-da/strings.xml +++ b/OsmAnd/res/values-da/strings.xml @@ -1,4 +1,4 @@ - + Overvej at købe Højdekurve udvidelsen (\'Contour lines\') på Google Play for at støtte den videre udvikling. Optag video Optag audio @@ -1850,4 +1850,5 @@ VIS ALLE Koordinater Kort - + Nærmeste vej blev ikke fundet + From 26f093d81f43404ced2944ec9c8caaa4f91a329f Mon Sep 17 00:00:00 2001 From: Ldm Public Date: Mon, 1 Dec 2014 12:12:16 +0100 Subject: [PATCH 088/157] Translated using Weblate (French) Currently translated at 100.0% (1567 of 1567 strings) --- OsmAnd/res/values-fr/strings.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-fr/strings.xml b/OsmAnd/res/values-fr/strings.xml index a075575dce..311dc247b4 100644 --- a/OsmAnd/res/values-fr/strings.xml +++ b/OsmAnd/res/values-fr/strings.xml @@ -1,4 +1,4 @@ - + Modifications hors-ligne Toujours utiliser l\'édition hors-ligne "Changements en 0.7.1 : @@ -1866,4 +1866,5 @@ Afghanistan, Albanie, Algérie, Allemagne, Andorre, Angola, Anguilla, Antigua-et AFFICHER TOUT Coordonnées Cartes - + Aucune route n\'a été trouvée à proximité + From de1f5f3aaf56e35fa94decf0d6b363472f65a4d8 Mon Sep 17 00:00:00 2001 From: ezjerry liao Date: Mon, 1 Dec 2014 13:04:22 +0100 Subject: [PATCH 089/157] Translated using Weblate (Traditional Chinese) Currently translated at 100.0% (1567 of 1567 strings) --- OsmAnd/res/values-zh-rTW/strings.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/OsmAnd/res/values-zh-rTW/strings.xml b/OsmAnd/res/values-zh-rTW/strings.xml index dfcf0e02ca..b1671a0015 100644 --- a/OsmAnd/res/values-zh-rTW/strings.xml +++ b/OsmAnd/res/values-zh-rTW/strings.xml @@ -1,4 +1,4 @@ - + 選擇道路的色彩調配: 道路的色彩調配 顯示目的地方向 @@ -1838,4 +1838,5 @@ 全部顯示 座標 首頁 + 找不到最近的路 From 2ca46cd98fbc9b5a35975305da2c3a0e181a10c4 Mon Sep 17 00:00:00 2001 From: josep constanti Date: Mon, 1 Dec 2014 13:09:53 +0100 Subject: [PATCH 090/157] Translated using Weblate (Catalan) Currently translated at 100.0% (1567 of 1567 strings) --- OsmAnd/res/values-ca/strings.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-ca/strings.xml b/OsmAnd/res/values-ca/strings.xml index 4ee1b80953..ecdd1ae55f 100644 --- a/OsmAnd/res/values-ca/strings.xml +++ b/OsmAnd/res/values-ca/strings.xml @@ -1,4 +1,4 @@ - + Mostra els missatges d\'avís… Rutes amb fluorescència Mostra el regle @@ -1901,4 +1901,5 @@ La llista de països inclosos (bàsicament tot el món!): Afganistan, Albània, MOSTRA\'LS TOTS Coordenades Mapes - + No s\'ha trobat cap ruta aprop + From 63db223393267ae345d5657b42a2ceb01d44b761 Mon Sep 17 00:00:00 2001 From: Bars107 Date: Mon, 1 Dec 2014 16:19:18 +0200 Subject: [PATCH 091/157] Remove --- diff_turn_lanes | 693 ------------------------------------------------ 1 file changed, 693 deletions(-) delete mode 100644 diff_turn_lanes diff --git a/diff_turn_lanes b/diff_turn_lanes deleted file mode 100644 index 562bc9c82b..0000000000 --- a/diff_turn_lanes +++ /dev/null @@ -1,693 +0,0 @@ - -diff --git a/OsmAnd-java/src/net/osmand/router/RouteResultPreparation.java b/OsmAnd-java/src/net/osmand/router/RouteResultPreparation.java -index 1fa0b3a..0ba0981 100644 ---- a/OsmAnd-java/src/net/osmand/router/RouteResultPreparation.java -+++ b/OsmAnd-java/src/net/osmand/router/RouteResultPreparation.java -@@ -7,6 +7,7 @@ import java.util.Arrays; - import java.util.Collections; - import java.util.Iterator; - import java.util.List; -+import java.util.HashSet; - - import org.apache.commons.logging.Log; - -@@ -388,6 +389,77 @@ public class RouteResultPreparation { - dist += result.get(i).getDistance(); - } - } -+ -+ for (int i = result.size() - 2; i >= 0; i--) { -+ RouteSegmentResult currentSegment = result.get(i); -+ RouteSegmentResult nextSegment = result.get(i + 1); -+ -+ if (currentSegment.getTurnType() == null || currentSegment.getTurnType().getLanes() == null || nextSegment.getTurnType() == null || nextSegment.getTurnType().getLanes() == null) { -+ continue; -+ } -+ -+ // Only allow slight turns to be merged. -+ if (currentSegment.getDistance() < 60 && nextSegment.getTurnType().getLanes().length <= currentSegment.getTurnType().getLanes().length -+ && (currentSegment.getTurnType().getValue() == TurnType.C -+ || currentSegment.getTurnType().getValue() == TurnType.TSLL -+ || currentSegment.getTurnType().getValue() == TurnType.TSLR -+ || currentSegment.getTurnType().getValue() == TurnType.KL -+ || currentSegment.getTurnType().getValue() == TurnType.KR)) { -+ mergeTurnLanes(leftside, currentSegment, nextSegment); -+ } -+ } -+ } -+ - - - private static final int MAX_SPEAK_PRIORITY = 5; -@@ -439,6 +511,7 @@ public class RouteResultPreparation { - } else { - t = TurnType.valueOf(TurnType.TU, leftSide); - } -+ getLanesInfo(prev, t, leftSide); - } else if (mpi < -TURN_DEGREE_MIN) { - if (mpi > -60) { - t = TurnType.valueOf(TurnType.TSLR, leftSide); -@@ -449,6 +522,7 @@ public class RouteResultPreparation { - } else { - t = TurnType.valueOf(TurnType.TU, leftSide); - } -+ getLanesInfo(prev, t, leftSide); - } else { - t = attachKeepLeftInfoAndLanes(leftSide, prev, rr, t); - } -@@ -459,6 +533,82 @@ public class RouteResultPreparation { - return t; - } - private TurnType processRoundaboutTurn(List result, int i, boolean leftSide, RouteSegmentResult prev, - RouteSegmentResult rr) { -@@ -491,21 +641,52 @@ public class RouteResultPreparation { - return t; - } - - - - private TurnType attachKeepLeftInfoAndLanes(boolean leftSide, RouteSegmentResult prevSegm, RouteSegmentResult currentSegm, TurnType t) { - // keep left/right - int[] lanes = null; - boolean kl = false; - boolean kr = false; -+ List outboundRoads = new ArrayList(); - List attachedRoutes = currentSegm.getAttachedRoutes(currentSegm.getStartPointIndex()); -- int ls = prevSegm.getObject().getLanes(); -- if(ls >= 0 && prevSegm.getObject().getOneway() == 0) { -- ls = (ls + 1) / 2; -- } -- int left = 0; -- int right = 0; - boolean speak = false; - int speakPriority = Math.max(highwaySpeakPriority(prevSegm.getObject().getHighway()), highwaySpeakPriority(currentSegm.getObject().getHighway())); -+ boolean otherRoutesExist = false; -+ boolean rightTurnPossible = false; -+ boolean leftTurnPossible = false; - if (attachedRoutes != null) { - for (RouteSegmentResult attached : attachedRoutes) { - double ex = MapUtils.degreesDiff(attached.getBearingBegin(), currentSegm.getBearingBegin()); -@@ -513,73 +694,439 @@ public class RouteResultPreparation { - int rsSpeakPriority = highwaySpeakPriority(attached.getObject().getHighway()); - if (rsSpeakPriority != MAX_SPEAK_PRIORITY || speakPriority == MAX_SPEAK_PRIORITY) { - if ((ex < TURN_DEGREE_MIN || mpi < TURN_DEGREE_MIN) && ex >= 0) { -+ // It's ex >= 0 so that turns remaining on the current road are counted as well - kl = true; - int lns = attached.getObject().getLanes(); - } -- if (lns > 0) { -- right += lns; -+ if (lns <= 0) { -+ lns = 1; - } -- speak = speak || rsSpeakPriority <= speakPriority; -+ outboundRoads.add(new OutboundRoad(ex, lns, attached)); -+ speak |= rsSpeakPriority <= speakPriority; - } else if ((ex > -TURN_DEGREE_MIN || mpi < TURN_DEGREE_MIN) && ex <= 0) { - } -- if (lns > 0) { -- left += lns; -+ if (lns <= 0) { -+ lns = 1; - } -- speak = speak || rsSpeakPriority <= speakPriority; -+ outboundRoads.add(new OutboundRoad(ex, lns, attached)); -+ speak |= rsSpeakPriority <= speakPriority; -+ } -+ } -+ if (mpi > TURN_DEGREE_MIN) { -+ otherRoutesExist = true; -+ if (ex > TURN_DEGREE_MIN) { -+ // A right turn is allowed at this intersection. -+ rightTurnPossible = true; -+ } else if (ex < TURN_DEGREE_MIN) { -+ // A left turn is allowed at this intersection. -+ leftTurnPossible = true; - } - } - } - } -- if(kr && left == 0) { -- left = 1; -- } else if(kl && right == 0) { -- right = 1; -- } -+ -+ // attachedRoutes covers all allowed outbound routes at that point except currentSegm. - - if (current <= 0) { - current = 1; - } --// if(ls >= 0 /*&& current + left + right >= ls*/){ -- lanes = new int[current + left + right]; -- ls = current + left + right; -- for(int it=0; it< ls; it++) { -- if(it < left || it >= left + current) { -- lanes[it] = 0; -- } else { -- lanes[it] = 1; -+ outboundRoads.add(new OutboundRoad(0, current, currentSegm)); -+ -+ Collections.sort(outboundRoads); -+ -+ int totalOutboundLanes = 0; -+ for (OutboundRoad road : outboundRoads) { -+ totalOutboundLanes += road.getLanes(); -+ } -+ -+ lanes = new int[totalOutboundLanes]; -+ int i = 0; -+ int left = 0; -+ int right = 0; -+ for (OutboundRoad road : outboundRoads) { -+ for (int j = 0; i < lanes.length && j < road.getLanes(); i++, j++) { -+ lanes[i] = road.getAngle() == 0 ? TurnType.BIT_LANE_ALLOWED : 0; -+ if (road.getAngle() < 0) { -+ left++; -+ } else if (road.getAngle() > 0) { -+ right++; - } - } -- // sometimes links are -- if ((current <= left + right) && (left > 1 || right > 1)) { -- speak = true; -- } --// } -+ } -+ // sometimes links are -+ if ((current <= left + right) && (left > 1 || right > 1)) { -+ speak = true; -+ } -+ -+ double deviation = Math.abs(MapUtils.degreesDiff(prevSegm.getBearingEnd(), currentSegm.getBearingBegin())); -+ boolean makeSlightTurn = deviation > 5 && (!isMotorway(prevSegm) || !isMotorway(currentSegm)); -+ if (kl && kr) { -+ t = TurnType.valueOf(TurnType.C, leftSide); - -- double devation = Math.abs(MapUtils.degreesDiff(prevSegm.getBearingEnd(), currentSegm.getBearingBegin())); -- boolean makeSlightTurn = devation > 5 && (!isMotorway(prevSegm) || !isMotorway(currentSegm)); -- if (kl) { -+ t.setSkipToSpeak(!speak); -+ } else if (kl) { - t = TurnType.valueOf(makeSlightTurn ? TurnType.TSLL : TurnType.KL, leftSide); - t.setSkipToSpeak(!speak); -- } -- if (kr) { -+ } else if (kr) { - t = TurnType.valueOf(makeSlightTurn ? TurnType.TSLR : TurnType.KR, leftSide); - t.setSkipToSpeak(!speak); -+ } else { -+ if (!otherRoutesExist) { -+ return null; -+ } -+ // Most likely, we're going straight at a 90-degree intersection with another road -+ t = TurnType.valueOf(TurnType.C, leftSide); -+ t.setSkipToSpeak(true); // Always skip the talking when going straight -+ -+ int prevLanes = prevSegm.getObject().getLanes(); -+ if(prevSegm.getObject().getOneway() == 0) { -+ if (prevSegm.isForwardDirection() -+ && prevSegm.getObject().getValue("lanes:forward") != null) { -+ prevLanes = Integer.parseInt(prevSegm.getObject().getValue("lanes:forward")); -+ } else if (!prevSegm.isForwardDirection() -+ && prevSegm.getObject().getValue("lanes:backward") != null) { -+ prevLanes = Integer.parseInt(prevSegm.getObject().getValue("lanes:backward")); -+ } else { -+ prevLanes = (prevLanes + 1) / 2; -+ } -+ } -+ if (prevLanes <= 0) { -+ return null; -+ } -+ lanes = new int[prevLanes]; -+ -+ String turnLanes; -+ if (prevSegm.getObject().getOneway() == 0) { -+ if (prevSegm.isForwardDirection()) { -+ turnLanes = prevSegm.getObject().getValue("turn:lanes:forward"); -+ } else { -+ turnLanes = prevSegm.getObject().getValue("turn:lanes:backward"); -+ } -+ } else { -+ turnLanes = prevSegm.getObject().getValue("turn:lanes"); -+ } -+ -+ if (turnLanes == null) { -+ return null; -+ } -+ -+ String[] splitLaneOptions = turnLanes.split("\\|", -1); -+ if (splitLaneOptions.length != lanes.length) { -+ // Error in data or missing data -+ return null; -+ } -+ -+ t.setLanes(lanes); -+ -+ assignTurns(splitLaneOptions, t); -+ -+ // In some cases (at least in the US), the rightmost lane might not have a right turn indicator, but is allowed. This section adds in that indicator. The same applies for where leftSide is true. -+ if (leftSide) { -+ if (leftTurnPossible -+ && !t.isTurnAllowed(0, TurnType.Turn.LEFT) -+ && !t.isTurnAllowed(0, TurnType.Turn.SLIGHT_LEFT) -+ && !t.isTurnAllowed(0, TurnType.Turn.SHARP_LEFT)) { -+ if (t.getPrimaryTurn(0) != TurnType.Turn.UNKNOWN && t.getSecondaryTurn(0) == TurnType.Turn.UNKNOWN) { -+ // This was just to make sure that there's no bad data and that there's an empty slot. -+ t.setSecondaryTurn(0, TurnType.Turn.LEFT); -+ } -+ } -+ } else { -+ if (rightTurnPossible -+ && !t.isTurnAllowed(lanes.length - 1, TurnType.Turn.RIGHT) -+ && !t.isTurnAllowed(lanes.length - 1, TurnType.Turn.SLIGHT_RIGHT) -+ && !t.isTurnAllowed(lanes.length - 1, TurnType.Turn.SHARP_RIGHT)) { -+ if (t.getPrimaryTurn(lanes.length - 1) != TurnType.Turn.UNKNOWN && t.getSecondaryTurn(lanes.length - 1) == TurnType.Turn.UNKNOWN) { -+ // This was just to make sure that there's no bad data and that there's an empty slot. -+ t.setSecondaryTurn(lanes.length - 1, TurnType.Turn.RIGHT); -+ } -+ } -+ } -+ -+ // Manually set the allowed lanes, in case the turn gets merged. -+ for (int j = 0; j < lanes.length; j++) { -+ if (t.isTurnAllowed(j, TurnType.Turn.STRAIGHT)) { -+ t.getLanes()[j] |= TurnType.BIT_LANE_ALLOWED; -+ } -+ } -+ -+ return t; - } -+ - if (t != null && lanes != null) { - t.setLanes(lanes); -+ -+ // This code block, in the cases where turn:lanes is not available, replaces the straight arrows with slight-left or slight-right arrows. It compares the number of lanes going straight to the number of lanes turning to determine which symbol to display where. -+ boolean crossedLeftSide = false; -+ for (int j = 0; j < t.getLanes().length; j++) { -+ if (!crossedLeftSide && (t.getLanes()[j] & TurnType.BIT_LANE_ALLOWED) == 0) { -+ if (current > left + right || right != 0) { -+ t.setPrimaryTurn(j, TurnType.Turn.SLIGHT_LEFT); -+ } else { -+ t.setPrimaryTurn(j, TurnType.Turn.STRAIGHT); -+ } -+ } else { -+ crossedLeftSide = true; -+ if ((t.getLanes()[j] & TurnType.BIT_LANE_ALLOWED) == TurnType.BIT_LANE_ALLOWED) { -+ if (current > left + right || (left != 0 && right != 0)) { -+ t.setPrimaryTurn(j, TurnType.Turn.STRAIGHT); -+ } else if (left != 0) { -+ t.setPrimaryTurn(j, TurnType.Turn.SLIGHT_RIGHT); -+ } else if (right != 0) { -+ t.setPrimaryTurn(j, TurnType.Turn.SLIGHT_LEFT); -+ } -+ } else { -+ if (current > left + right || left != 0) { -+ t.setPrimaryTurn(j, TurnType.Turn.SLIGHT_RIGHT); -+ } else { -+ t.setPrimaryTurn(j, TurnType.Turn.STRAIGHT); -+ } -+ } -+ } -+ } -+ -+ t = attachTurnLanesData(leftSide, prevSegm, t); - } -+ - return t; - } -- -=============================================================================== - -+ private void mergeTurnLanes(boolean leftSide, RouteSegmentResult currentSegment, RouteSegmentResult nextSegment) { -+ if (currentSegment.getTurnType().isTurnLanesRendering() && nextSegment.getTurnType().isTurnLanesRendering()) { -+ int[] lanes = new int[currentSegment.getTurnType().getLanes().length]; -+ for (int i = 0; i < lanes.length; i++) { -+ lanes[i] = currentSegment.getTurnType().getLanes()[i] & ~TurnType.BIT_LANE_ALLOWED; -+ } -+ int matchingIndex = 0; -+ int maxMatchedLanes = 0; -+ for (int i = 0; i < lanes.length; i++) { -+ int matchedLanes = 0; -+ for (int j = 0; j < nextSegment.getTurnType().getLanes().length - i; j++) { -+ if (nextSegment.getTurnType().getPrimaryTurn(j) == currentSegment.getTurnType().getPrimaryTurn(i + j)) { -+ matchedLanes++; -+ } else { -+ break; -+ } -+ } -+ if (matchedLanes > maxMatchedLanes) { -+ matchingIndex = i; -+ maxMatchedLanes = matchedLanes; -+ } -+ } -+ if (maxMatchedLanes <= 1) { -+ return; -+ } -+ for (int i = matchingIndex; i - matchingIndex < nextSegment.getTurnType().getLanes().length; i++) { -+ lanes[i] |= nextSegment.getTurnType().getLanes()[i - matchingIndex] & TurnType.BIT_LANE_ALLOWED; -+ } -+ currentSegment.getTurnType().setLanes(lanes); -+ currentSegment.setTurnType(inferTurnFromLanes(currentSegment.getTurnType(), leftSide)); -+ } else if (!currentSegment.getTurnType().isTurnLanesRendering() && !nextSegment.getTurnType().isTurnLanesRendering()) { -+ int[] lanes = new int[currentSegment.getTurnType().getLanes().length]; -+ int matchingIndex = 0; -+ int expectedLanes = 0; -+ for (int i = 0; i < lanes.length; i++) { -+ lanes[i] = currentSegment.getTurnType().getLanes()[i] & ~TurnType.BIT_LANE_ALLOWED; -+ if (currentSegment.getTurnType().getPrimaryTurn(i) == TurnType.Turn.SLIGHT_LEFT) { -+ matchingIndex++; -+ } else if (currentSegment.getTurnType().getPrimaryTurn(i) == TurnType.Turn.STRAIGHT) { -+ expectedLanes++; -+ } -+ } -+ if (nextSegment.getTurnType().getLanes().length != expectedLanes) { -+ return; -+ } -+ for (int i = matchingIndex; i - matchingIndex < nextSegment.getTurnType().getLanes().length; i++) { -+ lanes[i] = nextSegment.getTurnType().getLanes()[i - matchingIndex]; -+ } -+ currentSegment.getTurnType().setLanes(lanes); -+ } - } - -+ private class OutboundRoad implements Comparable{ -+ private final double angle; -+ private final int lanes; -+ private final RouteSegmentResult road; -+ -+ public OutboundRoad(double angle, int lanes, RouteSegmentResult road) { -+ this.angle = angle; -+ this.lanes = lanes; -+ this.road = road; -+ } -+ -+ public double getAngle() { -+ return angle; -+ } -+ -+ public int getLanes() { -+ return lanes; -+ } -+ -+ public RouteSegmentResult getRoad() { -+ return road; -+ } -+ -+ public int compareTo(OutboundRoad other) { -+ if (other.angle - this.angle < 0) { -+ return 1; -+ } else if (other.angle - this.angle > 0) { -+ return -1; -+ } else { -+ return 0; -+ } -+ } -+ } - -+ private void getLanesInfo(RouteSegmentResult prevSegm, TurnType t, boolean leftSide) { -+ int lanes = prevSegm.getObject().getLanes(); -+ if(prevSegm.getObject().getOneway() == 0) { -+ if (prevSegm.isForwardDirection() -+ && prevSegm.getObject().getValue("lanes:forward") != null) { -+ lanes = Integer.parseInt(prevSegm.getObject().getValue("lanes:forward")); -+ } else if (!prevSegm.isForwardDirection() -+ && prevSegm.getObject().getValue("lanes:backward") != null) { -+ lanes = Integer.parseInt(prevSegm.getObject().getValue("lanes:backward")); -+ } else { -+ lanes = (lanes + 1) / 2; -+ } -+ } -+ if (lanes <= 0) { -+ return; -+ } -+ -+ String turnLanes; -+ if (prevSegm.getObject().getOneway() == 0) { -+ if (prevSegm.isForwardDirection()) { -+ turnLanes = prevSegm.getObject().getValue("turn:lanes:forward"); -+ } else { -+ turnLanes = prevSegm.getObject().getValue("turn:lanes:backward"); -+ } -+ } else { -+ turnLanes = prevSegm.getObject().getValue("turn:lanes"); -+ } -+ -+ if (turnLanes == null) { -+ return; -+ } -+ -+ String[] splitLaneOptions = turnLanes.split("\\|", -1); -+ if (splitLaneOptions.length != lanes) { -+ // Error in data or missing data, go to old behavior -+ return; -+ } -+ -+ int[] lanesArray = new int[lanes]; -+ -+ t.setLanes(lanesArray); -+ -+ assignTurns(splitLaneOptions, t); -+ -+ // In some cases (at least in the US), the rightmost lane might not have a right turn indicator, but is allowed. This section adds in that indicator. The same applies for where leftSide is true. -+ if (leftSide) { -+ if (t.getValue() == TurnType.TL -+ && !t.isTurnAllowed(0, TurnType.Turn.LEFT) -+ && !t.isTurnAllowed(0, TurnType.Turn.SLIGHT_LEFT) -+ && !t.isTurnAllowed(0, TurnType.Turn.SHARP_LEFT)) { -+ if (t.getPrimaryTurn(0) != TurnType.Turn.UNKNOWN && t.getSecondaryTurn(0) == TurnType.Turn.UNKNOWN) { -+ // This was just to make sure that there's no bad data and that there's an empty slot. -+ t.setSecondaryTurn(0, TurnType.Turn.LEFT); -+ lanesArray[0] |= TurnType.BIT_LANE_ALLOWED; -+ } -+ } -+ } else { -+ if (t.getValue() == TurnType.TR -+ && !t.isTurnAllowed(lanesArray.length - 1, TurnType.Turn.RIGHT) -+ && !t.isTurnAllowed(lanesArray.length - 1, TurnType.Turn.SLIGHT_RIGHT) -+ && !t.isTurnAllowed(lanesArray.length - 1, TurnType.Turn.SHARP_RIGHT)) { -+ if (t.getPrimaryTurn(lanesArray.length - 1) != TurnType.Turn.UNKNOWN && t.getSecondaryTurn(lanesArray.length - 1) == TurnType.Turn.UNKNOWN) { -+ // This was just to make sure that there's no bad data and that there's an empty slot. -+ t.setSecondaryTurn(lanesArray.length - 1, TurnType.Turn.RIGHT); -+ lanesArray[lanesArray.length - 1] |= TurnType.BIT_LANE_ALLOWED; -+ } -+ } -+ } -+ -+ // Manually set the allowed lanes. -+ for (int i = 0; i < lanesArray.length; i++) { -+ if (t.getPrimaryTurn(i).getValue() == t.getValue() || t.getSecondaryTurn(i).getValue() == t.getValue()) { -+ lanesArray[i] |= TurnType.BIT_LANE_ALLOWED; -+ } -+ } -+ } -+ -+ private TurnType attachTurnLanesData(boolean leftSide, RouteSegmentResult prevSegm, TurnType t) { -+ int lanes = prevSegm.getObject().getLanes(); -+ String turnLanes; -+ if (prevSegm.getObject().getOneway() == 0) { -+ if (prevSegm.isForwardDirection()) { -+ turnLanes = prevSegm.getObject().getValue("turn:lanes:forward"); -+ } else { -+ turnLanes = prevSegm.getObject().getValue("turn:lanes:backward"); -+ } -+ } else { -+ turnLanes = prevSegm.getObject().getValue("turn:lanes"); -+ } -+ -+ if (turnLanes == null) { -+ return t; -+ } -+ -+ String[] splitLaneOptions = turnLanes.split("\\|", -1); -+ if (splitLaneOptions.length != lanes) { -+ // Error in data or missing data, go to old behavior -+ return t; -+ } -+ -+ if (t.getLanes().length != lanes) { -+ // The turn:lanes don't easily match up to the target road. -+ -+ List sourceLanes = new ArrayList(); -+ -+ int outgoingLanesIndex = 0; -+ int sourceLanesIndex = 0; -+ -+ while (outgoingLanesIndex < t.getLanes().length && sourceLanesIndex < lanes) { -+ if (splitLaneOptions[sourceLanesIndex].contains(";")) { -+ int options = countOccurrences(splitLaneOptions[sourceLanesIndex], ';'); -+ if (options == 1) { -+ if (outgoingLanesIndex + 1 >= t.getLanes().length) { -+ // Likely an error in data -+ return t; -+ } -+ int usability = t.getLanes()[outgoingLanesIndex] | t.getLanes()[outgoingLanesIndex + 1]; -+ sourceLanes.add(usability); -+ outgoingLanesIndex += 2; -+ sourceLanesIndex++; -+ } else { -+ // Not supported -+ return t; -+ } -+ } else { -+ sourceLanes.add(t.getLanes()[outgoingLanesIndex]); -+ outgoingLanesIndex++; -+ sourceLanesIndex++; -+ } -+ } -+ -+ int[] newLanes = new int[sourceLanes.size()]; -+ -+ for (int i = 0; i < sourceLanes.size(); i++) { -+ newLanes[i] = sourceLanes.get(i); -+ } -+ -+ t.setLanes(newLanes); -+ } -+ -+ assignTurns(splitLaneOptions, t); -+ -+ t = inferTurnFromLanes(t, leftSide); -+ -+ return t; -+ } -+ -+ private void assignTurns(String[] splitLaneOptions, TurnType t) { -+ for (int i = 0; i < splitLaneOptions.length; i++) { -+ String[] laneOptions = splitLaneOptions[i].split(";"); -+ -+ boolean primaryTurnSet = false; -+ -+ for (int j = 0; j < laneOptions.length; j++) { -+ if (laneOptions[j].equals("none") || laneOptions[j].equals("through")) { -+ TurnType.Turn turn = TurnType.Turn.STRAIGHT; -+ if (!primaryTurnSet) { -+ t.setPrimaryTurn(i, turn); -+ primaryTurnSet = true; -+ } else { -+ t.setSecondaryTurn(i, turn); -+ continue; -+ } -+ } else if (laneOptions[j].equals("slight_right")) { -+ TurnType.Turn turn = TurnType.Turn.SLIGHT_RIGHT; -+ if (!primaryTurnSet) { -+ t.setPrimaryTurn(i, turn); -+ primaryTurnSet = true; -+ } else { -+ t.setSecondaryTurn(i, turn); -+ continue; -+ } -+ } else if (laneOptions[j].equals("slight_left")) { -+ TurnType.Turn turn = TurnType.Turn.SLIGHT_LEFT; -+ if (!primaryTurnSet) { -+ t.setPrimaryTurn(i, turn); -+ primaryTurnSet = true; -+ } else { -+ t.setSecondaryTurn(i, turn); -+ continue; -+ } -+ } else if (laneOptions[j].equals("right")) { -+ TurnType.Turn turn = TurnType.Turn.RIGHT; -+ if (!primaryTurnSet) { -+ t.setPrimaryTurn(i, turn); -+ primaryTurnSet = true; -+ } else { -+ t.setSecondaryTurn(i, turn); -+ continue; -+ } -+ } else if (laneOptions[j].equals("left")) { -+ TurnType.Turn turn = TurnType.Turn.LEFT; -+ if (!primaryTurnSet) { -+ t.setPrimaryTurn(i, turn); -+ primaryTurnSet = true; -+ } else { -+ t.setSecondaryTurn(i, turn); -+ continue; -+ } -+ } else if (laneOptions[j].equals("sharp_right")) { -+ TurnType.Turn turn = TurnType.Turn.SHARP_RIGHT; -+ if (!primaryTurnSet) { -+ t.setPrimaryTurn(i, turn); -+ primaryTurnSet = true; -+ } else { -+ t.setSecondaryTurn(i, turn); -+ continue; -+ } -+ } else if (laneOptions[j].equals("sharp_left")) { -+ TurnType.Turn turn = TurnType.Turn.SHARP_LEFT; -+ if (!primaryTurnSet) { -+ t.setPrimaryTurn(i, turn); -+ primaryTurnSet = true; -+ } else { -+ t.setSecondaryTurn(i, turn); -+ continue; -+ } -+ } else if (laneOptions[j].equals("reverse")) { -+ TurnType.Turn turn = TurnType.Turn.UTURN; -+ if (!primaryTurnSet) { -+ t.setPrimaryTurn(i, turn); -+ primaryTurnSet = true; -+ } else { -+ t.setSecondaryTurn(i, turn); -+ continue; -+ } -+ } -+ } -+ } -+ -+ t.setTurnLanesRendering(true); -+ } -+ -+ private TurnType inferTurnFromLanes(TurnType t, boolean leftSide) { -+ List possibleTurns = new ArrayList(); -+ boolean filled = false; -+ for (int i = 0; i < t.getLanes().length; i++) { -+ if ((t.getLanes()[i] & TurnType.BIT_LANE_ALLOWED) == TurnType.BIT_LANE_ALLOWED) { -+ if (!filled) { -+ filled = true; -+ possibleTurns.add(t.getPrimaryTurn(i)); -+ if (t.getSecondaryTurn(i) != TurnType.Turn.UNKNOWN) { -+ possibleTurns.add(t.getSecondaryTurn(i)); -+ } -+ } else { -+ List laneTurns = new ArrayList(); -+ laneTurns.add(t.getPrimaryTurn(i)); -+ laneTurns.add(t.getSecondaryTurn(i)); -+ possibleTurns.retainAll(laneTurns); -+ } -+ } -+ } -+ -+ if (possibleTurns.size() > 1) { -+ for (int i = 0; i < t.getLanes().length; i++) { -+ if ((t.getLanes()[i] & TurnType.BIT_LANE_ALLOWED) == 0 && !possibleTurns.isEmpty()) { -+ List notLaneTurns = new ArrayList(); -+ notLaneTurns.add(t.getPrimaryTurn(i)); -+ notLaneTurns.add(t.getSecondaryTurn(i)); -+ possibleTurns.removeAll(notLaneTurns); -+ } -+ } -+ } -+ -+ // removing duplicates -+ if (new HashSet(possibleTurns).size() == 1) { -+ TurnType derivedTurnType = TurnType.valueOf(possibleTurns.get(0).getValue(), false); -+ derivedTurnType.setLanes(t.getLanes()); -+ derivedTurnType.setSkipToSpeak(t.isSkipToSpeak()); -+ derivedTurnType.setTurnLanesRendering(t.isTurnLanesRendering()); -+ t = derivedTurnType; -+ } -+ -+ return t; -+ } -+ -+ private int countOccurrences(String haystack, char needle) { -+ int count = 0; -+ for (int i = 0; i < haystack.length(); i++) { -+ if (haystack.charAt(i) == needle) { -+ count++; -+ } -+ } -+ return count; -+ } -+ \ No newline at end of file From 3bc54d650aecfeecbcb1c8d1a2eb7fb357c1a971 Mon Sep 17 00:00:00 2001 From: Mirco Zorzo Date: Mon, 1 Dec 2014 15:19:21 +0100 Subject: [PATCH 092/157] Translated using Weblate (Italian) Currently translated at 100.0% (1567 of 1567 strings) --- OsmAnd/res/values-it/strings.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-it/strings.xml b/OsmAnd/res/values-it/strings.xml index 336d25b06f..86c6b6743f 100644 --- a/OsmAnd/res/values-it/strings.xml +++ b/OsmAnd/res/values-it/strings.xml @@ -1,4 +1,4 @@ - + Sovrapposizioni fluorescenti Usa colori fluorescenti per visualizzare tracce e percorsi Modifiche offline @@ -2033,4 +2033,5 @@ Si consiglia di aggiungere uno o più punti intermedi per migliorarne le prestaz Mappe Cerca MOSTRA LA MAPPA - + Non è stata trovata una strada nelle vicinanze + From 0617ff90332f77e04e101c4fc6e488b45a9e5572 Mon Sep 17 00:00:00 2001 From: josep constanti Date: Mon, 1 Dec 2014 13:11:57 +0100 Subject: [PATCH 093/157] Translated using Weblate (Catalan) Currently translated at 100.0% (1567 of 1567 strings) --- OsmAnd/res/values-ca/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-ca/strings.xml b/OsmAnd/res/values-ca/strings.xml index ecdd1ae55f..58e3effcb3 100644 --- a/OsmAnd/res/values-ca/strings.xml +++ b/OsmAnd/res/values-ca/strings.xml @@ -1349,7 +1349,7 @@ "Des de la versió 4.4 d\'Android (KitKat) no es pot descarregar i actualitzar després els mapes a la mateixa carpeta (%s). Voleu canviar-la a un altre lloc permès i copiar-hi tots els arxius OsmAnd? \n Nota 1: Els vostres arxius obsolets quedaran intactes (els podeu esborrar manualment). \n Nota 2: En el nou lloc d\'emmagatzemament no serà possible compartir arxius entre l\'OsmAnd i l\'OsmAnd+." - Voleu que l\'OsmAnd intenti copiar els seus arxius de dades a la nova destinació? + Voleu que l\'OsmAnd també copiï els seus arxius de dades a la nova destinació? S\'està copiant el fitxer (%s) a la nova destinació... S\'estan copiant els fitxers de dades de l\'OsmAnd a la nova destinació (%s) S\'estan copiant fitxers de dades de l\'OsmAnd From 8e18e8be23817bc0c0c1ac92d4169fb351de588c Mon Sep 17 00:00:00 2001 From: Ldm Public Date: Mon, 1 Dec 2014 12:12:47 +0100 Subject: [PATCH 094/157] Translated using Weblate (French) Currently translated at 100.0% (1567 of 1567 strings) --- OsmAnd/res/values-fr/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-fr/strings.xml b/OsmAnd/res/values-fr/strings.xml index 311dc247b4..efd62d4ddf 100644 --- a/OsmAnd/res/values-fr/strings.xml +++ b/OsmAnd/res/values-fr/strings.xml @@ -1860,7 +1860,7 @@ Afghanistan, Albanie, Algérie, Allemagne, Andorre, Angola, Anguilla, Antigua-et Avancé Utiliser une connexion sécurisée avec le serveur Utiliser HTTPS - Accueil + Domicile Rechercher AFFICHER LA CARTE AFFICHER TOUT From d2e8cc17b60dad021d98318b8e927a67a34a08a0 Mon Sep 17 00:00:00 2001 From: Hinagiku Zeppeki Date: Mon, 1 Dec 2014 11:55:21 +0100 Subject: [PATCH 095/157] Translated using Weblate (Japanese) Currently translated at 99.9% (1566 of 1567 strings) --- OsmAnd/res/values-ja/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-ja/strings.xml b/OsmAnd/res/values-ja/strings.xml index 9aa2691a9e..b6887cdf32 100644 --- a/OsmAnd/res/values-ja/strings.xml +++ b/OsmAnd/res/values-ja/strings.xml @@ -1,4 +1,4 @@ - + 新しいデータを展開中… オンライン経路案内を使用しようとしていますが インターネット接続されていません。 @@ -1954,7 +1954,7 @@ OsmAndはオープンソースであり、活発に開発が進められいま グループ %1$sから退出しますか? IDを指定してください ナビゲーションを継続 - ナビゲーションを一時停止 + ナビを一時停止 ブルガリア語 カタロニア語 クロアチア語 From 946bb80ca6a8b03f14d31fd300b053d8ea9b5ad3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B6=8C=20=EC=A1=B0?= Date: Mon, 1 Dec 2014 12:34:03 +0100 Subject: [PATCH 096/157] Translated using Weblate (Korean) Currently translated at 100.0% (1567 of 1567 strings) --- OsmAnd/res/values-ko/strings.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-ko/strings.xml b/OsmAnd/res/values-ko/strings.xml index e0cf98e9f5..8fa944d3b8 100644 --- a/OsmAnd/res/values-ko/strings.xml +++ b/OsmAnd/res/values-ko/strings.xml @@ -1,4 +1,4 @@ - + 벡터 맵이 더욱 빠르게 표시됩니다. 하지만, 어떤 기기에서는 잘 작동하지 않을 수 있습니다. 현재 선택된 음성 명령을 재생합니다 @@ -2089,4 +2089,5 @@ 지도 표시 모두 표시 좌표 - + 가장 가까운 도로를 찾을 수 없습니다 + From 1f3d45f7f7fb91545e7770cde6fbffb359ebc98b Mon Sep 17 00:00:00 2001 From: Leif Larsson Date: Mon, 1 Dec 2014 12:02:30 +0100 Subject: [PATCH 097/157] Translated using Weblate (Swedish) Currently translated at 99.4% (1558 of 1567 strings) --- OsmAnd/res/values-sv/strings.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-sv/strings.xml b/OsmAnd/res/values-sv/strings.xml index dd51b1923a..b42961f059 100644 --- a/OsmAnd/res/values-sv/strings.xml +++ b/OsmAnd/res/values-sv/strings.xml @@ -1,4 +1,4 @@ - + För att låsa upp skärmen tryck på låsikonen Välj land Välj stad @@ -1737,4 +1737,5 @@ VISA ALLA Koordinater Kartor - + Hittar inte närmaste väg + From abd9787de327777030fb4287d67e75f28fa77dc4 Mon Sep 17 00:00:00 2001 From: jan madsen Date: Mon, 1 Dec 2014 13:34:30 +0100 Subject: [PATCH 098/157] Translated using Weblate (Danish) Currently translated at 100.0% (586 of 586 strings) --- OsmAnd/res/values-da/phrases.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-da/phrases.xml b/OsmAnd/res/values-da/phrases.xml index c484232c48..ebb1697b96 100644 --- a/OsmAnd/res/values-da/phrases.xml +++ b/OsmAnd/res/values-da/phrases.xml @@ -632,7 +632,7 @@ Flod Vandløb Militærområde - Observatorie + Observatorium Astronomisk observatorium Varm kilde Gejser From 32e4cd0d091fac1da2dec11b0f99153b6e04a875 Mon Sep 17 00:00:00 2001 From: Ldm Public Date: Mon, 1 Dec 2014 13:53:50 +0100 Subject: [PATCH 099/157] Translated using Weblate (French) Currently translated at 77.6% (455 of 586 strings) --- OsmAnd/res/values-fr/phrases.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/OsmAnd/res/values-fr/phrases.xml b/OsmAnd/res/values-fr/phrases.xml index 024d543b55..8558d2ffe7 100644 --- a/OsmAnd/res/values-fr/phrases.xml +++ b/OsmAnd/res/values-fr/phrases.xml @@ -46,7 +46,7 @@ Magasin de vélos Parking à vélos Location de vélos - Biergarten + Brasserie en plein air Paiement par bitcoins Partage de voiliers Cale sèche @@ -471,4 +471,6 @@ Mouillage Épave + Maroquinerie + Aérodrome militaire From 3bd0bf582f91629c15cbd3bf00b6a743510f979a Mon Sep 17 00:00:00 2001 From: Ivan Vantu5z Date: Mon, 1 Dec 2014 11:46:12 +0100 Subject: [PATCH 100/157] Translated using Weblate (Russian) Currently translated at 93.1% (546 of 586 strings) --- OsmAnd/res/values-ru/phrases.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/OsmAnd/res/values-ru/phrases.xml b/OsmAnd/res/values-ru/phrases.xml index 8ff939f3be..b437d77a57 100644 --- a/OsmAnd/res/values-ru/phrases.xml +++ b/OsmAnd/res/values-ru/phrases.xml @@ -615,4 +615,8 @@ Ручей Военная зона Пирс + Обсерватория + Астрономическая обсерватория + Горячий источник + Гейзер From 713b6be2e8c45b8f1ece58e31af9c1d8b2f0a8b4 Mon Sep 17 00:00:00 2001 From: ace shadow Date: Mon, 1 Dec 2014 17:00:41 +0100 Subject: [PATCH 101/157] Translated using Weblate (Slovak) Currently translated at 100.0% (1567 of 1567 strings) --- OsmAnd/res/values-sk/strings.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-sk/strings.xml b/OsmAnd/res/values-sk/strings.xml index d7ac706c28..62876b4844 100644 --- a/OsmAnd/res/values-sk/strings.xml +++ b/OsmAnd/res/values-sk/strings.xml @@ -1,4 +1,4 @@ - + Zobraziť Fotografia %1$s zachytená dňa %2$s Zachytiť fotografiu @@ -1997,4 +1997,5 @@ Afganistan, Albánsko, Alžírsko, Andora, Angola, Anguilla, Antigua a Barbuda, ZOBRAZIŤ VŠETKO Súradnice Mapy - + Nenašla sa najbližšia cesta + From 80cd14b661c7565946b95f8bdb89c455acdb2c4f Mon Sep 17 00:00:00 2001 From: Lu Ca Date: Mon, 1 Dec 2014 17:03:01 +0100 Subject: [PATCH 102/157] Translated using Weblate (Sardinian) Currently translated at 100.0% (1567 of 1567 strings) --- OsmAnd/res/values-sc/strings.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-sc/strings.xml b/OsmAnd/res/values-sc/strings.xml index 510cfdea5e..311646a348 100644 --- a/OsmAnd/res/values-sc/strings.xml +++ b/OsmAnd/res/values-sc/strings.xml @@ -1,4 +1,4 @@ - + Ammustra sa positzione semper a su tzentru Boghe Mistura @@ -1787,4 +1787,5 @@ Si cussigiat de annànghere unu o prus puntos intermedios pro megiorare sas pres AMMUSTRA TOTU Coordinatas Mapas - + No est istada agatada peruna istada a curtzu + From ed7e9c55d1486691e828ce5262caeb57a69296a1 Mon Sep 17 00:00:00 2001 From: Bars107 Date: Mon, 1 Dec 2014 18:20:01 +0200 Subject: [PATCH 103/157] Added message for updates when everything up to date --- OsmAnd/res/values/strings.xml | 1 + .../plus/download/UpdatesIndexFragment.java | 23 +++++++++++++++---- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index 2c8a381588..01811347e1 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -9,6 +9,7 @@ 3. All your modified/created strings are in the top of the file (to make easier find what\'s translated). PLEASE: Have a look at http://code.google.com/p/osmand/wiki/UIConsistency, it may really improve your and our work :-) Thx - Hardy --> + Everything up to date Nearest road was not found Home Use secure connection with server diff --git a/OsmAnd/src/net/osmand/plus/download/UpdatesIndexFragment.java b/OsmAnd/src/net/osmand/plus/download/UpdatesIndexFragment.java index c9ad50f3fd..3217224fae 100644 --- a/OsmAnd/src/net/osmand/plus/download/UpdatesIndexFragment.java +++ b/OsmAnd/src/net/osmand/plus/download/UpdatesIndexFragment.java @@ -45,6 +45,14 @@ public class UpdatesIndexFragment extends SherlockListFragment { if (BaseDownloadActivity.downloadListIndexThread != null) { indexItems = DownloadActivity.downloadListIndexThread.getItemsToUpdate(); } + createListView(indexItems); + setHasOptionsMenu(true); + } + + private void createListView(List indexItems) { + if (indexItems.size() == 0){ + indexItems.add(new IndexItem(getString(R.string.everything_up_to_date),"",0,"",0,0, null)); + } listAdapter = new UpdateIndexAdapter(getDownloadActivity(), R.layout.download_index_list_item, indexItems); listAdapter.sort(new Comparator() { @Override @@ -53,7 +61,6 @@ public class UpdatesIndexFragment extends SherlockListFragment { } }); setListAdapter(listAdapter); - setHasOptionsMenu(true); } @Override @@ -65,8 +72,8 @@ public class UpdatesIndexFragment extends SherlockListFragment { if(listAdapter == null){ return; } - listAdapter = new UpdateIndexAdapter(getDownloadActivity(), R.layout.download_index_list_item, items); - setListAdapter(listAdapter); + + createListView(items); } @Override @@ -201,14 +208,22 @@ public class UpdatesIndexFragment extends SherlockListFragment { TextView name = (TextView) v.findViewById(R.id.download_item); TextView description = (TextView) v.findViewById(R.id.download_descr); + final CheckBox ch = (CheckBox) v.findViewById(R.id.check_download_item); IndexItem e = items.get(position); + if (e.getFileName() == getString(R.string.everything_up_to_date)){ + name.setText(e.getFileName()); + description.setText(""); + ch.setVisibility(View.INVISIBLE); + return v; + } else { + ch.setVisibility(View.VISIBLE); + } String eName = DownloadActivity.getFullName(e, getMyApplication(), osmandRegions); name.setText(eName.trim()); //$NON-NLS-1$ String d = e.getDate(format) + "\n" + e.getSizeDescription(getMyApplication()); description.setText(d); - final CheckBox ch = (CheckBox) v.findViewById(R.id.check_download_item); ch.setChecked(getDownloadActivity().getEntriesToDownload().containsKey(e)); ch.setOnClickListener(new View.OnClickListener() { @Override From fcd7387e1b532d013a6c5a1b9db7f7c7ea549035 Mon Sep 17 00:00:00 2001 From: Bars107 Date: Mon, 1 Dec 2014 18:48:31 +0200 Subject: [PATCH 104/157] Fixed null pointer --- OsmAnd/src/net/osmand/plus/download/UpdatesIndexFragment.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/download/UpdatesIndexFragment.java b/OsmAnd/src/net/osmand/plus/download/UpdatesIndexFragment.java index 3217224fae..7c0aa3a819 100644 --- a/OsmAnd/src/net/osmand/plus/download/UpdatesIndexFragment.java +++ b/OsmAnd/src/net/osmand/plus/download/UpdatesIndexFragment.java @@ -43,7 +43,7 @@ public class UpdatesIndexFragment extends SherlockListFragment { osmandRegions = getMyApplication().getResourceManager().getOsmandRegions(); List indexItems = new ArrayList(); if (BaseDownloadActivity.downloadListIndexThread != null) { - indexItems = DownloadActivity.downloadListIndexThread.getItemsToUpdate(); + indexItems = new ArrayList(DownloadActivity.downloadListIndexThread.getItemsToUpdate()); } createListView(indexItems); setHasOptionsMenu(true); @@ -73,7 +73,7 @@ public class UpdatesIndexFragment extends SherlockListFragment { return; } - createListView(items); + createListView(new ArrayList(items)); } @Override From b73ac2da9c68d78b8b71b7b606514b3d4e165c9e Mon Sep 17 00:00:00 2001 From: Alexey Pelykh Date: Mon, 1 Dec 2014 19:41:51 +0200 Subject: [PATCH 105/157] Fix some issues with new rendering --- .../core/android/MapRendererContext.java | 521 +++++++----------- .../osmand/plus/activities/MapActivity.java | 103 +--- .../osmand/plus/dialogs/ConfigureMapMenu.java | 4 +- .../osmand/plus/helpers/WakeLockHelper.java | 103 ++++ .../osmand/plus/render/MapVectorLayer.java | 19 + .../osmand/plus/render/NativeCppLibrary.java | 0 .../net/osmand/plus/routing/VoiceRouter.java | 55 +- .../plus/views/AnimateDraggingMapThread.java | 20 +- .../views/corenative/NativeCoreContext.java | 61 +- 9 files changed, 423 insertions(+), 463 deletions(-) create mode 100755 OsmAnd/src/net/osmand/plus/helpers/WakeLockHelper.java mode change 100644 => 100755 OsmAnd/src/net/osmand/plus/render/NativeCppLibrary.java diff --git a/OsmAnd/src/net/osmand/core/android/MapRendererContext.java b/OsmAnd/src/net/osmand/core/android/MapRendererContext.java index 9719e523f6..173474f3d5 100644 --- a/OsmAnd/src/net/osmand/core/android/MapRendererContext.java +++ b/OsmAnd/src/net/osmand/core/android/MapRendererContext.java @@ -13,10 +13,18 @@ import net.osmand.core.jni.MapPresentationEnvironment; import net.osmand.core.jni.MapPrimitivesProvider; import net.osmand.core.jni.MapPrimitiviser; import net.osmand.core.jni.MapRasterLayerProvider_Software; +import net.osmand.core.jni.MapStylesCollection; import net.osmand.core.jni.ObfMapObjectsProvider; import net.osmand.core.jni.QStringStringHash; import net.osmand.core.jni.MapPresentationEnvironment.LanguagePreference; import net.osmand.core.jni.ResolvedMapStyle; +import net.osmand.plus.OsmandApplication; +import net.osmand.plus.OsmandSettings; +import net.osmand.plus.OsmandSettings.CommonPreference; +import net.osmand.plus.render.RendererRegistry; +import net.osmand.render.RenderingRuleProperty; +import net.osmand.render.RenderingRulesStorage; +import net.osmand.util.Algorithms; /** * Context container and utility class for MapRendererView and derivatives. @@ -26,32 +34,61 @@ import net.osmand.core.jni.ResolvedMapStyle; */ public class MapRendererContext { - public MapRendererContext() { - } - - public MapRendererContext(MapRendererView mapRendererView) { - _mapRendererView = mapRendererView; - } + private static final int OBF_RASTER_LAYER = 0; + private OsmandApplication app; /** - * Synchronisation object used to perform state changes atomically + * Cached map styles per name */ - private final Object _syncObject = new Object(); + private Map mapStyles = new HashMap(); + + /** + * Reference to OBF map symbols provider (if used) + */ + private IMapTiledSymbolsProvider obfMapSymbolsProvider; + + /** + * Map styles collection + */ + private MapStylesCollection mapStylesCollection; + + /** + * Reference to map presentation environment (if used) + */ + private MapPresentationEnvironment mapPresentationEnvironment; + + /** + * Reference to OBFs collection (if present) + */ + private IObfsCollection obfsCollection; /** * Reference to map renderer view that is currently managed by this * context */ - private MapRendererView _mapRendererView; + private MapRendererView mapRendererView; + + + /** + * Display density factor + */ + private float displayDensityFactor = 1; /** - * Get currently bound map renderer view - * @return Reference to MapRendererView + * Reference tile size on screen in pixels */ - public MapRendererView getMapRendererView() { - synchronized (_syncObject) { - return _mapRendererView; - } + private float referenceTileSizef = 256; + + /** + * Raster tile size in texels + */ + private int rasterTileSize = 256; + + private CachedMapPresentation presentationObjectParams; + + + public MapRendererContext(OsmandApplication app) { + this.app = app; } /** @@ -59,266 +96,149 @@ public class MapRendererContext { * @param mapRendererView Reference to MapRendererView */ public void setMapRendererView(MapRendererView mapRendererView) { - synchronized (_syncObject) { - boolean update = (_mapRendererView != mapRendererView); - if (!update) - return; - - _mapRendererView = mapRendererView; - if (_mapRendererView != null) - apply(); + boolean update = (this.mapRendererView != mapRendererView); + if (!update) { + return; + } + this.mapRendererView = mapRendererView; + if (mapRendererView != null) { + apply(); } } - /** - * Display density factor - */ - private float _displayDensityFactor = 1; - /** - * Reference tile size on screen in pixels - */ - private float _referenceTileSize = 256; - - /** - * Raster tile size in texels - */ - private int _rasterTileSize = 256; + private class CachedMapPresentation { + String langId ; + LanguagePreference langPref; + ResolvedMapStyle mapStyle; + double displayDensityFactor; + + public CachedMapPresentation(String langId, + LanguagePreference langPref, ResolvedMapStyle mapStyle, + double displayDensityFactor) { + this.langId = langId; + this.langPref = langPref; + this.mapStyle = mapStyle; + this.displayDensityFactor = displayDensityFactor; + } + + + public boolean equalsFields(CachedMapPresentation other ) { + if (Double.doubleToLongBits(displayDensityFactor) != Double + .doubleToLongBits(other.displayDensityFactor)) + return false; + if (langId == null) { + if (other.langId != null) + return false; + } else if (!langId.equals(other.langId)) + return false; + if (langPref != other.langPref) + return false; + if (mapStyle == null) { + if (other.mapStyle != null) + return false; + } else if (!mapStyle.equals(other.mapStyle)) + return false; + return true; + } + + } - /** - * Get current display density factor - * @return Display density factor - */ - public float getDisplayDensityFactor() { - synchronized (_syncObject) { - return _displayDensityFactor; - } - } /** * Set display density factor and update context (if needed) * @param displayDensityFactor New display density factor */ public void setDisplayDensityFactor(float displayDensityFactor) { - synchronized (_syncObject) { - boolean update = (_displayDensityFactor != displayDensityFactor); - if (!update) - return; - - _displayDensityFactor = displayDensityFactor; - _referenceTileSize = 256.0f * _displayDensityFactor; - _rasterTileSize = Integer.highestOneBit((int)_referenceTileSize - 1) * 2; - - if (_mapRendererView instanceof AtlasMapRendererView) - ((AtlasMapRendererView)_mapRendererView).setReferenceTileSizeOnScreenInPixels(_referenceTileSize); - if (_mapPresentationEnvironment != null) - updateMapPresentationEnvironment(); - } + this.displayDensityFactor = displayDensityFactor; + referenceTileSizef = 256.0f * displayDensityFactor; + rasterTileSize = Integer.highestOneBit((int) referenceTileSizef - 1) * 2; + + if (mapRendererView instanceof AtlasMapRendererView) + ((AtlasMapRendererView) mapRendererView) + .setReferenceTileSizeOnScreenInPixels(referenceTileSizef); + if (mapPresentationEnvironment != null) + updateMapPresentationEnvironment(); } - /** - * Reference to resolved map style (if used) - */ - private ResolvedMapStyle _mapStyle; - - /** - * Get current map style - * @return Reference to current map style - */ - public ResolvedMapStyle getMapStyle() { - synchronized (_syncObject) { - return _mapStyle; - } - } - - /** - * Set map style and update context (if needed) - * @param mapStyle - */ - public void setMapStyle(ResolvedMapStyle mapStyle) { - synchronized (_syncObject) { - boolean update = (_mapStyle != mapStyle); - if (!update) - return; - - _mapStyle = mapStyle; - if (_mapPresentationEnvironment != null) - updateMapPresentationEnvironment(); - } - } - - /** - * Reference to map style settings (if present) - */ - private Map _mapStyleSettings; - - /** - * Get current map style settings - * @return - */ - public Map getMapStyleSettings() { - synchronized (_syncObject) { - if (_mapStyleSettings == null) - return null; - return Collections.unmodifiableMap(_mapStyleSettings); - } - } - - /** - * Set map style settings and update context (if needed) - * @param mapStyleSettings Map style settings - */ - public void setMapStyleSettings(Map mapStyleSettings) { - synchronized (_syncObject) { - boolean update = !_mapStyleSettings.equals(mapStyleSettings); - if (!update) - return; - - _mapStyleSettings = new HashMap(mapStyleSettings); - if (_mapPresentationEnvironment != null) - updateMapPresentationEnvironment(); - } - } - - /** - * Locale language - */ - private String _localeLanguageId = "en"; - - /** - * Get current locale language - * @return Locale language identifier - */ - public String getLocaleLanguageId() { - synchronized (_syncObject) { - return _localeLanguageId; - } - } - - /** - * Set current locale language and update context (if needed) - * @param localeLanguageId Locale language identifier - */ - public void setLocaleLanguageId(String localeLanguageId) { - synchronized (_syncObject) { - boolean update = !_localeLanguageId.equals(localeLanguageId); - if (!update) - return; - - _localeLanguageId = localeLanguageId; - if (_mapPresentationEnvironment != null) - updateMapPresentationEnvironment(); - } - } - - /** - * Language preference - */ - private LanguagePreference _languagePreference = LanguagePreference.LocalizedAndNative; - - /** - * Get current language preference - * @return Language preference - */ - public LanguagePreference getLanguagePreference() { - synchronized (_syncObject) { - return _languagePreference; - } - } - - /** - * Set language preference and update context (if needed) - * @param languagePreference - */ - public void setLanguagePreference(LanguagePreference languagePreference) { - synchronized (_syncObject) { - boolean update = (_languagePreference != languagePreference); - if (!update) - return; - - _languagePreference = languagePreference; - if (_mapPresentationEnvironment != null) - updateMapPresentationEnvironment(); - } - } - - /** - * Reference to OBFs collection (if present) - */ - private IObfsCollection _obfsCollection; - - /** - * Get current OBFs collection - * @return OBFs collection - */ - public IObfsCollection getObfsCollection() { - synchronized (_syncObject) { - return _obfsCollection; - } - } - - /** - * Set OBFs collection and update context (if needed) - * @param obfsCollection - */ - public void setObfsCollection(IObfsCollection obfsCollection) { - synchronized (_syncObject) { - boolean update = (_obfsCollection != obfsCollection); - if (!update) - return; - - _obfsCollection = obfsCollection; - if (_obfMapObjectsProvider != null) - updateObfMapObjectsProvider(); - } - } - - /** - * Reference to map presentation environment (if used) - */ - private MapPresentationEnvironment _mapPresentationEnvironment; + /** * Update map presentation environment and everything that depends on it */ private void updateMapPresentationEnvironment() { // Create new map presentation environment - _mapPresentationEnvironment = new MapPresentationEnvironment( - _mapStyle, - _displayDensityFactor, - _localeLanguageId, - _languagePreference); - - // Apply map style settings - if (_mapStyleSettings != null) { - QStringStringHash convertedStyleSettings = new QStringStringHash(); - for (Iterator> itSetting = _mapStyleSettings - .entrySet().iterator(); itSetting.hasNext();) { - Map.Entry setting = itSetting.next(); - convertedStyleSettings.set(setting.getKey(), setting.getValue()); - } - _mapPresentationEnvironment.setSettings(convertedStyleSettings); + String langId = app.getSettings().MAP_PREFERRED_LOCALE.get(); + // TODO make setting + LanguagePreference langPref = LanguagePreference.LocalizedOrNative; + String rendName = app.getSettings().RENDERER.get(); + if(rendName.length() == 0 || rendName.equals(RendererRegistry.DEFAULT_RENDER)) { + rendName = "default"; + } + if(!mapStyles.containsKey(rendName)) { + mapStyles.put(rendName, mapStylesCollection.getResolvedStyleByName(rendName)); + } + ResolvedMapStyle mapStyle = mapStyles.get(rendName); + CachedMapPresentation pres = new CachedMapPresentation(langId, langPref, mapStyle, displayDensityFactor); + if (this.presentationObjectParams == null + || !this.presentationObjectParams.equalsFields(pres)) { + this.presentationObjectParams = pres; + mapPresentationEnvironment = new MapPresentationEnvironment( + mapStyle, displayDensityFactor, langId, langPref); } + // Apply map style settings + OsmandSettings prefs = app.getSettings(); + RenderingRulesStorage storage = app.getRendererRegistry() + .getCurrentSelectedRenderer(); + Map props = new HashMap(); + for (RenderingRuleProperty customProp : storage.PROPS.getCustomRules()) { + if (customProp.isBoolean()) { + CommonPreference pref = prefs + .getCustomRenderBooleanProperty(customProp + .getAttrName()); + props.put(customProp.getAttrName(), pref.get() + ""); + } else { + CommonPreference settings = prefs + .getCustomRenderProperty(customProp.getAttrName()); + String res = settings.get(); + if (!Algorithms.isEmpty(res)) { + props.put(customProp.getAttrName(), res); + } + } + } + + QStringStringHash convertedStyleSettings = new QStringStringHash(); + for (Iterator> itSetting = props.entrySet() + .iterator(); itSetting.hasNext();) { + Map.Entry setting = itSetting.next(); + convertedStyleSettings.set(setting.getKey(), setting.getValue()); + } + if(nightMode) { + convertedStyleSettings.set("nightMode", "true"); + } + mapPresentationEnvironment.setSettings(convertedStyleSettings); + // Update all dependencies - if (_mapPrimitiviser != null) + if (mapPrimitiviser != null) { updateMapPrimitiviser(); + } } /** * Reference to map primitiviser (if used) */ - private MapPrimitiviser _mapPrimitiviser; + private MapPrimitiviser mapPrimitiviser; /** * Update map primitiviser and everything that depends on it */ private void updateMapPrimitiviser() { // Create new map primitiviser - _mapPrimitiviser = new MapPrimitiviser(_mapPresentationEnvironment); + mapPrimitiviser = new MapPrimitiviser(mapPresentationEnvironment); // Update all dependencies - if (_mapPrimitivesProvider != null) + if (mapPrimitivesProvider != null) updateMapPrimitivesProvider(); } @@ -332,146 +252,123 @@ public class MapRendererContext { */ private void updateObfMapObjectsProvider() { _obfMapObjectsProvider = new ObfMapObjectsProvider( - _obfsCollection); + obfsCollection); // Update all dependencies - if (_mapPrimitivesProvider != null) + if (mapPrimitivesProvider != null) updateMapPrimitivesProvider(); } /** * Reference to map primitives provider (if used) */ - private MapPrimitivesProvider _mapPrimitivesProvider; + private MapPrimitivesProvider mapPrimitivesProvider; /** * Update map primitives provider and everything that depends on it */ private void updateMapPrimitivesProvider() { // Create new map primitives provider - _mapPrimitivesProvider = new MapPrimitivesProvider( + mapPrimitivesProvider = new MapPrimitivesProvider( _obfMapObjectsProvider, - _mapPrimitiviser, - _rasterTileSize); + mapPrimitiviser, + rasterTileSize); // Update all dependencies - if (_obfMapRasterLayerProvider != null) + if (obfMapRasterLayerProvider != null) updateObfMapRasterLayerProvider(); - if (_obfMapSymbolsProvider != null) + if (obfMapSymbolsProvider != null) updateObfMapSymbolsProvider(); } /** * Reference to OBF map raster layer provider (if used) */ - private IRasterMapLayerProvider _obfMapRasterLayerProvider; + private IRasterMapLayerProvider obfMapRasterLayerProvider; /** * Index of OBF map raster layer in bound map renderer view (if set) */ - private Integer _obfMapRasterLayer; + private Integer obfMapRasterLayer; + private boolean nightMode; /** * Update OBF map raster layer provider and everything that depends on it */ private void updateObfMapRasterLayerProvider() { // Create new OBF map raster layer provider - _obfMapRasterLayerProvider = new MapRasterLayerProvider_Software( - _mapPrimitivesProvider); + obfMapRasterLayerProvider = new MapRasterLayerProvider_Software( + mapPrimitivesProvider); // In case there's bound view and configured layer, perform setup - if(_mapRendererView != null && _obfMapRasterLayer != null) - _mapRendererView.setMapLayerProvider(_obfMapRasterLayer, _obfMapRasterLayerProvider); + if(mapRendererView != null && obfMapRasterLayer != null) + mapRendererView.setMapLayerProvider(obfMapRasterLayer, obfMapRasterLayerProvider); } - /** - * Reference to OBF map symbols provider (if used) - */ - private IMapTiledSymbolsProvider _obfMapSymbolsProvider; + /** * Update OBF map symbols provider and everything that depends on it */ private void updateObfMapSymbolsProvider() { // If there's current provider and bound view, remove it - if (_obfMapSymbolsProvider != null && _mapRendererView != null) - _mapRendererView.removeSymbolsProvider(_obfMapSymbolsProvider); + if (obfMapSymbolsProvider != null && mapRendererView != null) + mapRendererView.removeSymbolsProvider(obfMapSymbolsProvider); // Create new OBF map symbols provider - _obfMapSymbolsProvider = new MapObjectsSymbolsProvider( - _mapPrimitivesProvider, - _referenceTileSize); + obfMapSymbolsProvider = new MapObjectsSymbolsProvider( + mapPrimitivesProvider, + referenceTileSizef); // If there's bound view, add new provider - if (_mapRendererView != null) - _mapRendererView.addSymbolsProvider(_obfMapSymbolsProvider); + if (mapRendererView != null) + mapRendererView.addSymbolsProvider(obfMapSymbolsProvider); } /** * Apply current context to view */ private void apply() { - if (_mapRendererView instanceof AtlasMapRendererView) - ((AtlasMapRendererView)_mapRendererView).setReferenceTileSizeOnScreenInPixels(_referenceTileSize); + if (mapRendererView instanceof AtlasMapRendererView) + ((AtlasMapRendererView)mapRendererView).setReferenceTileSizeOnScreenInPixels(referenceTileSizef); // Layers - if (_obfMapRasterLayer != null && _obfMapRasterLayerProvider != null) - _mapRendererView.setMapLayerProvider(_obfMapRasterLayer, _obfMapRasterLayerProvider); + if (obfMapRasterLayer != null && obfMapRasterLayerProvider != null) + mapRendererView.setMapLayerProvider(obfMapRasterLayer, obfMapRasterLayerProvider); // Symbols - if (_obfMapSymbolsProvider != null) - _mapRendererView.addSymbolsProvider(_obfMapSymbolsProvider); + if (obfMapSymbolsProvider != null) + mapRendererView.addSymbolsProvider(obfMapSymbolsProvider); } /** * Setup OBF map on layer 0 with symbols * @param obfsCollection OBFs collection */ - public void setupObfMap(ResolvedMapStyle mapStyle, IObfsCollection obfsCollection) { - setupObfMap(mapStyle, obfsCollection, 0, true); + public void setupObfMap(MapStylesCollection mapStylesCollection, IObfsCollection obfsCollection) { + this.obfsCollection = obfsCollection; + this.mapStylesCollection = mapStylesCollection; + this.obfMapRasterLayer = OBF_RASTER_LAYER; + updateMapPresentationEnvironment(); + updateMapPrimitiviser(); + updateMapPrimitivesProvider(); + updateObfMapObjectsProvider(); + updateObfMapRasterLayerProvider(); + updateObfMapSymbolsProvider(); } - /** - * Setup OBF map on specified layer with optional symbols - * @param obfsCollection OBFs collection - * @param layer Layer index - * @param withSymbols True if with symbols, false otherwise - */ - public void setupObfMap(ResolvedMapStyle mapStyle, - IObfsCollection obfsCollection, - int layer, - boolean withSymbols) { - synchronized (_syncObject) { - boolean update = false; - - if (_mapStyle != mapStyle) { - _mapStyle = mapStyle; - update = true; - } - - if (_obfsCollection != obfsCollection) { - _obfsCollection = obfsCollection; - update = true; - } - - if (_obfMapRasterLayer == null || _obfMapRasterLayer != layer) { - _obfMapRasterLayer = layer; - update = true; - } - - if (withSymbols != (_obfMapSymbolsProvider != null)) { - update = true; - } - - if (!update) - return; - + public void updateMapSettings() { + if (mapPresentationEnvironment != null) { updateMapPresentationEnvironment(); - updateMapPrimitiviser(); - updateMapPrimitivesProvider(); - updateObfMapObjectsProvider(); - updateObfMapRasterLayerProvider(); - updateObfMapSymbolsProvider(); } } + + public boolean isNightMode() { + return nightMode; + } + + public void setNightMode(boolean nightMode) { + this.nightMode = nightMode; + updateMapSettings(); + } } diff --git a/OsmAnd/src/net/osmand/plus/activities/MapActivity.java b/OsmAnd/src/net/osmand/plus/activities/MapActivity.java index 6e790a50f9..f5287d7d9c 100644 --- a/OsmAnd/src/net/osmand/plus/activities/MapActivity.java +++ b/OsmAnd/src/net/osmand/plus/activities/MapActivity.java @@ -37,6 +37,7 @@ import net.osmand.plus.activities.search.SearchActivity; import net.osmand.plus.base.FailSafeFuntions; import net.osmand.plus.base.MapViewTrackingUtilities; import net.osmand.plus.helpers.GpxImportHelper; +import net.osmand.plus.helpers.WakeLockHelper; import net.osmand.plus.render.RendererRegistry; import net.osmand.plus.resources.ResourceManager; import net.osmand.plus.routing.RoutingHelper; @@ -81,8 +82,7 @@ import android.widget.FrameLayout; import android.widget.ProgressBar; import android.widget.Toast; -public class MapActivity extends AccessibleActivity implements - VoiceRouter.VoiceMessageListener { +public class MapActivity extends AccessibleActivity { private static final int SHOW_POSITION_MSG_ID = OsmAndConstants.UI_HANDLER_MAP_VIEW + 1; private static final int LONG_KEYPRESS_MSG_ID = OsmAndConstants.UI_HANDLER_MAP_VIEW + 2; @@ -114,13 +114,9 @@ public class MapActivity extends AccessibleActivity implements private StateChangedListener applicationModeListener; private FrameLayout lockView; private GpxImportHelper gpxImportHelper; - private PowerManager.WakeLock wakeLock = null; - private ReleaseWakeLocksRunnable releaseWakeLocksRunnable = new ReleaseWakeLocksRunnable(); - private boolean active = false; + private WakeLockHelper wakeLockHelper ; private boolean intentLocation = false; - private DevicePolicyManager mDevicePolicyManager; - private ComponentName mDeviceAdmin; private Notification getNotification() { Intent notificationIndent = new Intent(this, getMyApplication().getAppCustomization().getMapActivity()); @@ -229,9 +225,8 @@ public class MapActivity extends AccessibleActivity implements gpxImportHelper = new GpxImportHelper(this, getMyApplication(), getMapView()); mapActions.prepareStartOptionsMenu(); - - mDeviceAdmin = new ComponentName(getApplicationContext(), DeviceAdminRecv.class); - mDevicePolicyManager = (DevicePolicyManager) getSystemService(DEVICE_POLICY_SERVICE); + + wakeLockHelper = new WakeLockHelper(getMyApplication()); } @@ -571,11 +566,7 @@ public class MapActivity extends AccessibleActivity implements @Override protected void onStart() { super.onStart(); - active = true; - if (wakeLock == null) { - VoiceRouter voiceRouter = app.getRoutingHelper().getVoiceRouter(); - voiceRouter.removeVoiceMessageListener(this); - } + wakeLockHelper.onStart(this); } protected void setProgressDlg(Dialog progressDlg) { @@ -598,11 +589,7 @@ public class MapActivity extends AccessibleActivity implements progressDlg.dismiss(); progressDlg = null; } - if (!isFinishing() && (settings.WAKE_ON_VOICE_INT.get() > 0)) { - VoiceRouter voiceRouter = app.getRoutingHelper().getVoiceRouter(); - voiceRouter.addVoiceMessageListener(this); - } - active = false; + wakeLockHelper.onStop(this); super.onStop(); } @@ -671,16 +658,7 @@ public class MapActivity extends AccessibleActivity implements public void updateApplicationModeSettings() { changeKeyguardFlags(); - // update vector renderer - RendererRegistry registry = app.getRendererRegistry(); - RenderingRulesStorage newRenderer = registry.getRenderer(settings.RENDERER.get()); - if (newRenderer == null) { - newRenderer = registry.defaultRender(); - } - if (registry.getCurrentSelectedRenderer() != newRenderer) { - registry.setCurrentSelectedRender(newRenderer); - app.getResourceManager().getRenderer().clearCache(); - } + updateMapSettings(); mapViewTrackingUtilities.updateSettings(); app.getRoutingHelper().setAppMode(settings.getApplicationMode()); if (mapLayers.getMapInfoLayer() != null) { @@ -697,6 +675,22 @@ public class MapActivity extends AccessibleActivity implements }); getMapView().refreshMap(true); } + + public void updateMapSettings() { + // update vector renderer + RendererRegistry registry = app.getRendererRegistry(); + RenderingRulesStorage newRenderer = registry.getRenderer(settings.RENDERER.get()); + if (newRenderer == null) { + newRenderer = registry.defaultRender(); + } + if(mapView.getMapRenderer() != null) { + NativeCoreContext.getMapRendererContext().updateMapSettings(); + } + if (registry.getCurrentSelectedRenderer() != newRenderer) { + registry.setCurrentSelectedRender(newRenderer); + app.getResourceManager().getRenderer().clearCache(); + } + } @Override @@ -825,54 +819,5 @@ public class MapActivity extends AccessibleActivity implements return getWindow().getDecorView().findViewById(android.R.id.content); } - @Override - public void onVoiceMessage() { - final Integer screenPowerSave = settings.WAKE_ON_VOICE_INT.get(); - if (screenPowerSave > 0) { - uiHandler.removeCallbacks(releaseWakeLocksRunnable); - if (!active && wakeLock == null) { - PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE); - wakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK - | PowerManager.ACQUIRE_CAUSES_WAKEUP, - "OsmAndOnVoiceWakeupTag"); - wakeLock.acquire(); - } - - uiHandler.postDelayed(releaseWakeLocksRunnable, - screenPowerSave * 1000L); - } - } - - private void releaseWakeLocks() { - if (wakeLock != null) { - wakeLock.release(); - wakeLock = null; - } - - if (mDevicePolicyManager != null && mDeviceAdmin != null) { - final Integer screenPowerSave = settings.WAKE_ON_VOICE_INT.get(); - if (screenPowerSave > 0 && settings.MAP_ACTIVITY_ENABLED.get()) { - if (mDevicePolicyManager.isAdminActive(mDeviceAdmin)) { - try { - mDevicePolicyManager.lockNow(); - } catch (SecurityException e) { -// Log.d(TAG, -// "SecurityException: No device admin permission to lock the screen!"); - } - } else { -// Log.d(TAG, -// "No device admin permission to lock the screen!"); - } - } - } - } - - private class ReleaseWakeLocksRunnable implements Runnable { - - @Override - public void run() { - releaseWakeLocks(); - } - } } diff --git a/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java b/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java index 6d26e5696b..3c77b04d38 100644 --- a/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java +++ b/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java @@ -166,6 +166,7 @@ public class ConfigureMapMenu { protected void refreshMapComplete(final MapActivity activity) { activity.getMyApplication().getResourceManager().getRenderer().clearCache(); + activity.updateMapSettings(); activity.getMapView().refreshMap(true); } @@ -368,8 +369,7 @@ public class ConfigureMapMenu { @Override public void onClick(DialogInterface dialog, int which) { pref.set(p.getPossibleValues()[which]); - app.getResourceManager().getRenderer().clearCache(); - view.refreshMap(true); + refreshMapComplete(activity); adapter.setItemDescription(pos, SettingsActivity.getStringPropertyValue(activity, pref.get())); dialog.dismiss(); ad.notifyDataSetInvalidated(); diff --git a/OsmAnd/src/net/osmand/plus/helpers/WakeLockHelper.java b/OsmAnd/src/net/osmand/plus/helpers/WakeLockHelper.java new file mode 100755 index 0000000000..73c4c64463 --- /dev/null +++ b/OsmAnd/src/net/osmand/plus/helpers/WakeLockHelper.java @@ -0,0 +1,103 @@ +package net.osmand.plus.helpers; + +import net.osmand.plus.DeviceAdminRecv; +import net.osmand.plus.OsmandApplication; +import net.osmand.plus.OsmandSettings; +import net.osmand.plus.routing.VoiceRouter; +import android.annotation.SuppressLint; +import android.app.Activity; +import android.app.admin.DevicePolicyManager; +import android.content.ComponentName; +import android.content.Context; +import android.os.Handler; +import android.os.PowerManager; + +@SuppressLint("NewApi") +public class WakeLockHelper implements VoiceRouter.VoiceMessageListener { + + private PowerManager.WakeLock wakeLock = null; + private ReleaseWakeLocksRunnable releaseWakeLocksRunnable = new ReleaseWakeLocksRunnable(); + private DevicePolicyManager mDevicePolicyManager; + private ComponentName mDeviceAdmin; + private Handler uiHandler; + private OsmandApplication app; + private boolean active; + + public WakeLockHelper(OsmandApplication app){ + uiHandler = new Handler(); + this.app = app; + mDeviceAdmin = new ComponentName(app, DeviceAdminRecv.class); + mDevicePolicyManager = (DevicePolicyManager) app.getSystemService(Context.DEVICE_POLICY_SERVICE); + } + + private void releaseWakeLocks() { + if (wakeLock != null) { + wakeLock.release(); + wakeLock = null; + } + + if (mDevicePolicyManager != null && mDeviceAdmin != null) { + OsmandSettings settings = app.getSettings(); + final Integer screenPowerSave = settings.WAKE_ON_VOICE_INT.get(); + if (screenPowerSave > 0 && settings.MAP_ACTIVITY_ENABLED.get()) { + if (mDevicePolicyManager.isAdminActive(mDeviceAdmin)) { + try { + mDevicePolicyManager.lockNow(); + } catch (SecurityException e) { +// Log.d(TAG, +// "SecurityException: No device admin permission to lock the screen!"); + } + } else { +// Log.d(TAG, +// "No device admin permission to lock the screen!"); + } + } + } + } + + private class ReleaseWakeLocksRunnable implements Runnable { + + @Override + public void run() { + releaseWakeLocks(); + } + } + + public void onStart(Activity a) { + this.active = true; + if (wakeLock == null) { + VoiceRouter voiceRouter = app.getRoutingHelper().getVoiceRouter(); + voiceRouter.removeVoiceMessageListener(this); + } + } + + public void onStop(Activity a) { + this.active = false; + OsmandSettings settings = app.getSettings(); + if (!a.isFinishing() && (settings.WAKE_ON_VOICE_INT.get() > 0)) { + VoiceRouter voiceRouter = app.getRoutingHelper().getVoiceRouter(); + voiceRouter.addVoiceMessageListener(this); + } + } + + @Override + public void onVoiceMessage() { + OsmandSettings settings = app.getSettings(); + final Integer screenPowerSave = settings.WAKE_ON_VOICE_INT.get(); + if (screenPowerSave > 0) { + uiHandler.removeCallbacks(releaseWakeLocksRunnable); + + if (!active && wakeLock == null) { + PowerManager pm = (PowerManager) app.getSystemService(Context.POWER_SERVICE); + wakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK + | PowerManager.ACQUIRE_CAUSES_WAKEUP, + "OsmAndOnVoiceWakeupTag"); + wakeLock.acquire(); + } + + uiHandler.postDelayed(releaseWakeLocksRunnable, + screenPowerSave * 1000L); + } + } + +} diff --git a/OsmAnd/src/net/osmand/plus/render/MapVectorLayer.java b/OsmAnd/src/net/osmand/plus/render/MapVectorLayer.java index 4a195a6b9f..b8a3d5e090 100644 --- a/OsmAnd/src/net/osmand/plus/render/MapVectorLayer.java +++ b/OsmAnd/src/net/osmand/plus/render/MapVectorLayer.java @@ -9,11 +9,13 @@ import net.osmand.plus.resources.ResourceManager; import net.osmand.plus.views.BaseMapLayer; import net.osmand.plus.views.MapTileLayer; import net.osmand.plus.views.OsmandMapTileView; +import net.osmand.plus.views.corenative.NativeCoreContext; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.PointF; import android.graphics.RectF; +import android.view.MotionEvent; public class MapVectorLayer extends BaseMapLayer { @@ -80,6 +82,20 @@ public class MapVectorLayer extends BaseMapLayer { } + @Override + public boolean onTouchEvent(MotionEvent event, RotatedTileBox tileBox) { + final MapRendererView mapRenderer = view.getMapRenderer(); + if (mapRenderer != null) { + if (event.getAction() == MotionEvent.ACTION_DOWN) { + mapRenderer.suspendSymbolsUpdate(); + } else if (event.getAction() == MotionEvent.ACTION_UP) { + mapRenderer.resumeSymbolsUpdate(); + } + } + + return false; + } + @Override public void onPrepareBufferImage(Canvas canvas, RotatedTileBox tilesRect, DrawSettings drawSettings) { @@ -92,6 +108,9 @@ public class MapVectorLayer extends BaseMapLayer { } else { final MapRendererView mapRenderer = view.getMapRenderer(); if (mapRenderer != null) { + if(NativeCoreContext.getMapRendererContext().isNightMode() != drawSettings.isNightMode()) { + NativeCoreContext.getMapRendererContext().setNightMode(drawSettings.isNightMode()); + } // opengl renderer mapRenderer.setTarget(new PointI(tilesRect.getCenter31X(), tilesRect.getCenter31Y())); mapRenderer.setAzimuth(-tilesRect.getRotate()); diff --git a/OsmAnd/src/net/osmand/plus/render/NativeCppLibrary.java b/OsmAnd/src/net/osmand/plus/render/NativeCppLibrary.java old mode 100644 new mode 100755 diff --git a/OsmAnd/src/net/osmand/plus/routing/VoiceRouter.java b/OsmAnd/src/net/osmand/plus/routing/VoiceRouter.java index f945cb4e43..0271fd28e1 100644 --- a/OsmAnd/src/net/osmand/plus/routing/VoiceRouter.java +++ b/OsmAnd/src/net/osmand/plus/routing/VoiceRouter.java @@ -4,6 +4,7 @@ package net.osmand.plus.routing; import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ConcurrentHashMap; import net.osmand.Location; import net.osmand.binary.RouteDataObject; @@ -76,8 +77,7 @@ public class VoiceRouter { public interface VoiceMessageListener { void onVoiceMessage(); } - private List voiceMessageListeners; - private Handler handler; + private ConcurrentHashMap voiceMessageListeners; public VoiceRouter(RoutingHelper router, final OsmandSettings settings, CommandPlayer player) { this.router = router; @@ -85,12 +85,7 @@ public class VoiceRouter { this.settings = settings; empty = new Struct(""); - voiceMessageListeners = new ArrayList(); - Looper looper = Looper.myLooper(); - if (looper == null) { - looper = Looper.getMainLooper(); - } - handler = new Handler(looper); + voiceMessageListeners = new ConcurrentHashMap(); } public void setPlayer(CommandPlayer player) { @@ -847,46 +842,24 @@ public class VoiceRouter { } public void addVoiceMessageListener(VoiceMessageListener voiceMessageListener) { - synchronized (voiceMessageListeners) { - if (!voiceMessageListeners.contains(voiceMessageListener)) { - voiceMessageListeners.add(voiceMessageListener); - } - } + voiceMessageListeners.put(voiceMessageListener, null); } public void removeVoiceMessageListener(VoiceMessageListener voiceMessageListener) { - synchronized (voiceMessageListeners) { - if (voiceMessageListeners.contains(voiceMessageListener)) { - voiceMessageListeners.remove(voiceMessageListener); - } - } + voiceMessageListeners.remove(voiceMessageListener); } public void notifyOnVoiceMessage() { - handler.post(new Runnable() { - - @Override - public void run() { - synchronized (voiceMessageListeners) { - for (final VoiceMessageListener voiceMessageListener : voiceMessageListeners) { - Runnable closure = new Runnable() { - public void run() { - if (settings.WAKE_ON_VOICE_INT.get() > 0) { - synchronized (voiceMessageListeners) { - if (voiceMessageListeners - .contains(voiceMessageListener) - && (settings.WAKE_ON_VOICE_INT.get() > 0)) { - voiceMessageListener - .onVoiceMessage(); - } - } - } - } - }; - handler.post(closure); + if (settings.WAKE_ON_VOICE_INT.get() > 0) { + router.getApplication().runInUIThread(new Runnable() { + @Override + public void run() { + for (VoiceMessageListener lnt : voiceMessageListeners + .keySet()) { + lnt.onVoiceMessage(); } } - } - }); + }); + } } } diff --git a/OsmAnd/src/net/osmand/plus/views/AnimateDraggingMapThread.java b/OsmAnd/src/net/osmand/plus/views/AnimateDraggingMapThread.java index 53fdf2ed02..89de94d564 100644 --- a/OsmAnd/src/net/osmand/plus/views/AnimateDraggingMapThread.java +++ b/OsmAnd/src/net/osmand/plus/views/AnimateDraggingMapThread.java @@ -1,6 +1,7 @@ package net.osmand.plus.views; import net.osmand.PlatformUtil; +import net.osmand.core.android.MapRendererView; import net.osmand.data.RotatedTileBox; import net.osmand.util.MapUtils; @@ -8,6 +9,7 @@ import org.apache.commons.logging.Log; import android.os.SystemClock; import android.util.FloatMath; +import android.view.MotionEvent; import android.view.animation.AccelerateDecelerateInterpolator; import android.view.animation.DecelerateInterpolator; import android.view.animation.LinearInterpolator; @@ -103,10 +105,12 @@ public class AnimateDraggingMapThread { @Override public void run() { - try { + try { + suspendUpdate(); runnable.run(); } finally { currentThread = null; + resumeUpdate(); } } }, "Animating Thread"); @@ -305,6 +309,20 @@ public class AnimateDraggingMapThread { targetZoomScale = 0; } + private void suspendUpdate() { + final MapRendererView mapRenderer = tileView.getMapRenderer(); + if (mapRenderer != null) { + mapRenderer.suspendSymbolsUpdate(); + } + } + + private void resumeUpdate() { + final MapRendererView mapRenderer = tileView.getMapRenderer(); + if (mapRenderer != null) { + mapRenderer.resumeSymbolsUpdate(); + } + } + private void setTargetValues(int zoom, double zoomScale, double lat, double lon){ targetIntZoom = zoom; targetZoomScale = zoomScale; diff --git a/OsmAnd/src/net/osmand/plus/views/corenative/NativeCoreContext.java b/OsmAnd/src/net/osmand/plus/views/corenative/NativeCoreContext.java index 775ec8fad1..c660c749a2 100644 --- a/OsmAnd/src/net/osmand/plus/views/corenative/NativeCoreContext.java +++ b/OsmAnd/src/net/osmand/plus/views/corenative/NativeCoreContext.java @@ -6,6 +6,7 @@ import android.content.Context; import android.util.DisplayMetrics; import android.util.Log; import android.view.WindowManager; +import net.osmand.IndexConstants; import net.osmand.core.android.CoreResourcesFromAndroidAssetsCustom; import net.osmand.core.android.MapRendererContext; import net.osmand.core.android.NativeCore; @@ -23,6 +24,8 @@ public class NativeCoreContext { private static boolean init; + private static MapRendererContext mapRendererContext; + public static boolean isInit() { return init; } @@ -52,42 +55,44 @@ public class NativeCoreContext { WindowManager mgr = (WindowManager)app.getSystemService(Context.WINDOW_SERVICE); DisplayMetrics dm = new DisplayMetrics(); mgr.getDefaultDisplay().getMetrics(dm); - - // Get device display density factor -// DisplayMetrics displayMetrics = new DisplayMetrics(); -// act.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); - DisplayMetrics displayMetrics = app.getResources().getDisplayMetrics(); - // TODO getSettings().getSettingsZoomScale() + Math.sqrt(Math.max(0, getDensity() - 1)) - float scaleCoefficient = displayMetrics.density; - if (Math.min(dm.widthPixels / (dm.density * 160), dm.heightPixels / (dm.density * 160)) > 2.5f) { - // large screen - scaleCoefficient *= 1.5f; - } - float displayDensityFactor = scaleCoefficient; + float displayDensityFactor = (float) Math.pow(2, (app.getSettings().getSettingsZoomScale() + Math.sqrt(Math.max(0, dm.density - 1)))); - _obfsCollection = new ObfsCollection(); - _obfsCollection.addDirectory(directory.getAbsolutePath(), false); + ObfsCollection obfsCollection = new ObfsCollection(); + obfsCollection.addDirectory(directory.getAbsolutePath(), false); - _mapStylesCollection = new MapStylesCollection(); - - _mapRendererContext = new MapRendererContext(); - _mapRendererContext.setDisplayDensityFactor(displayDensityFactor); - _mapRendererContext.setupObfMap( - _mapStylesCollection.getResolvedStyleByName("default"), - _obfsCollection); + MapStylesCollection mapStylesCollection = setupMapStyleCollection(app); + mapRendererContext = new MapRendererContext(app); + mapRendererContext.setDisplayDensityFactor(displayDensityFactor); + mapRendererContext.setupObfMap(mapStylesCollection, obfsCollection); init = true; } } } - - private static MapStylesCollection _mapStylesCollection; - - private static ObfsCollection _obfsCollection; - - private static MapRendererContext _mapRendererContext; + + private static MapStylesCollection setupMapStyleCollection( + OsmandApplication app) { + MapStylesCollection mapStylesCollection = new MapStylesCollection(); + // Alexey TODO +// internalRenderers.put("Touring-view_(more-contrast-and-details)", "Touring-view_(more-contrast-and-details)" +".render.xml"); +// internalRenderers.put("UniRS", "UniRS" + ".render.xml"); +// internalRenderers.put("LightRS", "LightRS" + ".render.xml"); +// internalRenderers.put("High-contrast-roads", "High-contrast-roads" + ".render.xml"); +// internalRenderers.put("Winter-and-ski", "Winter-and-ski" + ".render.xml"); + File renderers = app.getAppPath(IndexConstants.RENDERERS_DIR); + File[] lf = renderers.listFiles(); + if(lf != null) { + for(File f : lf) { + if(f.getName().endsWith(IndexConstants.RENDERER_INDEX_EXT)) { + mapStylesCollection.addStyleFromFile(f.getAbsolutePath()); + } + } + } + return mapStylesCollection; + } + public static MapRendererContext getMapRendererContext() { - return _mapRendererContext; + return mapRendererContext; } } From 39985aabc1755cfce13341d36dd68d87c6829213 Mon Sep 17 00:00:00 2001 From: stephan 75 Date: Mon, 1 Dec 2014 18:11:42 +0100 Subject: [PATCH 106/157] Translated using Weblate (German) Currently translated at 99.9% (1566 of 1567 strings) --- OsmAnd/res/values-de/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-de/strings.xml b/OsmAnd/res/values-de/strings.xml index 3c027aead9..6f7cf174ed 100644 --- a/OsmAnd/res/values-de/strings.xml +++ b/OsmAnd/res/values-de/strings.xml @@ -1,4 +1,4 @@ - + Geschwindigkeitsbegrenzung Grenzkontrolle @@ -1950,7 +1950,7 @@ Afghanistan, Ägypten, Albanien, Algerien, Andorra, Angola, Anguilla, Antigua an GPX-Route umkehren Derzeitiges Ziel verwenden Gesamten Track durchlaufen - Keine GPX-Dateien gefunden in /tracks-Ordner + Keine GPX-Dateien gefunden im /tracks-Ordner GPX-Dateiname GPX-Datei erfolgreich gespeichert unter {0} Berechnen des ersten und letzten Abschnitts der OsmAnd-Route From 1626b17e260d1c7830f5fa2db0532071a16b18ab Mon Sep 17 00:00:00 2001 From: 8c6311e901274f6baef2068792c8ab Date: Mon, 1 Dec 2014 15:47:41 +0100 Subject: [PATCH 107/157] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 65.3% (1024 of 1567 strings) --- OsmAnd/res/values-nb/strings.xml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/OsmAnd/res/values-nb/strings.xml b/OsmAnd/res/values-nb/strings.xml index 96e097cefa..c1d0be96a4 100644 --- a/OsmAnd/res/values-nb/strings.xml +++ b/OsmAnd/res/values-nb/strings.xml @@ -1,4 +1,4 @@ - + Velg fargeskjema for veier: Veifargeskjema Vis retning til målet @@ -1067,5 +1067,11 @@ Last ned Bruk sikker forbindelse med server Bruk https - Skal OsmAnd forsøke å kopiere datafilene til det nye stedet? - + Skal OsmAnd også kopiere datafilene til det nye stedet? + Nærmeste vei ble ikke funnet + Hjem + Kart + Søk etter + VIS KART + Koordinater + From b6272c39b5168d872cfb98f26b013dd93492f330 Mon Sep 17 00:00:00 2001 From: Lu Ca Date: Mon, 1 Dec 2014 17:03:27 +0100 Subject: [PATCH 108/157] Translated using Weblate (Sardinian) Currently translated at 100.0% (1567 of 1567 strings) --- OsmAnd/res/values-sc/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-sc/strings.xml b/OsmAnd/res/values-sc/strings.xml index 311646a348..1d5053ba3b 100644 --- a/OsmAnd/res/values-sc/strings.xml +++ b/OsmAnd/res/values-sc/strings.xml @@ -1787,5 +1787,5 @@ Si cussigiat de annànghere unu o prus puntos intermedios pro megiorare sas pres AMMUSTRA TOTU Coordinatas Mapas - No est istada agatada peruna istada a curtzu + No est istada agatada peruna istrada a curtzu From f470ffe18752ea85253b85f547edbbf3b5bddb75 Mon Sep 17 00:00:00 2001 From: Bars107 Date: Mon, 1 Dec 2014 19:57:05 +0200 Subject: [PATCH 109/157] Fixed bug with basemap is required --- .../plus/activities/DashboardActivity.java | 2 + .../plus/download/BaseDownloadActivity.java | 106 +++++++++++++++++- .../plus/download/DownloadActivity.java | 95 +--------------- .../plus/resources/ResourceManager.java | 4 +- 4 files changed, 114 insertions(+), 93 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/activities/DashboardActivity.java b/OsmAnd/src/net/osmand/plus/activities/DashboardActivity.java index 37c7982f0d..6d03910209 100644 --- a/OsmAnd/src/net/osmand/plus/activities/DashboardActivity.java +++ b/OsmAnd/src/net/osmand/plus/activities/DashboardActivity.java @@ -278,6 +278,7 @@ public class DashboardActivity extends BaseDownloadActivity { @Override public void onDismiss(DialogInterface dialog) { checkVectorIndexesDownloaded(); + updateDownloads(); // Do some action on close // FIXME uncomment // app.getResourceManager().getRenderer().clearCache(); @@ -286,6 +287,7 @@ public class DashboardActivity extends BaseDownloadActivity { }); } else { checkVectorIndexesDownloaded(); + updateDownloads(); } } if(appCustomization.checkExceptionsOnStart() && !dialogShown){ diff --git a/OsmAnd/src/net/osmand/plus/download/BaseDownloadActivity.java b/OsmAnd/src/net/osmand/plus/download/BaseDownloadActivity.java index 933c045246..bde60a9bca 100644 --- a/OsmAnd/src/net/osmand/plus/download/BaseDownloadActivity.java +++ b/OsmAnd/src/net/osmand/plus/download/BaseDownloadActivity.java @@ -1,5 +1,6 @@ package net.osmand.plus.download; +import java.io.File; import java.lang.ref.WeakReference; import java.text.MessageFormat; import java.util.ArrayList; @@ -7,11 +8,18 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import android.content.ActivityNotFoundException; +import android.content.Intent; +import android.net.Uri; +import android.os.Build; +import net.osmand.IndexConstants; +import net.osmand.access.AccessibleAlertBuilder; import net.osmand.plus.OsmandApplication; import net.osmand.plus.OsmandSettings; import net.osmand.plus.R; import net.osmand.plus.Version; import net.osmand.plus.activities.DashboardActivity; +import net.osmand.plus.activities.SettingsGeneralActivity; import net.osmand.plus.base.BasicProgressAsyncTask; import android.app.AlertDialog; import android.content.DialogInterface; @@ -20,6 +28,7 @@ import android.support.v4.app.Fragment; import android.widget.Toast; import com.actionbarsherlock.app.SherlockFragmentActivity; +import net.osmand.plus.base.SuggestExternalDirectoryDialog; /** * Created by Denis on 25.11.2014. @@ -38,8 +47,12 @@ public class BaseDownloadActivity extends SherlockFragmentActivity { if(downloadListIndexThread == null) { downloadListIndexThread = new DownloadIndexesThread(this); } + prepareDownloadDirectory(); + } + + public void updateDownloads() { if (downloadListIndexThread.getCachedIndexFiles() != null && downloadListIndexThread.isDownloadedFromInternet()) { - downloadListIndexThread.runCategorization(type); + downloadListIndexThread.runCategorization(DownloadActivityType.NORMAL_FILE); } else { downloadListIndexThread.runReloadIndexFiles(); } @@ -196,5 +209,96 @@ public class BaseDownloadActivity extends SherlockFragmentActivity { bld.setNegativeButton(R.string.default_buttons_no, null); bld.show(); } + + private void prepareDownloadDirectory() { + if(getMyApplication().getResourceManager().getIndexFileNames().isEmpty()) { + boolean showedDialog = false; + if(Build.VERSION.SDK_INT < OsmandSettings.VERSION_DEFAULTLOCATION_CHANGED) { + SuggestExternalDirectoryDialog.showDialog(this, null, null); + } + if(!showedDialog) { + showDialogOfFreeDownloadsIfNeeded(); + } + } else { + showDialogOfFreeDownloadsIfNeeded(); + } + + + if (Build.VERSION.SDK_INT >= OsmandSettings.VERSION_DEFAULTLOCATION_CHANGED) { + final String currentStorage = settings.getExternalStorageDirectory().getAbsolutePath(); + String primaryStorage = settings.getDefaultExternalStorageLocation(); + if (!currentStorage.startsWith(primaryStorage)) { + // secondary storage + boolean currentDirectoryNotWritable = true; + for (String writeableDirectory : settings.getWritableSecondaryStorageDirectorys()) { + if (currentStorage.startsWith(writeableDirectory)) { + currentDirectoryNotWritable = false; + break; + } + } + if (currentDirectoryNotWritable) { + currentDirectoryNotWritable = !OsmandSettings.isWritable(settings.getExternalStorageDirectory()); + } + if (currentDirectoryNotWritable) { + final String newLoc = settings.getMatchingExternalFilesDir(currentStorage); + if (newLoc != null && newLoc.length() != 0) { + AccessibleAlertBuilder ab = new AccessibleAlertBuilder(this); + ab.setMessage(getString(R.string.android_19_location_disabled, + settings.getExternalStorageDirectory())); + ab.setPositiveButton(R.string.default_buttons_yes, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + copyFilesForAndroid19(newLoc); + } + }); + ab.setNegativeButton(R.string.default_buttons_cancel, null); + ab.show(); + } + } + } + } + } + + private void showDialogOfFreeDownloadsIfNeeded() { + if (Version.isFreeVersion(getMyApplication())) { + AlertDialog.Builder msg = new AlertDialog.Builder(this); + msg.setTitle(R.string.free_version_title); + String m = getString(R.string.free_version_message, MAXIMUM_AVAILABLE_FREE_DOWNLOADS + "", "") + "\n"; + m += getString(R.string.available_downloads_left, MAXIMUM_AVAILABLE_FREE_DOWNLOADS - settings.NUMBER_OF_FREE_DOWNLOADS.get()); + msg.setMessage(m); + if (Version.isMarketEnabled(getMyApplication())) { + msg.setNeutralButton(R.string.install_paid, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(Version.marketPrefix(getMyApplication()) + "net.osmand.plus")); + try { + startActivity(intent); + } catch (ActivityNotFoundException e) { + } + } + }); + } + msg.setPositiveButton(R.string.default_buttons_ok, null); + msg.show(); + } + } + + private void copyFilesForAndroid19(final String newLoc) { + SettingsGeneralActivity.MoveFilesToDifferentDirectory task = + new SettingsGeneralActivity.MoveFilesToDifferentDirectory(this, + new File(settings.getExternalStorageDirectory(), IndexConstants.APP_DIR), + new File(newLoc, IndexConstants.APP_DIR)) { + protected Boolean doInBackground(Void[] params) { + Boolean result = super.doInBackground(params); + if(result) { + settings.setExternalStorageDirectory(newLoc); + getMyApplication().getResourceManager().resetStoreDirectory(); + getMyApplication().getResourceManager().reloadIndexes(progress) ; + } + return result; + }; + }; + task.execute(); + } } diff --git a/OsmAnd/src/net/osmand/plus/download/DownloadActivity.java b/OsmAnd/src/net/osmand/plus/download/DownloadActivity.java index c656ca59bc..3a52cb9fa8 100644 --- a/OsmAnd/src/net/osmand/plus/download/DownloadActivity.java +++ b/OsmAnd/src/net/osmand/plus/download/DownloadActivity.java @@ -69,6 +69,7 @@ public class DownloadActivity extends BaseDownloadActivity { protected void onCreate(Bundle savedInstanceState) { getMyApplication().applyTheme(this); super.onCreate(savedInstanceState); + updateDownloads(); requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); setProgressBarIndeterminateVisibility(false); @@ -144,54 +145,7 @@ public class DownloadActivity extends BaseDownloadActivity { if (tab.equals(DOWNLOAD_TAB)){ tabHost.setCurrentTab(1); } else if (tab.equals(UPDATES_TAB)){ - tabHost.setCurrentTab(2); - } - } - } - - if(getMyApplication().getResourceManager().getIndexFileNames().isEmpty()) { - boolean showedDialog = false; - if(Build.VERSION.SDK_INT < OsmandSettings.VERSION_DEFAULTLOCATION_CHANGED) { - SuggestExternalDirectoryDialog.showDialog(this, null, null); - } - if(!showedDialog) { - showDialogOfFreeDownloadsIfNeeded(); - } - } else { - showDialogOfFreeDownloadsIfNeeded(); - } - - - if (Build.VERSION.SDK_INT >= OsmandSettings.VERSION_DEFAULTLOCATION_CHANGED) { - final String currentStorage = settings.getExternalStorageDirectory().getAbsolutePath(); - String primaryStorage = settings.getDefaultExternalStorageLocation(); - if (!currentStorage.startsWith(primaryStorage)) { - // secondary storage - boolean currentDirectoryNotWritable = true; - for (String writeableDirectory : settings.getWritableSecondaryStorageDirectorys()) { - if (currentStorage.startsWith(writeableDirectory)) { - currentDirectoryNotWritable = false; - break; - } - } - if (currentDirectoryNotWritable) { - currentDirectoryNotWritable = !OsmandSettings.isWritable(settings.getExternalStorageDirectory()); - } - if (currentDirectoryNotWritable) { - final String newLoc = settings.getMatchingExternalFilesDir(currentStorage); - if (newLoc != null && newLoc.length() != 0) { - AccessibleAlertBuilder ab = new AccessibleAlertBuilder(this); - ab.setMessage(getString(R.string.android_19_location_disabled, - settings.getExternalStorageDirectory())); - ab.setPositiveButton(R.string.default_buttons_yes, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - copyFilesForAndroid19(newLoc); - } - }); - ab.setNegativeButton(R.string.default_buttons_cancel, null); - ab.show(); - } + tabHost.setCurrentTab(2); } } } @@ -200,6 +154,8 @@ public class DownloadActivity extends BaseDownloadActivity { getSupportActionBar().setDisplayHomeAsUpEnabled(true); } + + public Map getIndexActivatedFileNames() { return downloadListIndexThread != null ? downloadListIndexThread.getIndexActivatedFileNames() : null; } @@ -252,30 +208,6 @@ public class DownloadActivity extends BaseDownloadActivity { (getMyApplication()).setDownloadActivity(null); } - public void showDialogOfFreeDownloadsIfNeeded() { - if (Version.isFreeVersion(getMyApplication())) { - AlertDialog.Builder msg = new AlertDialog.Builder(this); - msg.setTitle(R.string.free_version_title); - String m = getString(R.string.free_version_message, MAXIMUM_AVAILABLE_FREE_DOWNLOADS + "", "") + "\n"; - m += getString(R.string.available_downloads_left, MAXIMUM_AVAILABLE_FREE_DOWNLOADS - settings.NUMBER_OF_FREE_DOWNLOADS.get()); - msg.setMessage(m); - if (Version.isMarketEnabled(getMyApplication())) { - msg.setNeutralButton(R.string.install_paid, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(Version.marketPrefix(getMyApplication()) + "net.osmand.plus")); - try { - startActivity(intent); - } catch (ActivityNotFoundException e) { - } - } - }); - } - msg.setPositiveButton(R.string.default_buttons_ok, null); - msg.show(); - } - } - @Override public void updateProgress(boolean updateOnlyProgress) { BasicProgressAsyncTask basicProgressAsyncTask = DownloadActivity.downloadListIndexThread.getCurrentRunningTask(); @@ -422,25 +354,6 @@ public class DownloadActivity extends BaseDownloadActivity { } - private void copyFilesForAndroid19(final String newLoc) { - SettingsGeneralActivity.MoveFilesToDifferentDirectory task = - new SettingsGeneralActivity.MoveFilesToDifferentDirectory(this, - new File(settings.getExternalStorageDirectory(), IndexConstants.APP_DIR), - new File(newLoc, IndexConstants.APP_DIR)) { - protected Boolean doInBackground(Void[] params) { - Boolean result = super.doInBackground(params); - if(result) { - settings.setExternalStorageDirectory(newLoc); - getMyApplication().getResourceManager().resetStoreDirectory(); - getMyApplication().getResourceManager().reloadIndexes(progress) ; - } - return result; - }; - }; - task.execute(); - } - - public Map getIndexFileNames() { return downloadListIndexThread != null ? downloadListIndexThread.getIndexFileNames() : null; } diff --git a/OsmAnd/src/net/osmand/plus/resources/ResourceManager.java b/OsmAnd/src/net/osmand/plus/resources/ResourceManager.java index c542f32203..edc25babda 100644 --- a/OsmAnd/src/net/osmand/plus/resources/ResourceManager.java +++ b/OsmAnd/src/net/osmand/plus/resources/ResourceManager.java @@ -45,6 +45,7 @@ import net.osmand.plus.R; import net.osmand.plus.SQLiteTileSource; import net.osmand.plus.SearchByNameFilter; import net.osmand.plus.Version; +import net.osmand.plus.download.BaseDownloadActivity; import net.osmand.plus.render.MapRenderRepositories; import net.osmand.plus.render.NativeOsmandLibrary; import net.osmand.plus.resources.AsyncLoadingThread.MapLoadRequest; @@ -402,7 +403,8 @@ public class ResourceManager { } return cacheOfImages.get(req.tileId); } - + + ////////////////////////////////////////////// Working with indexes //////////////////////////////////////////////// public List reloadIndexes(IProgress progress){ From de4c76cf38c42050c2c8d09b877151d028d64e4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A9ter=20B=C3=A1thory?= Date: Mon, 1 Dec 2014 23:07:08 +0100 Subject: [PATCH 110/157] Translated using Weblate (Hungarian) Currently translated at 100.0% (1567 of 1567 strings) --- OsmAnd/res/values-hu/strings.xml | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-hu/strings.xml b/OsmAnd/res/values-hu/strings.xml index 7283f229db..47d861e500 100644 --- a/OsmAnd/res/values-hu/strings.xml +++ b/OsmAnd/res/values-hu/strings.xml @@ -1,4 +1,4 @@ - + "A 0.7.2 kiadás változásai: \n\t- Natív renderelő minden eszközre \n\t- Offline POI szerkesztés @@ -1812,4 +1812,14 @@ " Az OsmAnd (OSM Automated Navigation Directions) egy térkép és navigációs alkalmazás, ingyenes, világméretű és jó minőségű OpenStreetMap (OSM) térképpel. Az összes térképadat offline tárolható az eszköz memóriakártyáján. GPS használatával az OsmAnd képes útvonaltervezésre, vizuális és hangnavigációra, mindezt autós, kerékpáros és gyalogos módban. Az összes főbb funkció működik online és offline (internetkapcsolat nélkül) is.\n\nAz OsmAnd+ az alkalmazás fizetős változata. A megvételével támogatod a projektet, megalapozod új funkciók fejlesztését, és megkapod a legújabb frissítéseket. Ha vársárlás előtt kipróbálnád az alkalmazást, telepítsd az OsmAndot.\n\nNéhány főbb funkció:\n\nNavigáció\n- Működik online (gyorsabb) vagy offline (nincs internet roaming díj külföldön)\n- Turn-by-turn hangnavigáció felvett, vagy gépi hanggal (utóbbihoz TTS felolvasó szükséges)\n- Sávkijelzés, utcanévkijelzés, várható érkezési idő\n- Köztes útpontok megadásának lehetősége\n- Automatikus újratervezés, ha letértél az útról\n- Keresés helyekre cím alapján, típus szerint (étterem, hotel, benzinkút, múzeum), vagy koordináta alapján\n\nTérkép nézet\n- A pozíciód és irányod megjelenítése a térképen\n- A térkép forgatása választható iránytű, vagy mozgásirány alapján\n- Fontos helyek mentése Kedvencként\n- POI-k (érdekes helyek) megjelenítése a környékeden\n- Online (csempés) térképek megjelenítése\n- Műhold nézet (Bing)\n- Különféle rátét térképek állítható átlátszósággal, felvett GPX nyomvonalak\n- Helynevek megjelenítése saját nyelven, angolul, vagy fonetikus átírásban\n\nOpenStreetMap és Wikipédia adatok\n- Minőségi információk az egész világról a legjobb közösségi projektektől\n- OpenStreetMap térképek az egész földről országonkénti vagy régió szerinti bontásban\n- Wikipédia POI-k városnézéshez (nem elérhető az ingyenes verzióban)\n- Korlátlan ingyenes letöltés közvetlenül az alkalmazásból (az ingyenes verzióban 16 térképfájlra korlátozva)\n- Folyamatosan frissülő térképek (legalább havonta egyszer)\n- Kompakt offline vektoros térképek\n- Választható teljes térkép vagy csak úthálózat (például teljes Japán 700 MB, de az úthálózat csak 200 MB)\n- Támogatja az online vagy előre letárolt csempés térképeket\n\nBiztonsági funkciók\n- Választható automata nappal/éjjel nézet váltás\n- Választható sebességhatár kijelzés, túllépés esetén figyelmeztetéssel\n- Választható sebességfüggő nagyítás\n- Pozíciód megosztása, hogy a barátaid megtaláljanak\n\nKerékpáros és gyalogos funkciók\n- Szabadtéri tevékenységekhez a térképek tartalmazzák a gyalogos, túra, és kerékpáros ösvényeket\n- Külön gyalogos és kerékpáros tervezés és megjelenítés\n- Tömegközlekedési megállók vonalnevekkel\n- Utazás felvétele GPX fájlba vagy online szolgáltatásra\n- Sebesség és tengerszint feletti magasság megjelenítés\n- Szintvonalak és domborzatárnyékolás megjelenítése (plugin telepítése szükséges)\n\nKözvetlen OpenStreetMap közreműködés\n- Térképhibák jelentése\n- GPX nyomvonalak feltöltése OSM-re közvetlenül az alkalmazásból\n- POI-k felvétele és feltöltése közvetlenül OSM-be (vagy később offline)\n\nAz OsmAnd nyílt forráskódú és aktív fejlesztés alatt áll. Bárki közreműködhet hibák jelentésével, fordításokkal, vagy új funkciók fejlesztésével. A projekt haladása függ az anyagi hozzájárulásoktól is, megalapozva a fejlesztést, kódolást, és az új funkciók tesztelését. Az OsmAnd+ megvásárlásával segítheted, hogy az alkalmazás még szuperebb legyen! Az osmand.net-en lehetőség van konkrét funkció támogatására és általános adományozásra is.\n\nHozzávetőleges térképi lefedettség és minőség:\n- Nyugat-Európa: ****\n- Kelet-Európa: ***\n- Oroszország: ***\n- Észak-Amerika: ***\n- Dél-Amerika: **\n- Ázsia: **\n- Japán & Korea: ***\n- Közel-Kelet: **\n- Afrika: **\n- Antarktisz: *\n\nTámogatott országok listája (alapvetően az egész világ!):\nAfganisztán, Albánia, Algéria, Amerikai Egyesült Államok, Andorra, Anglia, Angola, Anguilla, Antigua és Barbuda, Argentína, Aruba, Ausztrália, Ausztria, Azerbajdzsán, Bahamák, Bahrein, Banglades, Barbados, Belgium, Belize, Benin, Bhután, Bissau-Guinea, Bolívia, Bonaire, Bosznia és Hercegovina, Botswana, Brazília, Brit Virgin-szigetek, Brunei, Bulgária, Burkina Faso, Burundi, Chile, Ciprus, Comore-szigetek, Costa Rica, Curaçao, Csád, Csehország, Dánia, Dél-afrikai Köztársaság, Déli-Georgia, Dél-Szudán, Dominika, Dominikai Köztársaság, Dzsibuti, Ecuador, Egyesült Arab Emírségek, Egyesült Királyság, Egyiptom, El Salvador, Elefántcsontpart, Egyenlítői-Guinea, Eritrea, Észtország, Etiópia, Fehéroroszország, Fiji-szigetek, Finnország, Franciaország, Francia Polinézia, Fülöp-szigetek, Gabon, Gambia, Ghána, Gibraltár, Görögország, Grenada, Grönland, Grúzia, Guadeloupe, Guam, Guatemala, Guernsey, Guinea, Guyana, Haiti, Hollandia, Holland Antillák, Honduras, Horvátország, Hongkong, India, Indonézia, Irak, Irán, Írország, Izland, Izrael, Jamaica, Japán, Jemen, Jersey, Jordánia, Kambodzsa, Kamerun, Kanada, Katar, Kazahsztán, Kelet-Timor, Kenya, Kína, Kiribati, Kirgizisztán, Észak Korea és Dél Korea, Kolumbia, Kongó, Koszovó, Közép-afrikai Köztársaság, Kuba, Kuvait, Laosz, Lengyelország, Lesotho, Lettország, Libanon, Libéria, Líbia, Lichtenstein, Litvánia, Luxemburg, Macedónia, Madagaszkár, Makaó, Magyarország, Malajzia, Malawi, Maldív-szigetek, Mali, Málta, Man-szigetek, Marokkó, Martinique, Mauritánia, Mauritius, Mayotte, Mexikó, Mianmar, Mikronézia, Moldova, Monaco, Mongólia, Montenegró, Monserrat, Mozambik, Namíbia, Nauru, Németország, Nepál, Nicaragua, Niger, Nigéria, Norvégia, Nyugat-Szahara, Olaszország, Omán, Oroszország, Örményország, Pakisztán, Palau, Palesztina, Panama, Pápua Új-Guinea, Paraguay, Peru, Portugália, Puerto Rico, Románia, Ruanda, Saint-Barthélemy, Szent Ilona, Saint Kitts és Nevis, Saint Lucia, Saint-Martin, Saint-Pierre és Miquelon, Saint Vincent és a Grenadine-szigetek, San Marino, Seychelle-szigetek, Sierra Leone, Spanyolország, Srí Lanka, Suriname, Svájc, Svédország, Szamoa, Szaúd-Arábia, Szenegál, Szerbia, Szingapúr, Szíria, Szlovákia, Szlovénia, Szomália, Szudán, Szváziföld, Tajvan, Tádzsikisztán, Tanzánia, Thaiföld, Tokelau-szigetek, Togo, Tonga, Törökország, Trinidad és Tobago, Tunézia, Tuvalu, Türkmenisztán, Uganda, Új-Kaledónia, Új-Zéland, Ukrajna, Uruguay, Üzbegisztán, Vanuatu, Vatikán, Venezuela, Vietnam, Wallis és Fortuna, Zambia, Zimbabwe, Zöld-foki Köztársaság " Az %1$s számára engedély szükséges a képernyő kikapcsolásához energiatakarékossági célból. Soha - + Nem található út a közelben + Kezdőlap + Biztonságos kapcsolat a szerverrel + https használata + Haladó + Térképek + Keresés + MUTASD A TÉRKÉPET + MUTASD MIND + Koordináták + From 00fcb90a7eb853a2432343ecee40b6ca492633ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A9ter=20B=C3=A1thory?= Date: Mon, 1 Dec 2014 23:23:29 +0100 Subject: [PATCH 111/157] Translated using Weblate (Hungarian) Currently translated at 100% (0 of 0 strings) Created new translation. --- OsmAnd/res/values-hu/phrases.xml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 OsmAnd/res/values-hu/phrases.xml diff --git a/OsmAnd/res/values-hu/phrases.xml b/OsmAnd/res/values-hu/phrases.xml new file mode 100644 index 0000000000..a6b3daec93 --- /dev/null +++ b/OsmAnd/res/values-hu/phrases.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file From ec88fb9c74e156bbab9c44353133d32d1ae49195 Mon Sep 17 00:00:00 2001 From: Konfrare Albert Date: Mon, 1 Dec 2014 20:03:50 +0100 Subject: [PATCH 112/157] Translated using Weblate (Catalan) Currently translated at 100.0% (1567 of 1567 strings) --- OsmAnd/res/values-ca/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-ca/strings.xml b/OsmAnd/res/values-ca/strings.xml index 58e3effcb3..b85ec8d747 100644 --- a/OsmAnd/res/values-ca/strings.xml +++ b/OsmAnd/res/values-ca/strings.xml @@ -1901,5 +1901,5 @@ La llista de països inclosos (bàsicament tot el món!): Afganistan, Albània, MOSTRA\'LS TOTS Coordenades Mapes - No s\'ha trobat cap ruta aprop + No s\'ha trobat cap ruta a prop From 756d4b5cd0e444d7cf9a37d822edea8830191830 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A9ter=20B=C3=A1thory?= Date: Mon, 1 Dec 2014 23:22:11 +0100 Subject: [PATCH 113/157] Translated using Weblate (Hungarian) Currently translated at 100.0% (1567 of 1567 strings) --- OsmAnd/res/values-hu/strings.xml | 63 ++++++-------------------------- 1 file changed, 11 insertions(+), 52 deletions(-) diff --git a/OsmAnd/res/values-hu/strings.xml b/OsmAnd/res/values-hu/strings.xml index 47d861e500..4e6ecfa853 100644 --- a/OsmAnd/res/values-hu/strings.xml +++ b/OsmAnd/res/values-hu/strings.xml @@ -424,7 +424,7 @@ OsmAnd offline útvonaltervező használata nagy távolságokra is (kísérleti funkció) Az OsmAnd offline útvonaltervezője kísérleti funkció és nem működik 20 kilométernél nagyobb távolságban.\n\nÁtmenetileg átállítva online Cluodmade-re. Nem található a megadott könyvtár. - Tárolási könyvtár + Adatok tárolási helye OsmAnd verzió {0} sikeresen telepítve ({1}). Összeállítás letöltése… @@ -480,7 +480,7 @@ Hang Nincs betöltött vektoros térkép Útvonal GPX alapján - Nem található GPX fálj /osmand/tracks könyvtárban + Nem található GPX fálj a tracks könyvtárban GPX útvonal… GPX adat olvasási hiba Vektoros OSM térkép @@ -601,7 +601,7 @@ Épület: {0}, {1}, {2} Kedvenc Mindent töröl - Előzmény + Előzmények Adat feltöltése… Feltöltés… Semmi sem található @@ -616,7 +616,7 @@ Teljes távolság %1$s, utazási idő %2$d ó. %3$d p. Online vagy offline útvonaltervező szolgáltatás kiválasztása Útvonaltervező - Nem található könyvtár az SD kártyán mentésre + Az adattárolási könyvtár nem elérhető az SD kártyán Letöltés {0} - {1} ? &gt;Már létezik indexadat {0} régióhoz ({1}). Szeretné frissíteni ({2})? Cím @@ -684,7 +684,7 @@ Jelenlegi útvonal mentése Válassz naplózási időközt a navigáció alatti útvonalrögzítéshez Rögzítési sűrűség navigáció közben - Az útvonalak navigáció közben kerülnek mentésre a track könyvtárba + Az útvonalak navigáció közben kerülnek mentésre a tracks könyvtárba Útvonal naplózása GPX fájlba navigáció közben Térkép frissítés Térképcsempe újraolvasása @@ -999,49 +999,8 @@ \n\nAz OsmAnd saját forrásokat is támogat. Globális mobil térkép és navigáció, offline és online OSM térképekkel - - OsmAnd (OSM Automated Navigation Directions) - - Az OsmAnd egy nyílt forráskódú navigációs alkalmazás az OpenStreetMap (OSM) adatainak széleskörű használatával. Bármelyik térképadat (vektoros és raszteres térképek) tárolható a készülék memóriakártyáján offline használatra. Az OsmAnd továbbá lehetővé teszi az offline és online útvonaltervezést is, részletes hangutasításokkal. - - Néhány fontosabb funkció: - - Teljesen offline működés (a letöltött vektoros és raszteres térképek választható könyvtárban tárolhatók) - - A kompakt, offline vektoros térképek az egész világhoz elérhetőek - - Az ország vagy régió térképei letölthetők közvetlenül az alkalmazásból - - Számos rávetíthető térképréteg, mint GPX-ek, navigációs útvonalak, POI-k (érdekes helyek), kedvencek, szintvonalak, tömegközlekedési megállók, további térképek beállítható átlátszósággal - - Címek és helyek offline kereshetősége - - Offline útvonaltervezés rövidebb távolságokra (kísérleti) - - Autós, kerékpáros és gyalogos módok: - - Opcionális automata nappali/éjszakai nézetváltással - - Opcionális sebességfüggő nagyítással - - Opcionális térképforgatással a mozgás vagy az iránytű alapján - - Az OsmAnd ingyenes változatának korlátozásai: - - Korlátozott számú vektoros térképletöltés - - Offline Wikipédia cikkek nem elérhetőek - - Az OsmAnd folyamatosan fejlesztés alatt áll és a projektünk nagyban függ a pénzügyi támogatásoktól, amiből finanszírozhatók a fejlesztések és az új funkciók tesztelése. Kérlek, fontold meg az OsmAnd+ megvásárlását, vagy egy-egy funkció támogatását az osmand.net oldalon - - - OsmAnd+ (OSM Automated Navigation Directions) - - Az OsmAnd+ egy nyílt forráskódú navigációs alkalmazás az OpenStreetMap (OSM) adatainak széleskörű használatával. Bármelyik térképadat (vektoros és raszteres térképek) tárolható a készülék memóriakártyáján offline használatra. Az OsmAnd továbbá lehetővé teszi az offline és online útvonaltervezést is, részletes hangutasításokkal. - - Az OsmAnd+ az alkalmazás fizetős változata, aminek megvásárlásával támogatod a projektet, az új funkciók fejlesztésének finanszírozását és megkapod a legújabb frissítéseket. - - Néhány fontosabb funkció: - - Teljesen offline működés (a letöltött vektoros és raszteres térképek választható könyvtárban tárolhatók) - - A kompakt, offline vektoros térképek az egész világhoz elérhetőek - - Az ország vagy régió térképei korlátlan számban letölthetők, közvetlenül az alkalmazásból - - Offline Wikipédia szócikkek letöltése, ami hasznos segítség városnézéshez - - Számos rávetíthető térképréteg, mint GPX-ek, navigációs útvonalak, POI-k (érdekes helyek), kedvencek, szintvonalak, tömegközlekedési megállók, további térképek beállítható átlátszósággal - - Címek és helyek offline kereshetősége - - Offline útvonaltervezés rövidebb távolságokra (kísérleti) - - Autós, kerékpáros és gyalogos módok: - - Opcionális automata nappali/éjszakai nézetváltással - - Opcionális sebességfüggő nagyítással - - Opcionális térképforgatással a mozgás vagy az iránytű alapján - +" OsmAnd (OSM Automated Navigation Directions) Az OsmAnd egy nyílt forráskódú navigációs alkalmazás az OpenStreetMap (OSM) adatainak széleskörű használatával. Bármelyik térképadat (vektoros és raszteres térképek) tárolható a készülék memóriakártyáján offline használatra. Az OsmAnd továbbá lehetővé teszi az offline és online útvonaltervezést is, részletes hangutasításokkal. Néhány fontosabb funkció: - Teljesen offline működés (a letöltött vektoros és raszteres térképek az eszközön tárolódnak) - A kompakt, offline vektoros térképek az egész világhoz elérhetőek - Az ország vagy régió térképei letölthetők közvetlenül az alkalmazásból - Számos rávetíthető térképréteg, mint GPX-ek, navigációs útvonalak, POI-k (érdekes helyek), kedvencek, szintvonalak, tömegközlekedési megállók, további térképek beállítható átlátszósággal - Címek és helyek offline kereshetősége - Offline útvonaltervezés rövidebb távolságokra (kísérleti) - Autós, kerékpáros és gyalogos módok: - Opcionális automata nappali/éjszakai nézetváltással - Opcionális sebességfüggő nagyítással - Opcionális térképforgatással a mozgás vagy az iránytű alapján Az OsmAnd ingyenes változatának korlátozásai: - Korlátozott számú vektoros térképletöltés - Offline Wikipédia cikkek nem elérhetőek Az OsmAnd folyamatosan fejlesztés alatt áll és a projektünk nagyban függ a pénzügyi támogatásoktól, amiből finanszírozhatók a fejlesztések és az új funkciók tesztelése. Kérlek, fontold meg az OsmAnd+ megvásárlását, vagy egy-egy funkció támogatását az osmand.net oldalon " +" OsmAnd+ (OSM Automated Navigation Directions) Az OsmAnd+ egy nyílt forráskódú navigációs alkalmazás az OpenStreetMap (OSM) adatainak széleskörű használatával. Bármelyik térképadat (vektoros és raszteres térképek) tárolható a készülék memóriakártyáján offline használatra. Az OsmAnd továbbá lehetővé teszi az offline és online útvonaltervezést is, részletes hangutasításokkal. Az OsmAnd+ az alkalmazás fizetős változata, aminek megvásárlásával támogatod a projektet, az új funkciók fejlesztésének finanszírozását és megkapod a legújabb frissítéseket. Néhány fontosabb funkció: - Teljesen offline működés (a letöltött vektoros és raszteres térképek az eszközön tárolódnak) - A kompakt, offline vektoros térképek az egész világhoz elérhetőek - Az ország vagy régió térképei korlátlan számban letölthetők, közvetlenül az alkalmazásból - Offline Wikipédia szócikkek letöltése, ami hasznos segítség városnézéshez - Számos rávetíthető térképréteg, mint GPX-ek, navigációs útvonalak, POI-k (érdekes helyek), kedvencek, szintvonalak, tömegközlekedési megállók, további térképek beállítható átlátszósággal - Címek és helyek offline kereshetősége - Offline útvonaltervezés rövidebb távolságokra (kísérleti) - Autós, kerékpáros és gyalogos módok: - Opcionális automata nappali/éjszakai nézetváltással - Opcionális sebességfüggő nagyítással - Opcionális térképforgatással a mozgás vagy az iránytű alapján " Globális mobil térkép és navigáció, offline és online OSM térképekkel Autópályák elkerülése "A 0.8.3 kiadás változásai: @@ -1435,10 +1394,10 @@ Az Android 4.4 KitKat verzió óta nem lehet térképet letölteni és frissíteni a korábbi helyre (%s). Szeretnéd az összes fájlt egy engedélyezett helyre másolni? \n Megjegyzés: a régi fájlok érintetlenül maradnak. \n Megjegyzés: nem lehetséges az OsmAnd és OsmAnd+ között fájlokat megosztani. - Az OsmAnd megpróbálja az adatokat új helyre másolni. Szeretnéd? - %s fájl másolás új helyre… - OsmAnd fájlok másolása új helyre (%s) - OsmAnd fájlok másolása + Szeretnéd, hogy az OsmAnd az adatokat az új helyre másolja? + %s fájl másolása az új helyre… + OsmAnd adatainak másolása új helyre (%s) + OsmAnd adatok másolása OsmAnd offline útvonal tervezése Teherautó Navigációs beállítások From bd0aaf15bb7f72da2d37216694a78fe4ae063a97 Mon Sep 17 00:00:00 2001 From: jan madsen Date: Mon, 1 Dec 2014 21:35:21 +0100 Subject: [PATCH 114/157] Translated using Weblate (Danish) Currently translated at 100.0% (586 of 586 strings) --- OsmAnd/res/values-da/phrases.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-da/phrases.xml b/OsmAnd/res/values-da/phrases.xml index ebb1697b96..af5a6d2fef 100644 --- a/OsmAnd/res/values-da/phrases.xml +++ b/OsmAnd/res/values-da/phrases.xml @@ -66,7 +66,7 @@ Optiker Økologiske fødevarer Fritidsbeklædning - Maling + Malerværksted Dyrehandel Radiodele Genbrugsbutik From 5a53fb41a49a3a6363914dc69bd10eb39e476d68 Mon Sep 17 00:00:00 2001 From: Lu Ca Date: Mon, 1 Dec 2014 22:19:33 +0100 Subject: [PATCH 115/157] Translated using Weblate (Sardinian) Currently translated at 52.0% (305 of 586 strings) --- OsmAnd/res/values-sc/phrases.xml | 189 +++++++++++++++++++++++++++++++ 1 file changed, 189 insertions(+) diff --git a/OsmAnd/res/values-sc/phrases.xml b/OsmAnd/res/values-sc/phrases.xml index 9ba02c7ead..6b139a21a0 100644 --- a/OsmAnd/res/values-sc/phrases.xml +++ b/OsmAnd/res/values-sc/phrases.xml @@ -134,4 +134,193 @@ Parchègiu bitzicletas Gondola + Istatzione sciovia + Funivia + Ascensore carrotzina + Sciovia a àncora + Sciovia a J + Sciovia a piatellu + Sciovia ammesturada + Sciovia + Sciovia a fune + Sciovia pro ogetos + Sciovia a tapete + + Galleria + Ponte + + Autovelox + Retunda pro furriada de martza + Putzu + Impiantu ìdricu + Depuradore de sas abbas + Turre ìdrica + Diga + Mulinu ad abba + + Trasformadore + Tzentrale elètrica + Ufìtziu postale + Telèfonu + Turre telecomunicatziones + Tzentralinu telefònicu + + Osservatòriu astronòmicu + Fraigada + Fàbrica + Intrada de una galleria minerària + Putzu petrolìferu + Puntu geodèticu + Mulinu a bentu + Cava + Bìngia + Fruttedu + Salina + Campu de cricket inghiriadu dae retzas + + Iscola de ghia + Iscola + Collègiu + Universidade + + Tribunale + Càrtzere + Anàgrafe + Ambassada + Ufìtziu pùblicu + Ufitziale giuditziàriu + Pùblicu ministeru + Ufìtziu migratzione + Guàrdia de finàntzia + Ufìtziu amministrativu + Tzitade cabu-de-logu de provìntzia + Tzitade + Bidda + Bidditzolu + Domo/os isolada/as + Apendìtziu + Bighinadu + Localidade + + Potecaria + Ospidale + Dutore + Clìnica + Dentista + Veterinàriu + Sanatòriu + Meighina alternativa + Banca de su sàmbene + Tzentru mèdicu + Levadora + Optometrista + Fisioterapista + Podòlogu + Psicoterapèuta + Riabilitassione + Logopedista + Istrutura mèdica + + Asseguratzione + Butega immobiliare + Abogadu + ONG + Munitzìpiu + Ufìtziu pro su traballu + Ufìtziu IT + Redatzione de giornale + Istùdiu de architetura + Agentzia de publitzidade + Istitudu iscolàsticu + Istùdiu de registratzione + Iscummissas + + Istàdiu + Tzentru isportìvu + Campu de golf + Pista pro patinare in astra + Pista pro cùrrere + Pista pro bitziclètas + Pista pro caddos + Atlètica + Football australianu + Baseball + Basket + Botzas + Canoa + Iscacos + Cricket + Croquet + Tziclismu + Cursa de sos canes + Equitassione + Golf + Ginnàstica + Hockey + Cursas de sos caddos + Patinàgiu in s\'astra + Korfbal + Prus isports + Paddle tènnis + Pelota + Racquetball + Patinàgiu a rodas + Canotàgiu + Rugby a 15 + Rugby a 13 + Patinàgiu + Skateboard + Fubalu + Piscina + Tennis + Toboga + Museu + Attràida turìstica + Memoriale + Opera d\'arte + Giassu/situ archeològicu + Campu de batalla + Pedra de làcana + Casteddu + Ghenna de intrada a sa tzitade + Forte + Funtana + Ruinas istòricas + Pedra rùnica + Nave istòrica + Cava istòrica + Monumentu + Zoo + Parcu a tema + + Albergo + Posada + Motel + Chalet + + Logu de cultu + Logu de cultu: cristianu + Logu de cultu: ebreu + Logu de cultu: musulmanu + Logu de cultu: sikh + Logu de cultu: buddista + Logu de cultu: induista + Logu de cultu: shintoista + Logu de cultu: taoista + Monastèriu/Muristene + Monastèriu/Muristene istòricu + Rughe istòrica + Tabernàculu istòricu + Informatziones turìsticas + Relògiu + Agentzia de biàgios + Puntu panoràmicu + Campègiu + Tretu pro caravan e camper + Logu atretzadu pro picnic + Mitza + Geyser + Campusantu + Campusantu + Funiculare From 31086faff24389d82497cea4671a83ca823e3324 Mon Sep 17 00:00:00 2001 From: Victor Shcherb Date: Tue, 2 Dec 2014 07:53:01 +0100 Subject: [PATCH 116/157] Slight refactor native core context --- .../core/android/MapRendererContext.java | 442 +++++++----------- .../plus/activities/DashboardActivity.java | 4 + .../plus/activities/MapActivityLayers.java | 2 - .../plus/dashboard/DashBaseFragment.java | 1 + .../osmand/plus/render/NativeCppLibrary.java | 23 - .../views/corenative/NativeCoreContext.java | 6 +- 6 files changed, 173 insertions(+), 305 deletions(-) delete mode 100755 OsmAnd/src/net/osmand/plus/render/NativeCppLibrary.java diff --git a/OsmAnd/src/net/osmand/core/android/MapRendererContext.java b/OsmAnd/src/net/osmand/core/android/MapRendererContext.java index 173474f3d5..434e5c07f3 100644 --- a/OsmAnd/src/net/osmand/core/android/MapRendererContext.java +++ b/OsmAnd/src/net/osmand/core/android/MapRendererContext.java @@ -1,6 +1,5 @@ package net.osmand.core.android; -import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.Map; @@ -10,13 +9,13 @@ import net.osmand.core.jni.IObfsCollection; import net.osmand.core.jni.IRasterMapLayerProvider; import net.osmand.core.jni.MapObjectsSymbolsProvider; import net.osmand.core.jni.MapPresentationEnvironment; +import net.osmand.core.jni.MapPresentationEnvironment.LanguagePreference; import net.osmand.core.jni.MapPrimitivesProvider; import net.osmand.core.jni.MapPrimitiviser; import net.osmand.core.jni.MapRasterLayerProvider_Software; import net.osmand.core.jni.MapStylesCollection; import net.osmand.core.jni.ObfMapObjectsProvider; import net.osmand.core.jni.QStringStringHash; -import net.osmand.core.jni.MapPresentationEnvironment.LanguagePreference; import net.osmand.core.jni.ResolvedMapStyle; import net.osmand.plus.OsmandApplication; import net.osmand.plus.OsmandSettings; @@ -28,7 +27,6 @@ import net.osmand.util.Algorithms; /** * Context container and utility class for MapRendererView and derivatives. - * * @author Alexey Pelykh * */ @@ -37,58 +35,27 @@ public class MapRendererContext { private static final int OBF_RASTER_LAYER = 0; private OsmandApplication app; - /** - * Cached map styles per name - */ - private Map mapStyles = new HashMap(); - - /** - * Reference to OBF map symbols provider (if used) - */ - private IMapTiledSymbolsProvider obfMapSymbolsProvider; - - /** - * Map styles collection - */ + // input parameters private MapStylesCollection mapStylesCollection; - - /** - * Reference to map presentation environment (if used) - */ - private MapPresentationEnvironment mapPresentationEnvironment; - - /** - * Reference to OBFs collection (if present) - */ private IObfsCollection obfsCollection; - /** - * Reference to map renderer view that is currently managed by this - * context - */ + private boolean nightMode; + private final float density; + + // ached objects + private Map mapStyles = new HashMap(); + private CachedMapPresentation presentationObjectParams; + private MapPresentationEnvironment mapPresentationEnvironment; + + private IMapTiledSymbolsProvider obfMapSymbolsProvider; + private IRasterMapLayerProvider obfMapRasterLayerProvider; private MapRendererView mapRendererView; - - /** - * Display density factor - */ - private float displayDensityFactor = 1; + private float cachedReferenceTileSize; - /** - * Reference tile size on screen in pixels - */ - private float referenceTileSizef = 256; - - /** - * Raster tile size in texels - */ - private int rasterTileSize = 256; - - private CachedMapPresentation presentationObjectParams; - - - public MapRendererContext(OsmandApplication app) { + public MapRendererContext(OsmandApplication app, float density) { this.app = app; + this.density = density; } /** @@ -102,7 +69,157 @@ public class MapRendererContext { } this.mapRendererView = mapRendererView; if (mapRendererView != null) { - apply(); + applyCurrentContextToView(); + } + } + + public boolean isNightMode() { + return nightMode; + } + + public void setNightMode(boolean nightMode) { + this.nightMode = nightMode; + updateMapSettings(); + } + + public void updateMapSettings() { + if (mapRendererView instanceof AtlasMapRendererView && cachedReferenceTileSize != getReferenceTileSize()) { + ((AtlasMapRendererView) mapRendererView).setReferenceTileSizeOnScreenInPixels(getReferenceTileSize()); + } + if(mapPresentationEnvironment != null) { + updateMapPresentationEnvironment(); + } + } + + /** + * Setup OBF map on layer 0 with symbols + * @param obfsCollection OBFs collection + */ + public void setupObfMap(MapStylesCollection mapStylesCollection, IObfsCollection obfsCollection) { + this.obfsCollection = obfsCollection; + this.mapStylesCollection = mapStylesCollection; + updateMapPresentationEnvironment(); + recreateRasterAndSymbolsProvider(); + } + + protected float getDisplayDensityFactor() { + return (float) Math.pow(2, Math.sqrt((app.getSettings().getSettingsZoomScale() + density))); + } + + protected int getRasterTileSize() { + return Integer.highestOneBit((int) getReferenceTileSize() - 1) * 2; + } + + private float getReferenceTileSize() { + return 256 * getDisplayDensityFactor(); + } + + /** + * Update map presentation environment and everything that depends on it + */ + private void updateMapPresentationEnvironment() { + float displayDensityFactor = getDisplayDensityFactor(); + // Create new map presentation environment + String langId = app.getSettings().MAP_PREFERRED_LOCALE.get(); + // TODO make setting + LanguagePreference langPref = LanguagePreference.LocalizedOrNative; + String rendName = app.getSettings().RENDERER.get(); + if (rendName.length() == 0 || rendName.equals(RendererRegistry.DEFAULT_RENDER)) { + rendName = "default"; + } + if (!mapStyles.containsKey(rendName)) { + mapStyles.put(rendName, mapStylesCollection.getResolvedStyleByName(rendName)); + } + ResolvedMapStyle mapStyle = mapStyles.get(rendName); + CachedMapPresentation pres = new CachedMapPresentation(langId, langPref, mapStyle, displayDensityFactor); + if (this.presentationObjectParams == null || !this.presentationObjectParams.equalsFields(pres)) { + this.presentationObjectParams = pres; + mapPresentationEnvironment = new MapPresentationEnvironment(mapStyle, displayDensityFactor, langId, + langPref); + } + + QStringStringHash convertedStyleSettings = getMapStyleSettings(); + mapPresentationEnvironment.setSettings(convertedStyleSettings); + + if (obfMapRasterLayerProvider != null || obfMapSymbolsProvider != null) { + recreateRasterAndSymbolsProvider(); + } + } + + protected QStringStringHash getMapStyleSettings() { + // Apply map style settings + OsmandSettings prefs = app.getSettings(); + RenderingRulesStorage storage = app.getRendererRegistry().getCurrentSelectedRenderer(); + Map props = new HashMap(); + for (RenderingRuleProperty customProp : storage.PROPS.getCustomRules()) { + if (customProp.isBoolean()) { + CommonPreference pref = prefs.getCustomRenderBooleanProperty(customProp.getAttrName()); + props.put(customProp.getAttrName(), pref.get() + ""); + } else { + CommonPreference settings = prefs.getCustomRenderProperty(customProp.getAttrName()); + String res = settings.get(); + if (!Algorithms.isEmpty(res)) { + props.put(customProp.getAttrName(), res); + } + } + } + + QStringStringHash convertedStyleSettings = new QStringStringHash(); + for (Iterator> itSetting = props.entrySet().iterator(); itSetting.hasNext();) { + Map.Entry setting = itSetting.next(); + convertedStyleSettings.set(setting.getKey(), setting.getValue()); + } + if (nightMode) { + convertedStyleSettings.set("nightMode", "true"); + } + return convertedStyleSettings; + } + + private void recreateRasterAndSymbolsProvider() { + // Create new map primitiviser + MapPrimitiviser mapPrimitiviser = new MapPrimitiviser(mapPresentationEnvironment); + ObfMapObjectsProvider obfMapObjectsProvider = new ObfMapObjectsProvider(obfsCollection); + // Create new map primitives provider + MapPrimitivesProvider mapPrimitivesProvider = new MapPrimitivesProvider(obfMapObjectsProvider, mapPrimitiviser, + getRasterTileSize()); + updateObfMapRasterLayerProvider(mapPrimitivesProvider); + updateObfMapSymbolsProvider(mapPrimitivesProvider); + } + + private void updateObfMapRasterLayerProvider(MapPrimitivesProvider mapPrimitivesProvider) { + // Create new OBF map raster layer provider + obfMapRasterLayerProvider = new MapRasterLayerProvider_Software(mapPrimitivesProvider); + // In case there's bound view and configured layer, perform setup + if (mapRendererView != null) { + mapRendererView.setMapLayerProvider(OBF_RASTER_LAYER, obfMapRasterLayerProvider); + } + } + + private void updateObfMapSymbolsProvider(MapPrimitivesProvider mapPrimitivesProvider) { + // If there's current provider and bound view, remove it + if (obfMapSymbolsProvider != null && mapRendererView != null) { + mapRendererView.removeSymbolsProvider(obfMapSymbolsProvider); + } + // Create new OBF map symbols provider + obfMapSymbolsProvider = new MapObjectsSymbolsProvider(mapPrimitivesProvider, getReferenceTileSize()); + // If there's bound view, add new provider + if (mapRendererView != null) { + mapRendererView.addSymbolsProvider(obfMapSymbolsProvider); + } + } + + private void applyCurrentContextToView() { + if (mapRendererView instanceof AtlasMapRendererView) { + cachedReferenceTileSize = getReferenceTileSize(); + ((AtlasMapRendererView)mapRendererView).setReferenceTileSizeOnScreenInPixels(cachedReferenceTileSize); + } + // Layers + if (obfMapRasterLayerProvider != null) { + mapRendererView.setMapLayerProvider(OBF_RASTER_LAYER, obfMapRasterLayerProvider); + } + // Symbols + if (obfMapSymbolsProvider != null) { + mapRendererView.addSymbolsProvider(obfMapSymbolsProvider); } } @@ -143,232 +260,5 @@ public class MapRendererContext { } } - - /** - * Set display density factor and update context (if needed) - * @param displayDensityFactor New display density factor - */ - public void setDisplayDensityFactor(float displayDensityFactor) { - this.displayDensityFactor = displayDensityFactor; - referenceTileSizef = 256.0f * displayDensityFactor; - rasterTileSize = Integer.highestOneBit((int) referenceTileSizef - 1) * 2; - - if (mapRendererView instanceof AtlasMapRendererView) - ((AtlasMapRendererView) mapRendererView) - .setReferenceTileSizeOnScreenInPixels(referenceTileSizef); - if (mapPresentationEnvironment != null) - updateMapPresentationEnvironment(); - } - - - - /** - * Update map presentation environment and everything that depends on it - */ - private void updateMapPresentationEnvironment() { - // Create new map presentation environment - String langId = app.getSettings().MAP_PREFERRED_LOCALE.get(); - // TODO make setting - LanguagePreference langPref = LanguagePreference.LocalizedOrNative; - String rendName = app.getSettings().RENDERER.get(); - if(rendName.length() == 0 || rendName.equals(RendererRegistry.DEFAULT_RENDER)) { - rendName = "default"; - } - if(!mapStyles.containsKey(rendName)) { - mapStyles.put(rendName, mapStylesCollection.getResolvedStyleByName(rendName)); - } - ResolvedMapStyle mapStyle = mapStyles.get(rendName); - CachedMapPresentation pres = new CachedMapPresentation(langId, langPref, mapStyle, displayDensityFactor); - if (this.presentationObjectParams == null - || !this.presentationObjectParams.equalsFields(pres)) { - this.presentationObjectParams = pres; - mapPresentationEnvironment = new MapPresentationEnvironment( - mapStyle, displayDensityFactor, langId, langPref); - } - - // Apply map style settings - OsmandSettings prefs = app.getSettings(); - RenderingRulesStorage storage = app.getRendererRegistry() - .getCurrentSelectedRenderer(); - Map props = new HashMap(); - for (RenderingRuleProperty customProp : storage.PROPS.getCustomRules()) { - if (customProp.isBoolean()) { - CommonPreference pref = prefs - .getCustomRenderBooleanProperty(customProp - .getAttrName()); - props.put(customProp.getAttrName(), pref.get() + ""); - } else { - CommonPreference settings = prefs - .getCustomRenderProperty(customProp.getAttrName()); - String res = settings.get(); - if (!Algorithms.isEmpty(res)) { - props.put(customProp.getAttrName(), res); - } - } - } - - QStringStringHash convertedStyleSettings = new QStringStringHash(); - for (Iterator> itSetting = props.entrySet() - .iterator(); itSetting.hasNext();) { - Map.Entry setting = itSetting.next(); - convertedStyleSettings.set(setting.getKey(), setting.getValue()); - } - if(nightMode) { - convertedStyleSettings.set("nightMode", "true"); - } - mapPresentationEnvironment.setSettings(convertedStyleSettings); - - // Update all dependencies - if (mapPrimitiviser != null) { - updateMapPrimitiviser(); - } - } - - /** - * Reference to map primitiviser (if used) - */ - private MapPrimitiviser mapPrimitiviser; - - /** - * Update map primitiviser and everything that depends on it - */ - private void updateMapPrimitiviser() { - // Create new map primitiviser - mapPrimitiviser = new MapPrimitiviser(mapPresentationEnvironment); - - // Update all dependencies - if (mapPrimitivesProvider != null) - updateMapPrimitivesProvider(); - } - - /** - * Reference to OBF map objects provider (if used) - */ - private ObfMapObjectsProvider _obfMapObjectsProvider; - - /** - * Update OBF map objects provider and everything that depends on it - */ - private void updateObfMapObjectsProvider() { - _obfMapObjectsProvider = new ObfMapObjectsProvider( - obfsCollection); - - // Update all dependencies - if (mapPrimitivesProvider != null) - updateMapPrimitivesProvider(); - } - - /** - * Reference to map primitives provider (if used) - */ - private MapPrimitivesProvider mapPrimitivesProvider; - - /** - * Update map primitives provider and everything that depends on it - */ - private void updateMapPrimitivesProvider() { - // Create new map primitives provider - mapPrimitivesProvider = new MapPrimitivesProvider( - _obfMapObjectsProvider, - mapPrimitiviser, - rasterTileSize); - - // Update all dependencies - if (obfMapRasterLayerProvider != null) - updateObfMapRasterLayerProvider(); - if (obfMapSymbolsProvider != null) - updateObfMapSymbolsProvider(); - } - - /** - * Reference to OBF map raster layer provider (if used) - */ - private IRasterMapLayerProvider obfMapRasterLayerProvider; - - /** - * Index of OBF map raster layer in bound map renderer view (if set) - */ - private Integer obfMapRasterLayer; - private boolean nightMode; - - /** - * Update OBF map raster layer provider and everything that depends on it - */ - private void updateObfMapRasterLayerProvider() { - // Create new OBF map raster layer provider - obfMapRasterLayerProvider = new MapRasterLayerProvider_Software( - mapPrimitivesProvider); - - // In case there's bound view and configured layer, perform setup - if(mapRendererView != null && obfMapRasterLayer != null) - mapRendererView.setMapLayerProvider(obfMapRasterLayer, obfMapRasterLayerProvider); - } - - - - /** - * Update OBF map symbols provider and everything that depends on it - */ - private void updateObfMapSymbolsProvider() { - // If there's current provider and bound view, remove it - if (obfMapSymbolsProvider != null && mapRendererView != null) - mapRendererView.removeSymbolsProvider(obfMapSymbolsProvider); - - // Create new OBF map symbols provider - obfMapSymbolsProvider = new MapObjectsSymbolsProvider( - mapPrimitivesProvider, - referenceTileSizef); - - // If there's bound view, add new provider - if (mapRendererView != null) - mapRendererView.addSymbolsProvider(obfMapSymbolsProvider); - } - - /** - * Apply current context to view - */ - private void apply() { - if (mapRendererView instanceof AtlasMapRendererView) - ((AtlasMapRendererView)mapRendererView).setReferenceTileSizeOnScreenInPixels(referenceTileSizef); - - // Layers - if (obfMapRasterLayer != null && obfMapRasterLayerProvider != null) - mapRendererView.setMapLayerProvider(obfMapRasterLayer, obfMapRasterLayerProvider); - - // Symbols - if (obfMapSymbolsProvider != null) - mapRendererView.addSymbolsProvider(obfMapSymbolsProvider); - } - - /** - * Setup OBF map on layer 0 with symbols - * @param obfsCollection OBFs collection - */ - public void setupObfMap(MapStylesCollection mapStylesCollection, IObfsCollection obfsCollection) { - this.obfsCollection = obfsCollection; - this.mapStylesCollection = mapStylesCollection; - this.obfMapRasterLayer = OBF_RASTER_LAYER; - updateMapPresentationEnvironment(); - updateMapPrimitiviser(); - updateMapPrimitivesProvider(); - updateObfMapObjectsProvider(); - updateObfMapRasterLayerProvider(); - updateObfMapSymbolsProvider(); - } - - public void updateMapSettings() { - if (mapPresentationEnvironment != null) { - updateMapPresentationEnvironment(); - } - } - - public boolean isNightMode() { - return nightMode; - } - - public void setNightMode(boolean nightMode) { - this.nightMode = nightMode; - updateMapSettings(); - } } diff --git a/OsmAnd/src/net/osmand/plus/activities/DashboardActivity.java b/OsmAnd/src/net/osmand/plus/activities/DashboardActivity.java index 37c7982f0d..d6d3d61188 100644 --- a/OsmAnd/src/net/osmand/plus/activities/DashboardActivity.java +++ b/OsmAnd/src/net/osmand/plus/activities/DashboardActivity.java @@ -11,6 +11,7 @@ import java.util.Random; import net.osmand.access.AccessibleAlertBuilder; import net.osmand.plus.OsmAndAppCustomization; +import net.osmand.plus.OsmAndLocationProvider; import net.osmand.plus.OsmandApplication; import net.osmand.plus.R; import net.osmand.plus.Version; @@ -74,6 +75,7 @@ public class DashboardActivity extends BaseDownloadActivity { private static final int SETTINGS_ID = 1; private static final int EXIT_ID = 2; private ProgressDialog startProgressDialog; + private OsmAndLocationProvider lp; @Override protected void onCreate(Bundle savedInstanceState) { @@ -93,6 +95,7 @@ public class DashboardActivity extends BaseDownloadActivity { return; } setContentView(R.layout.dashboard); + lp = getMyApplication().getLocationProvider(); final String textVersion = Version.getFullVersion(getMyApplication()); getSupportActionBar().setTitle(textVersion); @@ -103,6 +106,7 @@ public class DashboardActivity extends BaseDownloadActivity { setupContributionVersion(); addFragments(); initApp(this, getMyApplication()); + } @Override diff --git a/OsmAnd/src/net/osmand/plus/activities/MapActivityLayers.java b/OsmAnd/src/net/osmand/plus/activities/MapActivityLayers.java index fec550a9cd..877d705065 100644 --- a/OsmAnd/src/net/osmand/plus/activities/MapActivityLayers.java +++ b/OsmAnd/src/net/osmand/plus/activities/MapActivityLayers.java @@ -58,8 +58,6 @@ import android.widget.Toast; * Object is responsible to maintain layers using by map activity */ public class MapActivityLayers { - - private final MapActivity activity; diff --git a/OsmAnd/src/net/osmand/plus/dashboard/DashBaseFragment.java b/OsmAnd/src/net/osmand/plus/dashboard/DashBaseFragment.java index 945619c13c..e137d983bc 100644 --- a/OsmAnd/src/net/osmand/plus/dashboard/DashBaseFragment.java +++ b/OsmAnd/src/net/osmand/plus/dashboard/DashBaseFragment.java @@ -11,4 +11,5 @@ public class DashBaseFragment extends SherlockFragment { public OsmandApplication getMyApplication(){ return (OsmandApplication) getActivity().getApplication(); } + } diff --git a/OsmAnd/src/net/osmand/plus/render/NativeCppLibrary.java b/OsmAnd/src/net/osmand/plus/render/NativeCppLibrary.java deleted file mode 100755 index 20cbb7662d..0000000000 --- a/OsmAnd/src/net/osmand/plus/render/NativeCppLibrary.java +++ /dev/null @@ -1,23 +0,0 @@ -package net.osmand.plus.render; - -import net.osmand.NativeLibrary; - -/** - * Created by Denis on 02.10.2014. - */ -public class NativeCppLibrary extends NativeLibrary { - - public NativeCppLibrary(boolean newLibrary) { - super(newLibrary); - } - - public static void loadLibrary(String name) { - try { - System.out.println("Loading " + name); - System.loadLibrary(name); - } catch( UnsatisfiedLinkError e ) { - System.err.println("Failed to load '"+name + "':" + e); - throw e; - } - } -} diff --git a/OsmAnd/src/net/osmand/plus/views/corenative/NativeCoreContext.java b/OsmAnd/src/net/osmand/plus/views/corenative/NativeCoreContext.java index c660c749a2..937f4208f9 100644 --- a/OsmAnd/src/net/osmand/plus/views/corenative/NativeCoreContext.java +++ b/OsmAnd/src/net/osmand/plus/views/corenative/NativeCoreContext.java @@ -55,16 +55,14 @@ public class NativeCoreContext { WindowManager mgr = (WindowManager)app.getSystemService(Context.WINDOW_SERVICE); DisplayMetrics dm = new DisplayMetrics(); mgr.getDefaultDisplay().getMetrics(dm); - float displayDensityFactor = (float) Math.pow(2, (app.getSettings().getSettingsZoomScale() + Math.sqrt(Math.max(0, dm.density - 1)))); + float density = Math.max(0, dm.density - 1); ObfsCollection obfsCollection = new ObfsCollection(); obfsCollection.addDirectory(directory.getAbsolutePath(), false); MapStylesCollection mapStylesCollection = setupMapStyleCollection(app); - mapRendererContext = new MapRendererContext(app); - mapRendererContext.setDisplayDensityFactor(displayDensityFactor); + mapRendererContext = new MapRendererContext(app, density); mapRendererContext.setupObfMap(mapStylesCollection, obfsCollection); - init = true; } } From 9a4409536d5ad5b808a498d351b1684d67121aca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A9ter=20B=C3=A1thory?= Date: Tue, 2 Dec 2014 01:15:13 +0100 Subject: [PATCH 117/157] Translated using Weblate (Hungarian) Currently translated at 37.3% (219 of 586 strings) --- OsmAnd/res/values-hu/phrases.xml | 237 ++++++++++++++++++++++++++++++- 1 file changed, 235 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-hu/phrases.xml b/OsmAnd/res/values-hu/phrases.xml index a6b3daec93..2935ffbfca 100644 --- a/OsmAnd/res/values-hu/phrases.xml +++ b/OsmAnd/res/values-hu/phrases.xml @@ -1,2 +1,235 @@ - - \ No newline at end of file + +Régészeti lelőhely + + Pékség + Kisbolt + Bevásárlóközpont + Italbolt + Hentes + Delikatesz bolt + Farm bolt + Zöldséges + Halárus + Cukrászda + Fagyizó + Szupermarket + Teabolt + Tejtermék bolt + Árusító automata + + Könyvesbolt + Kerékpárbolt + Anime bolt + Antikvárius + Drogéria + Fénymásoló + Virágárus + Kertészet + Ajándékbolt + Háztartási bolt + Ékszerbolt + Motorkerékpár kereskedés + Sportbolt + Jegyárus + Dohánybolt + Játékbolt + 100 forintos bolt + Áruház + Autókereskedés + Autóalkatrész + Piac + Rendőrség + Tűzoltóság + Segélykérő telefon + Tűzcsap + Mentőállomás + Gázló + Hágó + Kapu + Városfal + Sorompó + Fizetőkapu + Határellenőrzés + Villanyrendőr + + Autószerviz + Autógumis + Autómosó + Benzinkút + Elektromos töltőállomás + Sűrített levegő + Parkoló + Motor parkoló + Parkolóház bejárat + Garázsok + + Tömegközlekedési megálló + Buszmegálló + Trolimegálló + Villamosmegálló + Metró lejárat + Metrómegálló + Taxidroszt + + Repülőtér + Kifutópálya + Utasterminál + Reptér kapu + + Sólya + Kompkikötő + Világítótorony + + Kerékpárkölcsönző + Kerékpárparkoló + + Alagút + Híd + + Traffipax + Autópálya csomópont + + Víztorony + Posta + Postaláda + Telefon + Távközlési torony + Hulladékgyűjtő + Szeméttelep + Móló + Szélmalom + Kőfejtő + Szőlős + Gyümölcsös + Sólepárló + Iskola + Óvoda + Egyetem + + Bíróság + Börtön + Nagykövetség + Nagyváros + Város + Falu + Falucska + Lakatlan hely + + Gyógyszertár + Kórház + Orvos + Klinika + Fogorvos + Állatorvos + Szanatórium + Városháza + Stadion + Sportközpont + Golfpálya + Műjégpálya + Pálya + Versenypálya + Múzeum + Turistalátványosság + Emlékmű + Műalkotás + Kastély + Városkapu + Erőd + Szökőkút + Romok + Műemlék + Állatkert + Vidámpark + + Hotel + Vendégház + Motel + Menedékház + Istentiszteleti hely + Istentiszteleti hely: keresztény + Istentiszteleti hely: zsidó + Istentiszteleti hely: muszlim + Istentiszteleti hely: szikh + Istentiszteleti hely: buddhista + Istentiszteleti hely: hindu + Istentiszteleti hely: sintoista + Istentiszteleti hely: taoista + Kolostor + Útmenti kereszt + Turistainformáció + Óra + Kilátóhely + Kemping + Lakóautó hely + Piknikezőhely + Forrás + Hőforrás + Gejzír + Temető + Sírkert + Menedék + Sikló + Könyvtár + Mozi + Kaszinó + Közösségi ház + Színház + Cirkusz + Strand + Vadászles + Kishajókikötő + Minigolf + Játszótér + Úszómedence + Park + + Kávézó + Sörkert + Étterem + Gyorsétterem + Bár + Kocsma + Ivóvíz + Méhész + Patkolókovács + Sörfőzde + Könyvkötő + Asztalos + Órás + Ruhakészítő + Villanyszerelő + Kertész + Ékszerész + Zárjavító + Kulcsmásoló + Fotográfus + Fotólabor + Vízvezeték szerelő + Tetőfedő + Cipész + Fodrász + Autókölcsönző + Bank + Bankautomata + Pénzváltó + Könyvelő + Barlangbejárat + Hegycsúcs + Nyereg + Vulkán + Kráter + Gerinc + Gleccser + Víznyelő + Vízesés + Folyó + Patak + Strand + Öböl + Fjord + Zátony + Láp + Természetvédelmi terület + Sziget + From 1c9cbfcd5bc58bfd75051ed1ee3800c59ea66a50 Mon Sep 17 00:00:00 2001 From: Victor Shcherb Date: Tue, 2 Dec 2014 08:09:31 +0100 Subject: [PATCH 118/157] Update to use opengl render by default --- OsmAnd/res/values/strings.xml | 4 ++-- .../osmand/core/android/MapRendererContext.java | 10 ++++------ .../src/net/osmand/plus/OsmandApplication.java | 10 +++++----- OsmAnd/src/net/osmand/plus/OsmandSettings.java | 5 +++-- .../net/osmand/plus/activities/MapActivity.java | 2 +- .../activities/SettingsGeneralActivity.java | 4 +++- .../SettingsDevelopmentActivity.java | 2 -- .../net/osmand/plus/render/MapVectorLayer.java | 17 +---------------- .../osmand/plus/views/OsmandMapTileView.java | 8 ++++++++ 9 files changed, 27 insertions(+), 35 deletions(-) diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index 2c8a381588..28486f279c 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -9,6 +9,8 @@ 3. All your modified/created strings are in the top of the file (to make easier find what\'s translated). PLEASE: Have a look at http://code.google.com/p/osmand/wiki/UIConsistency, it may really improve your and our work :-) Thx - Hardy --> + Use opengl rendering + Use hardware accelerated opengl rendering (may not work on some device) Nearest road was not found Home Use secure connection with server @@ -72,8 +74,6 @@ Print route Favorite point name duplicate We changed your favorite point name to %1$s to avoid duplicated names. - Use native rendering - Use C++ rendering instead of Java Set the text size on the map. Text size Speed limit diff --git a/OsmAnd/src/net/osmand/core/android/MapRendererContext.java b/OsmAnd/src/net/osmand/core/android/MapRendererContext.java index 434e5c07f3..287dd66e28 100644 --- a/OsmAnd/src/net/osmand/core/android/MapRendererContext.java +++ b/OsmAnd/src/net/osmand/core/android/MapRendererContext.java @@ -73,13 +73,11 @@ public class MapRendererContext { } } - public boolean isNightMode() { - return nightMode; - } - public void setNightMode(boolean nightMode) { - this.nightMode = nightMode; - updateMapSettings(); + if (nightMode != this.nightMode) { + this.nightMode = nightMode; + updateMapSettings(); + } } public void updateMapSettings() { diff --git a/OsmAnd/src/net/osmand/plus/OsmandApplication.java b/OsmAnd/src/net/osmand/plus/OsmandApplication.java index 57e9d9c572..ee149efca1 100644 --- a/OsmAnd/src/net/osmand/plus/OsmandApplication.java +++ b/OsmAnd/src/net/osmand/plus/OsmandApplication.java @@ -557,16 +557,16 @@ public class OsmandApplication extends Application { } if (!"qnx".equals(System.getProperty("os.name"))) { - if (osmandSettings.USE_NATIVE_RENDER.get()) { - if (!osmandSettings.CPP_RENDER_FAILED.get()) { - osmandSettings.CPP_RENDER_FAILED.set(true); + if (osmandSettings.USE_OPENGL_RENDER.get()) { + if (!osmandSettings.OPENGL_RENDER_FAILED.get()) { + osmandSettings.OPENGL_RENDER_FAILED.set(true); boolean success = NativeCoreContext.tryCatchInit(this); if (success) { - osmandSettings.CPP_RENDER_FAILED.set(false); + osmandSettings.OPENGL_RENDER_FAILED.set(false); } } else { // try next time once again ? - osmandSettings.CPP_RENDER_FAILED.set(false); + osmandSettings.OPENGL_RENDER_FAILED.set(false); warnings.add("Native OpenGL library is not supported. Please try again after exit"); } } diff --git a/OsmAnd/src/net/osmand/plus/OsmandSettings.java b/OsmAnd/src/net/osmand/plus/OsmandSettings.java index 67fb16b20b..87848dcecf 100644 --- a/OsmAnd/src/net/osmand/plus/OsmandSettings.java +++ b/OsmAnd/src/net/osmand/plus/OsmandSettings.java @@ -1719,9 +1719,10 @@ public class OsmandSettings { public final OsmandPreference NATIVE_RENDERING_FAILED = new BooleanPreference("native_rendering_failed_init", false).makeGlobal(); - public final OsmandPreference USE_NATIVE_RENDER = new BooleanPreference("use_native_render", false).makeGlobal().cache(); + public final OsmandPreference USE_OPENGL_RENDER = new BooleanPreference("use_opengl_render", + Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH).makeGlobal().cache(); - public final OsmandPreference CPP_RENDER_FAILED = new BooleanPreference("cpp_render_failed", false).makeGlobal().cache(); + public final OsmandPreference OPENGL_RENDER_FAILED = new BooleanPreference("opengl_render_failed", false).makeGlobal().cache(); // this value string is synchronized with settings_pref.xml preference name diff --git a/OsmAnd/src/net/osmand/plus/activities/MapActivity.java b/OsmAnd/src/net/osmand/plus/activities/MapActivity.java index f5287d7d9c..d08d08685c 100644 --- a/OsmAnd/src/net/osmand/plus/activities/MapActivity.java +++ b/OsmAnd/src/net/osmand/plus/activities/MapActivity.java @@ -148,7 +148,7 @@ public class MapActivity extends AccessibleActivity { app.checkApplicationIsBeingInitialized(this, startProgressDialog); parseLaunchIntentLocation(); - if(settings.USE_NATIVE_RENDER.get() && NativeCoreContext.isInit()) { + if(settings.USE_OPENGL_RENDER.get() && NativeCoreContext.isInit()) { ViewStub stub = (ViewStub) findViewById(R.id.atlasMapRendererViewStub); atlasMapRendererView = (AtlasMapRendererView) stub.inflate(); OsmAndMapLayersView ml = (OsmAndMapLayersView) findViewById(R.id.MapLayersView); diff --git a/OsmAnd/src/net/osmand/plus/activities/SettingsGeneralActivity.java b/OsmAnd/src/net/osmand/plus/activities/SettingsGeneralActivity.java index 8b1e712e3d..8a204be7de 100644 --- a/OsmAnd/src/net/osmand/plus/activities/SettingsGeneralActivity.java +++ b/OsmAnd/src/net/osmand/plus/activities/SettingsGeneralActivity.java @@ -24,7 +24,6 @@ import net.osmand.plus.Version; import net.osmand.plus.base.SuggestExternalDirectoryDialog; import net.osmand.plus.download.DownloadActivity; import net.osmand.plus.download.DownloadActivityType; -import net.osmand.plus.download.DownloadIndexFragment; import net.osmand.plus.helpers.FileNameTranslationHelper; import net.osmand.plus.render.NativeOsmandLibrary; import net.osmand.plus.voice.CommandPlayer; @@ -331,6 +330,9 @@ public class SettingsGeneralActivity extends SettingsBaseActivity { } misc.addPreference(nativeCheckbox); + final CheckBoxPreference openGlRender = createCheckBoxPreference(settings.USE_OPENGL_RENDER, R.string.use_opengl_render,R.string.use_opengl_render_descr); + misc.addPreference(openGlRender); + int nav = getResources().getConfiguration().navigation; if (nav == Configuration.NAVIGATION_DPAD || nav == Configuration.NAVIGATION_TRACKBALL || nav == Configuration.NAVIGATION_WHEEL || diff --git a/OsmAnd/src/net/osmand/plus/development/SettingsDevelopmentActivity.java b/OsmAnd/src/net/osmand/plus/development/SettingsDevelopmentActivity.java index 038ee7feaf..1d69db36bb 100644 --- a/OsmAnd/src/net/osmand/plus/development/SettingsDevelopmentActivity.java +++ b/OsmAnd/src/net/osmand/plus/development/SettingsDevelopmentActivity.java @@ -41,8 +41,6 @@ public class SettingsDevelopmentActivity extends SettingsBaseActivity { cat.addPreference(createCheckBoxPreference(settings.USE_MAGNETIC_FIELD_SENSOR_COMPASS, R.string.use_magnetic_sensor, R.string.use_magnetic_sensor_descr)); - cat.addPreference(createCheckBoxPreference(settings.USE_NATIVE_RENDER, R.string.use_native_render,R.string.use_native_render_descr)); - Preference pref = new Preference(this); pref.setTitle(R.string.test_voice_prompts); pref.setSummary(R.string.play_commands_of_currently_selected_voice); diff --git a/OsmAnd/src/net/osmand/plus/render/MapVectorLayer.java b/OsmAnd/src/net/osmand/plus/render/MapVectorLayer.java index b8a3d5e090..a31e4371a2 100644 --- a/OsmAnd/src/net/osmand/plus/render/MapVectorLayer.java +++ b/OsmAnd/src/net/osmand/plus/render/MapVectorLayer.java @@ -82,19 +82,6 @@ public class MapVectorLayer extends BaseMapLayer { } - @Override - public boolean onTouchEvent(MotionEvent event, RotatedTileBox tileBox) { - final MapRendererView mapRenderer = view.getMapRenderer(); - if (mapRenderer != null) { - if (event.getAction() == MotionEvent.ACTION_DOWN) { - mapRenderer.suspendSymbolsUpdate(); - } else if (event.getAction() == MotionEvent.ACTION_UP) { - mapRenderer.resumeSymbolsUpdate(); - } - } - - return false; - } @Override public void onPrepareBufferImage(Canvas canvas, RotatedTileBox tilesRect, @@ -108,9 +95,7 @@ public class MapVectorLayer extends BaseMapLayer { } else { final MapRendererView mapRenderer = view.getMapRenderer(); if (mapRenderer != null) { - if(NativeCoreContext.getMapRendererContext().isNightMode() != drawSettings.isNightMode()) { - NativeCoreContext.getMapRendererContext().setNightMode(drawSettings.isNightMode()); - } + NativeCoreContext.getMapRendererContext().setNightMode(drawSettings.isNightMode()); // opengl renderer mapRenderer.setTarget(new PointI(tilesRect.getCenter31X(), tilesRect.getCenter31Y())); mapRenderer.setAzimuth(-tilesRect.getRotate()); diff --git a/OsmAnd/src/net/osmand/plus/views/OsmandMapTileView.java b/OsmAnd/src/net/osmand/plus/views/OsmandMapTileView.java index 00967d98dc..65f157a763 100644 --- a/OsmAnd/src/net/osmand/plus/views/OsmandMapTileView.java +++ b/OsmAnd/src/net/osmand/plus/views/OsmandMapTileView.java @@ -719,6 +719,14 @@ public class OsmandMapTileView implements IMapDownloaderCallback { } public boolean onTouchEvent(MotionEvent event) { + if (mapRenderer != null) { + if (event.getAction() == MotionEvent.ACTION_DOWN) { + mapRenderer.suspendSymbolsUpdate(); + } else if (event.getAction() == MotionEvent.ACTION_UP + || event.getAction() == MotionEvent.ACTION_CANCEL) { + mapRenderer.resumeSymbolsUpdate(); + } + } if (twoFingerTapDetector.onTouchEvent(event)) { return true; } From 2ad15c57e1b9c06d46190227793fc6c9ca636a3e Mon Sep 17 00:00:00 2001 From: josep constanti Date: Tue, 2 Dec 2014 08:26:42 +0100 Subject: [PATCH 119/157] Translated using Weblate (Catalan) Currently translated at 100.0% (1567 of 1567 strings) --- OsmAnd/res/values-ca/strings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/OsmAnd/res/values-ca/strings.xml b/OsmAnd/res/values-ca/strings.xml index b85ec8d747..05b3d85f7f 100644 --- a/OsmAnd/res/values-ca/strings.xml +++ b/OsmAnd/res/values-ca/strings.xml @@ -1902,4 +1902,6 @@ La llista de països inclosos (bàsicament tot el món!): Afganistan, Albània, Coordenades Mapes No s\'ha trobat cap ruta a prop + Ús de renderització OpenGL + Ús de renderitació OpenGL per accelerador gràfic (no funciona a tots els dispositius) From 298f7858d7b800654a66660e721fde91cf314bc2 Mon Sep 17 00:00:00 2001 From: jan madsen Date: Tue, 2 Dec 2014 08:45:13 +0100 Subject: [PATCH 120/157] Translated using Weblate (Danish) Currently translated at 100.0% (1567 of 1567 strings) --- OsmAnd/res/values-da/strings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/OsmAnd/res/values-da/strings.xml b/OsmAnd/res/values-da/strings.xml index bf175ea0f1..b6411a7219 100644 --- a/OsmAnd/res/values-da/strings.xml +++ b/OsmAnd/res/values-da/strings.xml @@ -1851,4 +1851,6 @@ Koordinater Kort Nærmeste vej blev ikke fundet + Brug OpenGL optegning + Brug hardware accelereret OpenGL optegning (virker muligvis ikke på alle enheder) From ef9e5786928e76ffe39b54c7440584ffefa435ed Mon Sep 17 00:00:00 2001 From: Jurijus Date: Tue, 2 Dec 2014 09:12:36 +0100 Subject: [PATCH 121/157] Translated using Weblate (Lithuanian) Currently translated at 100.0% (1567 of 1567 strings) --- OsmAnd/res/values-lt/strings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/OsmAnd/res/values-lt/strings.xml b/OsmAnd/res/values-lt/strings.xml index c41494bf06..559733bad1 100644 --- a/OsmAnd/res/values-lt/strings.xml +++ b/OsmAnd/res/values-lt/strings.xml @@ -1851,4 +1851,6 @@ RODYTI VISKĄ Koordinatės Nerastas trumpiausias kelias + Naudoti OpenGL vaizdavimą + Naudoti aparatinį OpenGL vaizdavimą (gali neveikti kai kurioje įrangoje) From b8d89c8c9fc4c03703b71ad97a7053ff4ee679b5 Mon Sep 17 00:00:00 2001 From: Viktar Palstsiuk Date: Tue, 2 Dec 2014 09:32:45 +0100 Subject: [PATCH 122/157] Translated using Weblate (Belarusian) Currently translated at 100.0% (1567 of 1567 strings) --- OsmAnd/res/values-be/strings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/OsmAnd/res/values-be/strings.xml b/OsmAnd/res/values-be/strings.xml index 58c258c4f5..471ef2f5ea 100644 --- a/OsmAnd/res/values-be/strings.xml +++ b/OsmAnd/res/values-be/strings.xml @@ -1960,4 +1960,6 @@ OsmAnd мае адкрыты зыходны код і актыўна разві ПАКАЗАЦЬ УСЁ Каардынаты Бліжэйшая дарога не была знойдзена + Выкарыстоўваць OpenGL + Выкарыстоўваць апаратнае паскарэньне OpenGL (можа не працаваць на некаторых прыстасаваньнях) From ff2c78fcdef144f79b9aad0180abab4de1b15720 Mon Sep 17 00:00:00 2001 From: Ivan Gonzalez Martin Date: Tue, 2 Dec 2014 10:21:50 +0100 Subject: [PATCH 123/157] Translated using Weblate (Spanish) Currently translated at 100.0% (1567 of 1567 strings) --- OsmAnd/res/values-es/strings.xml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-es/strings.xml b/OsmAnd/res/values-es/strings.xml index f8f253523b..859f8461b7 100644 --- a/OsmAnd/res/values-es/strings.xml +++ b/OsmAnd/res/values-es/strings.xml @@ -1,4 +1,4 @@ - + Configura pantalla @@ -1884,4 +1884,7 @@ Afganistán, Albania, Alemania, Andorra, Angola, Anguila, Antigua y Barbuda, Ant MOSTRAR MAPA MOSTRAR TODO Coordenadas - + Usar renderizado opengl + Usar renderizado opengl acelerado por hardware (podría no funcionar en algunos dispositivos) + No se ha encontrado la carretera más cercana + From 100260b1042eaec40c1ff2ba8eefa1324962bf4e Mon Sep 17 00:00:00 2001 From: Ldm Public Date: Tue, 2 Dec 2014 11:01:45 +0100 Subject: [PATCH 124/157] Translated using Weblate (French) Currently translated at 100.0% (1567 of 1567 strings) --- OsmAnd/res/values-fr/strings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/OsmAnd/res/values-fr/strings.xml b/OsmAnd/res/values-fr/strings.xml index efd62d4ddf..4ae1905026 100644 --- a/OsmAnd/res/values-fr/strings.xml +++ b/OsmAnd/res/values-fr/strings.xml @@ -1867,4 +1867,6 @@ Afghanistan, Albanie, Algérie, Allemagne, Andorre, Angola, Anguilla, Antigua-et Coordonnées Cartes Aucune route n\'a été trouvée à proximité + Utiliser le rendu OpenGL + Utiliser le rendu matériel accéléré OpenGL (cette option peut être inefficace sur certains appareils) From c1123041a28d54c63277cd29a2914e0fed58e29f Mon Sep 17 00:00:00 2001 From: Bars107 Date: Tue, 2 Dec 2014 12:02:52 +0200 Subject: [PATCH 125/157] Fixed bug with last updated item in updates. Replaced start loading dialog with fragment. --- OsmAnd/res/layout/dashboard.xml | 7 +-- .../{sherpafy_loading.xml => loading.xml} | 0 .../plus/activities/DashboardActivity.java | 56 +++++-------------- .../plus/dashboard/DashLoadingFragment.java | 54 ++++++++++++++++++ .../plus/dashboard/DashUpdatesFragment.java | 7 ++- .../sherpafy/SherpafyLoadingFragment.java | 2 +- 6 files changed, 75 insertions(+), 51 deletions(-) rename OsmAnd/res/layout/{sherpafy_loading.xml => loading.xml} (100%) create mode 100644 OsmAnd/src/net/osmand/plus/dashboard/DashLoadingFragment.java diff --git a/OsmAnd/res/layout/dashboard.xml b/OsmAnd/res/layout/dashboard.xml index c4e0be2f6f..a87ad02735 100644 --- a/OsmAnd/res/layout/dashboard.xml +++ b/OsmAnd/res/layout/dashboard.xml @@ -13,14 +13,13 @@ android:orientation="vertical" android:id="@+id/content" android:layout_width="match_parent" - android:layout_height="wrap_content"> - - + android:layout_height="match_parent"/> - 2) { diff --git a/OsmAnd/src/net/osmand/plus/sherpafy/SherpafyLoadingFragment.java b/OsmAnd/src/net/osmand/plus/sherpafy/SherpafyLoadingFragment.java index e6c7887ca3..4070efc8d4 100644 --- a/OsmAnd/src/net/osmand/plus/sherpafy/SherpafyLoadingFragment.java +++ b/OsmAnd/src/net/osmand/plus/sherpafy/SherpafyLoadingFragment.java @@ -20,7 +20,7 @@ public class SherpafyLoadingFragment extends SherlockFragment { public View onCreateView(android.view.LayoutInflater inflater, android.view.ViewGroup container, Bundle savedInstanceState) { app = (OsmandApplication) getSherlockActivity().getApplication(); - view = inflater.inflate(R.layout.sherpafy_loading, container, false); + view = inflater.inflate(R.layout.loading, container, false); return view; } From f476fcee83737d75514d389502d387e146a80332 Mon Sep 17 00:00:00 2001 From: Mirco Zorzo Date: Tue, 2 Dec 2014 11:37:42 +0100 Subject: [PATCH 126/157] Translated using Weblate (Italian) Currently translated at 100.0% (1567 of 1567 strings) --- OsmAnd/res/values-it/strings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/OsmAnd/res/values-it/strings.xml b/OsmAnd/res/values-it/strings.xml index 86c6b6743f..f76837b919 100644 --- a/OsmAnd/res/values-it/strings.xml +++ b/OsmAnd/res/values-it/strings.xml @@ -2034,4 +2034,6 @@ Si consiglia di aggiungere uno o più punti intermedi per migliorarne le prestaz Cerca MOSTRA LA MAPPA Non è stata trovata una strada nelle vicinanze + Utilizzare il rendering opengl + Utilizzare il rendering opengl accelerato via hardware (potrebbe non funzionare in alcuni dispositivi) From f0a9e00ddb2636234205ef505d3042ba8225e770 Mon Sep 17 00:00:00 2001 From: Bars107 Date: Tue, 2 Dec 2014 12:43:06 +0200 Subject: [PATCH 127/157] Added loading indication forr map card in dashboard --- OsmAnd/res/layout/dash_map_fragment.xml | 26 ++++++--- OsmAnd/res/layout/dashboard.xml | 15 +++--- .../plus/activities/DashboardActivity.java | 5 +- .../plus/dashboard/DashLoadingFragment.java | 54 ------------------- .../plus/dashboard/DashMapFragment.java | 34 ++++++++++-- 5 files changed, 59 insertions(+), 75 deletions(-) delete mode 100644 OsmAnd/src/net/osmand/plus/dashboard/DashLoadingFragment.java diff --git a/OsmAnd/res/layout/dash_map_fragment.xml b/OsmAnd/res/layout/dash_map_fragment.xml index 898b274829..1f26f06c2b 100644 --- a/OsmAnd/res/layout/dash_map_fragment.xml +++ b/OsmAnd/res/layout/dash_map_fragment.xml @@ -18,13 +18,25 @@ - + + + + + + + android:padding="6dp" + android:baselineAligned="false"> @@ -47,17 +48,17 @@ android:id="@+id/Copyright" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_gravity="right" - android:gravity="right" + android:layout_gravity="end" + android:gravity="end" android:textSize="14sp" /> diff --git a/OsmAnd/src/net/osmand/plus/activities/DashboardActivity.java b/OsmAnd/src/net/osmand/plus/activities/DashboardActivity.java index 4712262dab..75449d3d10 100644 --- a/OsmAnd/src/net/osmand/plus/activities/DashboardActivity.java +++ b/OsmAnd/src/net/osmand/plus/activities/DashboardActivity.java @@ -98,10 +98,7 @@ public class DashboardActivity extends BaseDownloadActivity { getSupportActionBar().setIcon(android.R.color.transparent); initApp(this, getMyApplication()); - if (getMyApplication().isApplicationInitializing()) { - FragmentManager fragmentManager = getSupportFragmentManager(); - fragmentManager.beginTransaction().replace(R.id.content, new DashLoadingFragment()).commit(); - } + addFragments(); } @Override diff --git a/OsmAnd/src/net/osmand/plus/dashboard/DashLoadingFragment.java b/OsmAnd/src/net/osmand/plus/dashboard/DashLoadingFragment.java deleted file mode 100644 index 124b6f0e4b..0000000000 --- a/OsmAnd/src/net/osmand/plus/dashboard/DashLoadingFragment.java +++ /dev/null @@ -1,54 +0,0 @@ -package net.osmand.plus.dashboard; - -import android.os.Bundle; -import android.view.View; -import android.widget.ProgressBar; -import android.widget.TextView; -import com.actionbarsherlock.app.SherlockFragment; -import net.osmand.plus.OsmandApplication; -import net.osmand.plus.R; -import net.osmand.plus.activities.DashboardActivity; - -/** - * Created by dummy on 02.12.14. - */ -public class DashLoadingFragment extends SherlockFragment { - OsmandApplication app; - private View view; - - public DashLoadingFragment() { - } - - - public View onCreateView(android.view.LayoutInflater inflater, android.view.ViewGroup container, - Bundle savedInstanceState) { - app = (OsmandApplication) getSherlockActivity().getApplication(); - view = inflater.inflate(R.layout.loading, container, false); - return view; - } - - @Override - public void onViewCreated(final View view, Bundle savedInstanceState) { - super.onViewCreated(view, savedInstanceState); - if(app.isApplicationInitializing()) { - app.checkApplicationIsBeingInitialized(getActivity(), (TextView) view.findViewById(R.id.ProgressMessage), - (ProgressBar) view.findViewById(R.id.ProgressBar), new Runnable() { - @Override - public void run() { - (view.findViewById(R.id.ProgressMessage)).setVisibility(View.GONE); - view.findViewById(R.id.ProgressBar).setVisibility(View.GONE); - DashboardActivity dashboardActivity =((DashboardActivity)getSherlockActivity()); - dashboardActivity.getSupportFragmentManager().beginTransaction().detach(DashLoadingFragment.this); - dashboardActivity.updateDownloads(); - dashboardActivity.addFragments(); - } - }); - } else { - DashboardActivity dashboardActivity =((DashboardActivity)getSherlockActivity()); - dashboardActivity.getSupportFragmentManager().beginTransaction().detach(DashLoadingFragment.this); - dashboardActivity.updateDownloads(); - dashboardActivity.addFragments(); - } - } - -} diff --git a/OsmAnd/src/net/osmand/plus/dashboard/DashMapFragment.java b/OsmAnd/src/net/osmand/plus/dashboard/DashMapFragment.java index a8812bea36..fe5c0b6040 100644 --- a/OsmAnd/src/net/osmand/plus/dashboard/DashMapFragment.java +++ b/OsmAnd/src/net/osmand/plus/dashboard/DashMapFragment.java @@ -9,12 +9,15 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; +import android.widget.ProgressBar; import android.widget.TextView; import net.osmand.data.LatLon; import net.osmand.map.MapTileDownloader.DownloadRequest; import net.osmand.map.MapTileDownloader.IMapDownloaderCallback; import net.osmand.plus.OsmAndAppCustomization; +import net.osmand.plus.OsmandApplication; import net.osmand.plus.R; +import net.osmand.plus.activities.DashboardActivity; import net.osmand.plus.activities.MapActivity; import net.osmand.plus.activities.MapActivityActions; import net.osmand.plus.helpers.FontCache; @@ -31,6 +34,7 @@ public class DashMapFragment extends DashBaseFragment implements IMapDownloader public static final String TAG = "DASH_MAP_FRAGMENT"; private OsmandMapTileView osmandMapTileView; + OsmandApplication app; @Override public void onDestroy() { @@ -51,11 +55,10 @@ public class DashMapFragment extends DashBaseFragment implements IMapDownloader @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = getActivity().getLayoutInflater().inflate(R.layout.dash_map_fragment, container, false); - setupMapView(view); Typeface typeface = FontCache.getRobotoMedium(getActivity()); ((TextView) view.findViewById(R.id.map_text)).setTypeface(typeface); ((Button) view.findViewById(R.id.show_map)).setTypeface(typeface); - + setupMapView(view); (view.findViewById(R.id.show_map)).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { @@ -64,6 +67,7 @@ public class DashMapFragment extends DashBaseFragment implements IMapDownloader }); + app = (OsmandApplication) getSherlockActivity().getApplication(); return view; } @@ -100,7 +104,31 @@ public class DashMapFragment extends DashBaseFragment implements IMapDownloader osmandMapTileView.setComplexZoom(zm, osmandMapTileView.getSettingsZoomScale()); osmandMapTileView.refreshMap(true); } - + + @Override + public void onViewCreated(final View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + view.findViewById(R.id.MapView).setVisibility(View.GONE); + if(app.isApplicationInitializing()) { + app.checkApplicationIsBeingInitialized(getActivity(), (TextView) view.findViewById(R.id.ProgressMessage), + (ProgressBar) view.findViewById(R.id.ProgressBar), new Runnable() { + @Override + public void run() { + applicationInitialized(view); + } + }); + } else { + applicationInitialized(view); + } + } + + private void applicationInitialized(View view) { + view.findViewById(R.id.loading).setVisibility(View.GONE); + DashboardActivity dashboardActivity =((DashboardActivity)getSherlockActivity()); + dashboardActivity.updateDownloads(); + view.findViewById(R.id.MapView).setVisibility(View.VISIBLE); + } + @Override public void tileDownloaded(DownloadRequest request) { if(request != null && !request.error && request.fileToSave != null){ From f62efaea921e734eecab2083cd160a8af5a016c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B6=8C=20=EC=A1=B0?= Date: Tue, 2 Dec 2014 12:19:35 +0100 Subject: [PATCH 128/157] Translated using Weblate (Korean) Currently translated at 100.0% (1567 of 1567 strings) --- OsmAnd/res/values-ko/strings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/OsmAnd/res/values-ko/strings.xml b/OsmAnd/res/values-ko/strings.xml index 8fa944d3b8..6dfb86e823 100644 --- a/OsmAnd/res/values-ko/strings.xml +++ b/OsmAnd/res/values-ko/strings.xml @@ -2090,4 +2090,6 @@ 모두 표시 좌표 가장 가까운 도로를 찾을 수 없습니다 + Opengl 렌더링 사용 + 하드웨어로 가속된 opengl 렌더링 사용 (일부 장치에는 작동 하지 않을 수 있습니다) From 5254823b75d62163d15cee111667f3de72342689 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B6=8C=20=EC=A1=B0?= Date: Tue, 2 Dec 2014 12:47:20 +0100 Subject: [PATCH 129/157] Translated using Weblate (Korean) Currently translated at 100% (0 of 0 strings) Created new translation. --- OsmAnd/res/values-ko/phrases.xml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 OsmAnd/res/values-ko/phrases.xml diff --git a/OsmAnd/res/values-ko/phrases.xml b/OsmAnd/res/values-ko/phrases.xml new file mode 100644 index 0000000000..a6b3daec93 --- /dev/null +++ b/OsmAnd/res/values-ko/phrases.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file From ea498705438b69355f2a4d8b603cb3caf9c3e269 Mon Sep 17 00:00:00 2001 From: Ivan Vantu5z Date: Tue, 2 Dec 2014 11:06:01 +0100 Subject: [PATCH 130/157] Translated using Weblate (Russian) Currently translated at 99.6% (1562 of 1567 strings) --- OsmAnd/res/values-ru/strings.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/OsmAnd/res/values-ru/strings.xml b/OsmAnd/res/values-ru/strings.xml index c760e4b43e..a75d2db58d 100644 --- a/OsmAnd/res/values-ru/strings.xml +++ b/OsmAnd/res/values-ru/strings.xml @@ -1,4 +1,4 @@ - + Использовать безопасное соединение с сервером Использовать https @@ -440,7 +440,7 @@ Экстренные службы Развлечения Финансы - Геокэшинг + Геокэшинг (игра) Здоровье Историческое Землепользование @@ -1411,7 +1411,7 @@ Укажите массу автомобиля разрешенную на маршрутах Отображение карты - Навигационный знак + Навигационные знаки (водоемы) Отключить сложную маршрутизацию Указать скорость произношения для TTS Установки навигации From cad08ee58e4258ac7d8fd15c3da4ff5f856b9f69 Mon Sep 17 00:00:00 2001 From: Ivan Vantu5z Date: Tue, 2 Dec 2014 11:00:52 +0100 Subject: [PATCH 131/157] Translated using Weblate (Russian) Currently translated at 93.8% (550 of 586 strings) --- OsmAnd/res/values-ru/phrases.xml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/OsmAnd/res/values-ru/phrases.xml b/OsmAnd/res/values-ru/phrases.xml index b437d77a57..9653243fde 100644 --- a/OsmAnd/res/values-ru/phrases.xml +++ b/OsmAnd/res/values-ru/phrases.xml @@ -582,12 +582,12 @@ Причал - + Уведомление - + Радиостанция - + Сигнал опасности @@ -601,9 +601,9 @@ Военно-морская база Место ядерного взрыва Город - Город + Город (небольшой) Деревня - Деревня + Деревня (небольшая) Хутор Урочище @@ -619,4 +619,5 @@ Астрономическая обсерватория Горячий источник Гейзер + Спортивная дорожка From 83a685d0c0e9aefc9fac8a33aaf6ff1ccd4693af Mon Sep 17 00:00:00 2001 From: Bars107 Date: Tue, 2 Dec 2014 14:43:46 +0200 Subject: [PATCH 132/157] Replaced error message dialog with card on dashboard --- OsmAnd/res/layout/dash_error_fragment.xml | 37 +++++++++ .../plus/activities/DashboardActivity.java | 42 +++------- .../plus/dashboard/DashErrorFragment.java | 83 +++++++++++++++++++ .../plus/dashboard/DashMapFragment.java | 15 ++-- 4 files changed, 137 insertions(+), 40 deletions(-) create mode 100644 OsmAnd/res/layout/dash_error_fragment.xml create mode 100644 OsmAnd/src/net/osmand/plus/dashboard/DashErrorFragment.java diff --git a/OsmAnd/res/layout/dash_error_fragment.xml b/OsmAnd/res/layout/dash_error_fragment.xml new file mode 100644 index 0000000000..44216e43ef --- /dev/null +++ b/OsmAnd/res/layout/dash_error_fragment.xml @@ -0,0 +1,37 @@ + + + + + + +