diff --git a/android/app/src/main/java/app/organicmaps/settings/VoiceInstructionsSettingsFragment.java b/android/app/src/main/java/app/organicmaps/settings/VoiceInstructionsSettingsFragment.java index 5274f5def2..ab3f86b5c2 100644 --- a/android/app/src/main/java/app/organicmaps/settings/VoiceInstructionsSettingsFragment.java +++ b/android/app/src/main/java/app/organicmaps/settings/VoiceInstructionsSettingsFragment.java @@ -3,17 +3,14 @@ package app.organicmaps.settings; import android.content.ActivityNotFoundException; import android.content.Intent; import android.content.res.Configuration; +import android.net.Uri; import android.os.Bundle; import android.speech.tts.TextToSpeech; -import android.text.Spannable; -import android.text.SpannableString; -import android.text.style.ForegroundColorSpan; import android.view.View; import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; import androidx.preference.ListPreference; import androidx.preference.Preference; import androidx.preference.SeekBarPreference; @@ -48,9 +45,6 @@ public class VoiceInstructionsSettingsFragment extends BaseXmlSettingsFragment private SeekBarPreference mTtsVolume; @NonNull @SuppressWarnings("NotNullFieldNotInitialized") - private Preference mTtsLangInfo; - @NonNull - @SuppressWarnings("NotNullFieldNotInitialized") private Preference mTtsVoiceTest; private List mTtsTestStringArray; private int mTestStringIndex; @@ -67,12 +61,10 @@ public class VoiceInstructionsSettingsFragment extends BaseXmlSettingsFragment TtsPlayer.setEnabled(false); mTtsPrefLanguages.setEnabled(false); mTtsVolume.setEnabled(false); - mTtsLangInfo.setSummary(R.string.prefs_languages_information_off); mTtsVoiceTest.setEnabled(false); return true; } - mTtsLangInfo.setSummary(R.string.prefs_languages_information); mTtsVolume.setEnabled(true); mTtsVoiceTest.setEnabled(true); @@ -116,7 +108,6 @@ public class VoiceInstructionsSettingsFragment extends BaseXmlSettingsFragment mTtsPrefEnabled = getPreference(getString(R.string.pref_tts_enabled)); mTtsPrefLanguages = getPreference(getString(R.string.pref_tts_language)); - mTtsLangInfo = getPreference(getString(R.string.pref_tts_info)); Preference mTtsOpenSystemSettings = getPreference(getString(R.string.pref_tts_open_system_settings)); mTtsOpenSystemSettings.setOnPreferenceClickListener(pref -> { @@ -132,10 +123,27 @@ public class VoiceInstructionsSettingsFragment extends BaseXmlSettingsFragment { CharSequence noTtsSettingString = getString(R.string.pref_tts_no_system_tts); Toast.makeText(super.getSettingsActivity(), noTtsSettingString, Toast.LENGTH_LONG).show(); - return false; } + return false; }); + Preference mTtsOpenGuide = getPreference(getString(R.string.prefs_tts_info_guide_link)); + mTtsOpenGuide.setOnPreferenceClickListener(pref -> { + try + { + final Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(getText(R.string.tts_info_guide_link).toString())); + startActivity(browserIntent); + return true; + } + catch(ActivityNotFoundException e) + { + CharSequence noTtsSettingString = getString(R.string.browser_not_available); + Toast.makeText(super.getSettingsActivity(), noTtsSettingString, Toast.LENGTH_LONG).show(); + } + return false; + }); + + mTtsVoiceTest = getPreference(getString(R.string.pref_tts_test_voice)); mTtsVoiceTest.setOnPreferenceClickListener(pref -> { if (mTtsTestStringArray == null) @@ -150,7 +158,6 @@ public class VoiceInstructionsSettingsFragment extends BaseXmlSettingsFragment }); initVolume(); - initTtsLangInfoLink(); initSpeedCamerasPrefs(); updateTts(); } @@ -213,15 +220,12 @@ public class VoiceInstructionsSettingsFragment extends BaseXmlSettingsFragment mTtsPrefLanguages.setSummary(null); mTtsVolume.setEnabled(false); mTtsVoiceTest.setEnabled(false); - mTtsLangInfo.setSummary(R.string.prefs_languages_information_off); enableListeners(true); return; } final boolean enabled = TtsPlayer.isEnabled(); - mTtsLangInfo.setSummary(enabled ? R.string.prefs_languages_information - : R.string.prefs_languages_information_off); final CharSequence[] entries = new CharSequence[languages.size()]; final CharSequence[] values = new CharSequence[languages.size()]; @@ -285,24 +289,6 @@ public class VoiceInstructionsSettingsFragment extends BaseXmlSettingsFragment TtsPlayer.INSTANCE.setVolume(volume); } - private void initTtsLangInfoLink() - { - final Preference ttsLangInfoLink = getPreference(getString(R.string.pref_tts_info_link)); - final String ttsLinkText = getString(R.string.prefs_languages_information_off_link); - final Spannable link = new SpannableString(ttsLinkText + "↗"); - // Set link color. - link.setSpan(new ForegroundColorSpan(ContextCompat.getColor(requireContext(), - UiUtils.getStyledResourceId(requireContext(), androidx.appcompat.R.attr.colorAccent))), - 0, ttsLinkText.length(), 0); - ttsLangInfoLink.setSummary(link); - - final String ttsInfoUrl = requireActivity().getString(R.string.tts_info_link); - ttsLangInfoLink.setOnPreferenceClickListener(preference -> { - Utils.openUrl(requireContext(), ttsInfoUrl); - return false; - }); - } - private void initSpeedCamerasPrefs() { final ListPreference pref = getPreference(getString(R.string.pref_tts_speed_cameras)); diff --git a/android/app/src/main/res/layout/custompref_add_link_fragment.xml b/android/app/src/main/res/layout/custompref_add_link_fragment.xml new file mode 100644 index 0000000000..fe0f714cae --- /dev/null +++ b/android/app/src/main/res/layout/custompref_add_link_fragment.xml @@ -0,0 +1,18 @@ + + + + \ No newline at end of file diff --git a/android/app/src/main/res/layout/custompref_no_bottom_pad.xml b/android/app/src/main/res/layout/custompref_no_bottom_pad.xml new file mode 100644 index 0000000000..d45fd3009e --- /dev/null +++ b/android/app/src/main/res/layout/custompref_no_bottom_pad.xml @@ -0,0 +1,23 @@ + + + + + \ No newline at end of file diff --git a/android/app/src/main/res/values/donottranslate.xml b/android/app/src/main/res/values/donottranslate.xml index bb025796c6..5f505957f4 100644 --- a/android/app/src/main/res/values/donottranslate.xml +++ b/android/app/src/main/res/values/donottranslate.xml @@ -24,8 +24,6 @@ TtsInfo TtsInfoLink SpeedCameras - - https://mapsme.zendesk.com/hc/en-us/articles/208628985-How-can-I-check-TTS-settings-on-my-Android-device- RoutingOptions AutoDownloadMap 3D diff --git a/android/app/src/main/res/xml/prefs_voice_instructions.xml b/android/app/src/main/res/xml/prefs_voice_instructions.xml index 6e4d25642a..4ed35ecb67 100644 --- a/android/app/src/main/res/xml/prefs_voice_instructions.xml +++ b/android/app/src/main/res/xml/prefs_voice_instructions.xml @@ -16,20 +16,14 @@ android:key="@string/pref_tts_test_voice" android:title="@string/pref_tts_test_voice_title" /> + android:title="@string/pref_tts_open_system_settings" + android:summary="@string/prefs_tts_system_setup" /> - + android:layout="@layout/custompref_add_link_fragment" + android:key="@string/prefs_tts_info_guide_link" + android:title="@string/prefs_tts_info_guide_link"/> Hizkuntza eta sarrera > Hizkera > Hizketarako testurako aukerak. Hemen ahots-sintesiaren ezarpenak kudea ditzakezu (adibidez, hizkuntza pakete bat deskargatu, konexiorik gabe erabiltzeko) edo testu-hizketarako beste motor bat hauta dezakezu. - fa = برای بعضی از زبان‌ها، شما باید speech synthesizer یا یک بسته زبان دیگر را از فروشگاه برنامه (بازار Google Play، Galaxy Store) نصب کنید. \n تنظیمات دستگاه خود را باز کنید. → زبان و ورودی → گفتار → خروجی متن به گفتار. می توانید تنظیمات برای ترکیب گفتار (به عنوان مثال، بسته‌های زبان را برای استفاده آفلاین دانلود کنید) را مدیریت کنید و یک موتور دیگر متن به گفتار را انتخاب کنید. - fi = Joidenkin kielien osalta sinun täytyy asentaa toinen puhesyntetisaattori tai lisäkielipaketti sovelluskaupasta (Google Play, Galaxy Store, App Gallery, FDroid). Avaa laitteen asetukset → Kieli ja syöttötapa → Puhe → Teksistä puheeksi -toisto. Täällä voit hallita puhesynteesin asetuksia (esimerkiksi ladata offline-tilassa käytettävän kielipaketin) ja valita toisen tekstistä puheeksi -moottorin. - fr = Pour certaines langues, il vous faudra installer un autre logiciel de synthèse vocale ou un pack de langue supplémentaire depuis l’app store (Google Play, Galaxy Store, App Gallery, FDroid). Ouvrez les paramètres de votre appareil → Langue et saisie → Reconnaissance vocale → Saisie vocale. Ici, vous pouvez gérer les paramètres pour la synthèse vocale (par exemple, télécharger un pack de langue pour une utilisation en mode hors ligne) et sélectionner un autre moteur de saisie vocale. - hi = कुछ भाषाओं के लिए, आपको ऐप स्टोर (Google Play, Galaxy Store, App Gallery, FDroid) से एक स्पीच सिंथेसाइज़र या एक अतिरिक्त भाषा पैक इंस्टॉल करना होगा।\nअपने डिवाइस की सेटिंग्स खोलें → भाषा और इनपुट → स्पीच → टेक्स्ट टू स्पीच आउटपुट.\nयहां आप वाक् संश्लेषण के लिए सेटिंग्स प्रबंधित कर सकते हैं (उदाहरण के लिए, ऑफ़लाइन उपयोग के लिए भाषा पैक डाउनलोड करें) और एक अन्य टेक्स्ट-टू-स्पीच इंजन का चयन कर सकते हैं। - hu = Egyes nyelveknél másik beszédszintetizátort vagy további nyelvi csomagot kell telepítenie az alkalmazás-áruházból (Google Play, Galaxy Store, App Gallery, FDroid). Nyissa meg a készülék beállításait → Nyelv és bevitel → Beszéd → Szöveg-beszéd átalakító kimenet. Itt kezelheti a beszédszintézis beállításokat (például nyelvi csomag letöltése kapcsolat nélküli használatra) és másik szövegfelolvasót jelölhe tki. - id = Untuk beberapa bahasa, Anda perlu menginstal synthesizer suara atau paket bahasa tambahan dari toko aplikasi (Google Play, Galaxy Store, App Gallery, FDroid).\nBuka pengaturan perangkat Anda → Language and input (Bahasa dan input) → Speech (Suara) → Text to speech (Teks ke suara).\nDi sini, Anda dapat mengelola pengaturan untuk sintesis suara (contohnya, mengunduh paket bahasa untuk penggunaan tanpa internet) dan memilih mesin tekske suara lain. - it = Per alcune lingue, sarà necessario installare un altro sintetizzatore vocale o un language pack aggiuntivo dall'app store (Google Play, Galaxy Store, App Gallery, FDroid).\nApri le impostazioni del tuo dispositivo → Lingua e inserimento → Da testo a voce → Motore sintesi vocale.\nQui puoi gestire le impostazioni di sintesi vocale (ad esempio, scaricare una lingua per l'utilizzo offline) e selezionare un altro motore di sintesi vocale. - ja = いくつかの言語では、アプリストア(Google PlayやGalaxy Storeなど)からその他の音声合成または追加の言語パックをインストールする必要があります。お使いのデバイスで [設定] → [言語と入力] → [音声] → [音声出力] を開いてください。ここで音声合成の設定 (たとえば、オフラインで使用する言語パックのダウンロードなど) を管理し、別の音声合成エンジンを選択することができます。 - ko = 일부 언어의 경우 앱 스토어(Google Play, Galaxy Store, App Gallery, FDroid)에서 다른 음성 합성기 또는 추가 언어 팩을 설치해야 합니다.\n장치의 설정 → 언어 및 입력 → 음성 → 텍스트-음성 변환 출력을 엽니다.\n여기서 음성 합성에 대한 설정을 관리하고(예: 오프라인 사용을 위한 언어 팩 다운로드) 다른 텍스트-음성 변환 엔진을 선택할 수 있습니다. - lt = Kai kurioms kalboms jums reikės įdiegti šnekos sintezatorių arba papildomą kalbos paketą iš programėlių parduotuvės (Play parduotuvė, Galaxy parduotuvė, Programėlių galerija, FDroid).\nAtidarykite įrenginio nustatymus → Kalbos ir įvestis → Kalba → Teksto į kalbą išvestis.\nČia galite tvarkyti nustatymus šnekos sintezatoriui (pavyzdžiui, atsisiųsti kalbos paketą) ir pasirinkti kitą teksto į kalbą variklį. - mr = काही भाषांसाठी, तुम्हाला अँप स्टोअर (Google Play, Galaxy Store, App Gallery, FDroid) वरून स्पीच मिश्रक किंवा अतिरिक्त भाषा संच इन्स्टॉल करावे लागतील.\nतुमच्या उपकरणाची सेटिंग → भाषा आणि इनपुट → स्पीच → "टेक्स्ट टू स्पीच आउटपुट" उघडा.\nयेथे तुम्ही स्पीच मिश्रणासाठी सेटिंग व्यवस्थापित करू शकता (उदाहरणार्थ, ऑफलाइन वापरासाठी भाषा संच डाउनलोड करा) आणि दुसरे टेक्स्ट-टू-स्पीच इंजिन निवडा. - nb = For enkelte språk er det nødvendig å installere en annen talesyntese eller en ekstra språkpakke fra appbutikken (Google Play, Galaxy Store, App Gallery, FDroid).\nGå til enhetens innstillinger → Språk og input → Tale → Tekst til tale output.\nHer kan du administrere innstillingene for talesyntese (for eksempel laste ned språkpakke for offline bruk) og velge en annen tekst-til-tale-motor. - nl = Voor sommige talen dient u een andere spraaksynthesesoftware of een aanvullende taalpakket te installeren van de app store (Google Play, Galaxy Store, App Gallery, FDroid).\nOpen de instellingen van uw toestel → Taal en invoer → Spraak → Uitvoer voor tekst-naar-spraak.\nHier kunt u instellingen voor spraaksynthese beheren (bijvoorbeeld taalpakket downloaden voor offline gebruik) en een andere tekst-naar-spraak engine selecteren. - pl = W przypadku niektórych języków wymagana będzie instalacja innego syntezatora lub pakietu językowego ze strony aplikacji (Google Play, Galaxy Store, App Gallery, FDroid). Otwórz ustawienia urządzenia → Język i klawiatura → Mowa → Przetwarzanie tekstu na mowę.\nMożesz w tym miejscu zarządzać ustawieniami syntezy mowy (np. pobrać pakiet językowy do stosowania offline) i wybrać inny silnik przetwarzania tekstu na mowę. - pt = Para alguns idiomas, precisará de instalar outro sintetizador de voz ou um pacote de idiomas adicional a partir da loja de aplicações (Google Play, Galaxy Store, App Gallery, FDroid). Abra as Configurações do seu dispositivo → Idioma e entrada → Voz → Saída de texto para voz. Aqui pode gerir as configurações de síntese de voz (por exemplo, transferir um pacote de idioma para poder utilizá-lo sem estar ligado à Internet) ou selecionar outro motor de texto para voz. - ro = Pentru unele limbi trebuie să instalezi alt sintetizator de voce sau un pachet lingvistic suplimentar din Magazinul de aplicații (Google Play, Galaxy Store, App Gallery, FDroid).\nDeschide setările dispozitivului → Limbă → Transformare text în vorbire → Motor preferat.\nAici poți alege motorul de transformare a textului în vorbire și poți descărca o limbă pentru utilizare fără internet. - ru = Для некоторых языков, возможно, необходимо установить дополнительный синтезатор речи (TTS) из магазина приложений (Google Play, Galaxy Store, App Gallery, FDroid).\nЧтобы настроить синтезатор речи, перейдите в Настройки → Язык и ввод → Синтез речи.\nЗдесь можно установить дополнительные языковые пакеты или выбрать синтезатор речи. - sk = Pre niektoré jazyky bude potrebné nainštalovať syntetizátor reči alebo balík doplnkového jazyka z obchodu s aplikáciami (Google Play, Galaxy Store, App Gallery, FDroid). Otvorte nastavenia zariadenia → Jazyk a vstup → Reč → Prevod textu na reč. Tu môžete spravovať nastavenia pre syntézu reči (napríklad stiahnuť jazykový balík pre použitie v režime offline) a vybrať iný jazyk. - sv = För vissa språk måste du installera en annan talsyntes eller ett annat språkpaket från appbutiken (Google Play Market, Galaxy Store).\nÖppna inställningarna på enheten → Språk och inmatning → Tal → Text till tal-uppspelning.\nHär kan du hantera inställningarna för talsyntes (till exempel, ladda ned språkpaket för användning offline) och välja en annan text till tal-motor. - sw = Kwa baadhi ya lugha, utahitaji kusakinisha programu nyingine ya kusanidi usemi au kifurushi cha ziada cha lugha kutoka kwenye duka la programu-tumizi (Google Play, Galaxy Store, App Gallery, FDroid).\nFungua mipangilio ya kifaa chako → Lugha na Ingizo → Usemi → Tokeo la maandishi kuwa usemi.\nHapa unaweza kusimamia usanidi wa usemi (kwa mfano, kupakua kifurushi cha lugha ili utumie nje ya mtandao) na uchague injini nyingine ya maandishi-kuwa-usemi. - th = สำหรับบางภาษาคุณจำเป็นต้องติดตั้งตัวสังเคราะห์เสียงหรือชุดภาษาเพิ่มเติมจากแอปสโตร์ (Google Play, Galaxy Store, App Gallery, FDroid)\nเปิดการตั้งค่าของเครื่องคุณ → ภาษาและการป้อนข้อมูล → คำพูด → เอาต์พุตการอ่านออกเสียง\nที่นี่คุณสามารถจัดการการตั้งค่าสำหรับการสังเคราะห์เสียง (ตัวอย่างเช่น ดาวน์โหลดชุดภาษาสำหรับใช้งานออฟไลน์) และเลือกเครื่องมืออ่านออกเสียงข้อความตัวอื่นได้ - tr = Bazı diller için uygulama mağazasından (Google Play, Galaxy Store, App Gallery, FDroid) farklı bir konuşma sentezleyicisi veya ek bir dil paketi yüklemeniz gerekebilir. Cihaz ayarları → Dil ve Giriş → Konuşma → Metin Okuma seçeneğini açın. Buradan konuşma sentezi ayarlarını yönetebilir (örneğin, çevrimdışı kullanım için bir dil paketini karşıdan yükleyebilir) ve başka bir metin okuma motorunu seçebilirsiniz. - uk = Для деяких мов вам знадобиться встановити інший додаток для синтезу мовлення або додатковий мовний пакет з магазину додатків (Google Play, Galaxy Store, App Gallery, FDroid).\nВідкрийте налаштування пристрою → Мови та введення → Мовлення → Синтез мовлення.\nТут ви можете здійснювати управління налаштуваннями синтезу мовлення (наприклад, завантажити мовний пакет для використання офлайн) або вибрати інший програмний рушій для синтезу мовлення. - vi = Đối với một số ngôn ngữ, bạn sẽ cần cài đặt một trình tổng hợp lời nói khác hoặc một gói ngôn ngữ bổ sung từ cửa hàng ứng dụng (Google Play, Galaxy Store, App Gallery, FDroid).\nMở cài đặt của thiết bị → Ngôn ngữ và nhập liệu → Lời nói → Đầu ra văn bản sang lời nói.\nTại đây bạn có thể quản lý các cài đặt tổng hợp lời nói (ví dụ, tải về các gói ngôn ngữ để sử dụng ngoại tuyến) và chọn một công cụ chuyển đổi văn bản sang lời nói khác. - zh-Hans = 对于某些语言,您需要从应用商店(Google Play Market、Galaxy Store)中安装其他语音合成器或语言包。\n打开您的设备的设置 → 语言和输入法 → 语音 → 文字转语音 (TTS) 输出。\n您可以在这里管理语音合成的设置(例如,下载语言包供离线使用)和选择其他文字转语音引擎。 - zh-Hant = 對於某些語言,您將需要從 App 商店 (Google Play 商店, Galaxy Store) 安裝其他語音合成器或額外的語言套件。\n開啟您裝置的設定 → 語言與輸入 → 語音 → 文字轉換語音輸出。\n在這裡,您可以管理語音合成器的設定(例如,下載語言套件以供離線使用),並選取其他文字轉換語音引擎。 - - [prefs_languages_information_off_link] - tags = android - en = For more information please check this guide. + en = For more information please check this guide. ↗ af = Sien hierdie gids vir meer inligting ar = لمزيد من المعلومات الرجاء مراجعة هذا الدليل. az = Əlavə məlumat üçün bu təlimatı nəzərdən keçirin. @@ -28415,6 +28374,13 @@ tr = https://wiki.openstreetmap.org/wiki/Tr:About uk = https://wiki.openstreetmap.org/wiki/Uk:Про_проект + [tts_info_guide_link] + comment = Link to OM TTS setup guide + tags = android + en = https://organicmaps.app/faq/text-to-speech-android-tts/ + es = https://organicmaps.app/es/faq/text-to-speech-android-tts/ + ru = https://organicmaps.app/ru/faq/%D1%81%D0%B8%D0%BD%D1%82%D0%B5%D0%B7-%D1%80%D0%B5%D1%87%D0%B8-tts-%D0%BD%D0%B0-android/ + [comma_separated_pair] comment = A number of bookmarks and a number of tracks, separated by comma, like: 1 bookmark, 5 tracks tags = android