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