[android] Add voice test in settings menu

Signed-off-by: Gonzalo Pesquero <gpesquero@yahoo.es>
This commit is contained in:
Gonzalo Pesquero 2023-08-28 09:17:31 +02:00 committed by Alexander Borsuk
parent a8590022df
commit 286d016a24
6 changed files with 177 additions and 4 deletions

View file

@ -40,6 +40,8 @@ import app.organicmaps.util.Utils;
import app.organicmaps.util.log.LogsManager;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -57,6 +59,11 @@ public class SettingsPrefsFragment extends BaseXmlSettingsFragment
private ListPreference mTtsPrefLanguages;
@Nullable
private Preference mTtsLangInfo;
@Nullable
private Preference mTtsVoiceTest;
private List<String> mTtsTestStringArray;
private int mTestStringIndex;
private PreferenceScreen mPreferenceScreen;
@ -79,6 +86,8 @@ public class SettingsPrefsFragment extends BaseXmlSettingsFragment
mTtsPrefLanguages.setEnabled(false);
if (mTtsLangInfo != null)
mTtsLangInfo.setSummary(R.string.prefs_languages_information_off);
if (mTtsVoiceTest != null)
mTtsVoiceTest.setEnabled(false);
root.setSummary(R.string.off);
@ -92,6 +101,8 @@ public class SettingsPrefsFragment extends BaseXmlSettingsFragment
root.setSummary(R.string.on);
if (mTtsPrefEnabled != null)
mTtsPrefEnabled.setTitle(R.string.on);
if (mTtsVoiceTest != null)
mTtsVoiceTest.setEnabled(true);
if (mCurrentLanguage != null && mCurrentLanguage.downloaded)
{
@ -144,7 +155,7 @@ public class SettingsPrefsFragment extends BaseXmlSettingsFragment
updateTts();
}
// Use this method only on TTS screen. Prerequisites: mTtsPrefEnabled, mTtsPrefLanguages and mTtsLangInfo are not null.
// Use this method only on TTS screen. Prerequisites: mTtsPrefEnabled, mTtsPrefLanguages, mTtsVoiceTest and mTtsLangInfo are not null.
private void updateTts()
{
enableListeners(false);
@ -163,6 +174,7 @@ public class SettingsPrefsFragment extends BaseXmlSettingsFragment
mTtsPrefEnabled.setTitle(R.string.off);
mTtsPrefLanguages.setEnabled(false);
mTtsPrefLanguages.setSummary(null);
mTtsVoiceTest.setEnabled(false);
mTtsLangInfo.setSummary(R.string.prefs_languages_information_off);
root.setSummary(R.string.off);
@ -174,6 +186,7 @@ public class SettingsPrefsFragment extends BaseXmlSettingsFragment
mTtsPrefEnabled.setChecked(enabled);
mTtsPrefEnabled.setSummary(null);
mTtsPrefEnabled.setTitle(enabled ? R.string.on : R.string.off);
mTtsVoiceTest.setEnabled(enabled);
mTtsLangInfo.setSummary(enabled ? R.string.prefs_languages_information
: R.string.prefs_languages_information_off);
@ -200,6 +213,7 @@ public class SettingsPrefsFragment extends BaseXmlSettingsFragment
mTtsPrefLanguages.setSummary(available ? mCurrentLanguage.name : null);
mTtsPrefLanguages.setValue(available ? mCurrentLanguage.internalCode : null);
mTtsPrefEnabled.setChecked(available && TtsPlayer.isEnabled());
mTtsVoiceTest.setEnabled(enabled && available && TtsPlayer.isEnabled());
enableListeners(true);
}
@ -263,6 +277,25 @@ public class SettingsPrefsFragment 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));
mTtsVoiceTest = getPreference(getString(R.string.pref_tts_test_voice));
// Initialize TTS test strings.
mTtsTestStringArray = Arrays.asList(getResources().getStringArray(R.array.app_tips));
Collections.shuffle(mTtsTestStringArray);
mTestStringIndex = 0;
if (mTtsVoiceTest != null)
{
mTtsVoiceTest.setOnPreferenceClickListener(pref -> {
Utils.showSnackbar(getView(), getString(R.string.pref_tts_playing_test_voice));
TtsPlayer.INSTANCE.speak(mTtsTestStringArray.get(mTestStringIndex));
mTestStringIndex++;
if (mTestStringIndex >= mTtsTestStringArray.size())
mTestStringIndex = 0;
return true;
});
}
initTtsLangInfoLink();
updateTts();
}

View file

@ -186,7 +186,7 @@ public enum TtsPlayer implements Initializable<Context>
return (INSTANCE.mTts != null && !INSTANCE.mUnavailable && !INSTANCE.mInitializing);
}
private void speak(String textToSpeak)
public void speak(String textToSpeak)
{
if (Config.isTtsEnabled())
try

View file

@ -19,6 +19,7 @@
<string name="pref_tts_screen" translatable="false">TtsScreen</string>
<string name="pref_tts_enabled" translatable="false">TtsEnabled</string>
<string name="pref_tts_language" translatable="false">TtsLanguage</string>
<string name="pref_tts_test_voice" translatable="false">TtsTestVoice</string>
<string name="pref_tts_info" translatable="false">TtsInfo</string>
<string name="pref_tts_info_link" translatable="false">TtsInfoLink</string>
<string name="pref_speed_cameras" translatable="false">SpeedCameras</string>

View file

@ -1,5 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="app_tips">
<item>@string/app_tip_00</item>
</string-array>
<string-array name="measument_units">
<item>@string/kilometres</item>
<item>@string/miles</item>

View file

@ -136,20 +136,24 @@
android:title="@string/pref_tts_language_title"
app:singleLineTitle="false"
android:order="2"/>
<Preference
android:key="@string/pref_tts_test_voice"
android:title="@string/pref_tts_test_voice_title"
android:order="3"/>
<Preference
android:key="@string/pref_tts_info"
android:selectable="false"
android:persistent="false"
android:enabled="false"
android:summary="@string/prefs_languages_information"
android:order="3"/>
android:order="4"/>
<Preference
android:key="@string/pref_tts_info_link"
android:selectable="true"
android:persistent="false"
android:enabled="true"
android:summary="@string/prefs_languages_information_off_link"
android:order="4"/>
android:order="5"/>
</androidx.preference.PreferenceScreen>
<ListPreference
android:key="@string/pref_speed_cameras"

View file

@ -5256,6 +5256,94 @@
zh-Hans = 语音语言
zh-Hant = 語音語言
[pref_tts_test_voice_title]
comment = Settings «Route» category: «Test Voice Directions» title
tags = android
en = Test Voice Directions (TTS, Text-To-Speech)
ar = اختبار الاتجاهات الصوتية (TTS، تحويل النص إلى كلام)
be = Тэставыя галасавыя ўказанні (TTS, Text-To-Speech)
bg = Тестване на гласови указания (TTS, Text-To-Speech)
ca = Prova les indicacions de veu (TTS, Text-To-Speech)
cs = Testování hlasových pokynů (TTS, Text-To-Speech)
da = Test stemmeanvisninger (TTS, Text-To-Speech)
de = Teste Sprachanweisungen (TTS, Text-To-Speech)
el = Δοκιμή φωνητικών οδηγιών (TTS, Text-To-Speech)
es = Probar indicaciones de voz (TTS, Text-To-Speech)
es-MX = Pruebe las instrucciones de voz (TTS, Text-To-Speech)
et = Testi hääljuhised (TTS, Text-To-Speech)
eu = Probatu ahots bidezko jarraibideak (TTS, Text-To-Speech)
fa = تست مسیرهای صوتی (TTS، تبدیل متن به گفتار)
fi = Testaa puheohjeita (TTS, Text-To-Speech).
fr = Teste les instructions vocales (TTS, Text-To-Speech)
he = בדיקת הנחיות קוליות (TTS, טקסט לדיבור)
hi = ध्वनि निर्देशों का परीक्षण करें (टीटीएस, टेक्स्ट-टू-स्पीच)
hu = Hangutasítások tesztelése (TTS, Text-To-Speech)
id = Menguji petunjuk suara (TTS, Text-To-Speech)
it = Prova le indicazioni vocali (TTS, Text-To-Speech)
ja = 音声案内をテストするTTS、Text-To-Speech
ko = 음성 길 안내 테스트(TTS, 텍스트 음성 변환)
mr = चाचणी आवाज दिशानिर्देश (TTS, टेक्स्ट-टू-स्पीच)
nb = Test taleanvisninger (TTS, tekst-til-tale)
nl = Test gesproken aanwijzingen (TTS, Text-To-Speech)
pl = Testuj wskazówki głosowe (TTS, Text-To-Speech)
pt = Testa as direcções de voz (TTS, Text-To-Speech)
pt-BR = Testar instruções de voz (TTS, Text-To-Speech)
ro = Testarea indicațiilor vocale (TTS, Text-To-Speech)
ru = Проверить голосовые подсказки (TTS, Text-To-Speech).
sk = Testovanie hlasových pokynov (TTS, Text-To-Speech)
sv = Testa röstinstruktioner (TTS, Text-To-Speech)
sw = Jaribu maelekezo ya sauti (TTS, maandishi-kwa-hotuba)
th = ทดสอบเส้นทางด้วยเสียง (TTS, การอ่านออกเสียงข้อความ)
tr = Sesli yönlendirmeleri test edin (TTS, Text-To-Speech)
uk = Тестування голосових підказок (TTS, Text-To-Speech)
vi = Kiểm tra chỉ đường bằng giọng nói (TTS, chuyển văn bản thành giọng nói)
zh-Hans = 测试语音指令TTSText-To-Speech
zh-Hant = 測試語音指令TTS、文本轉語音
[pref_tts_playing_test_voice]
comment = Settings «Route» category: Pop-up message when clicking «Test Voice Directions»
tags = android
en = Check the volume or system Text-To-Speech settings if you don't hear the voice now.
ar = تحقق من مستوى الصوت أو إعدادات تحويل النص إلى كلام في النظام إذا كنت لا تسمع الصوت الآن.
be = Праверце гучнасць або сістэмныя налады пераўтварэння тэксту ў маўленне, калі вы зараз не чуеце голас.
bg = Проверете силата на звука или системните настройки за преобразуване на текст в реч, ако сега не чувате гласа.
ca = Comproveu el volum o la configuració de text a veu del sistema si ara no escolteu la veu.
cs = Pokud nyní hlas neslyšíte, zkontrolujte nastavení hlasitosti nebo převodu textu na řeč v systému.
da = Tjek lydstyrken eller systemets tekst-til-tale-indstillinger, hvis du ikke kan høre stemmen nu.
de = Überprüfe die Lautstärke oder die Text-to-speech Einstellungen des Systems, wenn du die Stimme jetzt nicht hörst.
el = Ελέγξτε την ένταση ήχου ή τις ρυθμίσεις του συστήματος text-to-speech αν δεν ακούτε τη φωνή τώρα.
es = Compruebe el volumen o la configuración de texto a voz del sistema si ahora no oye la voz.
es-MX = Verifique el volumen o la configuración de texto a voz del sistema si no escucha la voz ahora.
et = Kontrollige helitugevust või süsteemi teksti kõnetamise seadeid, kui te ei kuule nüüd häält.
eu = Egiaztatu bolumena edo sistemaren testu-ahotsaren ezarpenak ahotsa entzuten ez baduzu.
fa = اگر اکنون صدا را نمی شنوید، میزان صدا یا تنظیمات تبدیل متن به گفتار سیستم را بررسی کنید.
fi = Tarkista äänenvoimakkuus tai järjestelmän tekstistä puheeksi -asetukset, jos ääni ei kuulu nyt.
fr = Vérifie le volume ou les paramètres de synthèse vocale du système si tu n'entends pas la voix maintenant.
he = בדוק את עוצמת הקול או את הגדרות הטקסט לדיבור של המערכת אם אינך שומע את הקול כעת.
hi = यदि आपको अभी आवाज नहीं सुनाई देती है तो वॉल्यूम या सिस्टम टेक्स्ट-टू-स्पीच सेटिंग्स की जांच करें।
hu = Ellenőrizze a hangerőt vagy a rendszer szöveg-beszéd beállításait, ha most nem hallja a hangot.
id = Periksa pengaturan volume atau pengaturan teks-ke-ucapan sistem jika anda tidak mendengar suara sekarang.
it = Controlla il volume o le impostazioni del sistema di sintesi vocale se ora non senti la voce.
ja = 音声が聞こえない場合は、音量またはシステムの音声合成設定を確認する。
ko = 지금 음성이 들리지 않으면 볼륨 또는 시스템 텍스트 음성 변환 설정을 확인하세요.
mr = तुम्हाला आता आवाज ऐकू येत नसल्यास व्हॉल्यूम किंवा सिस्टम टेक्स्ट-टू-स्पीच सेटिंग्ज तपासा.
nb = Kontroller volumet eller systeminnstillingene for tekst-til-tale hvis du ikke hører stemmen nå.
nl = Controleer het volume of de tekst-naar-spraak instellingen van het systeem als je de stem nu niet hoort.
pl = Jeśli nie słyszysz głosu, sprawdź głośność lub systemowe ustawienia zamiany tekstu na mowę.
pt = Verifica o volume ou as definições de conversão de texto em voz do sistema se não ouvires a voz agora.
pt-BR = Verifique o volume ou as configurações de conversão de texto em fala do sistema se você não estiver ouvindo a voz agora.
ro = Dacă nu auziți vocea acum, verificați volumul sau setările sistemului text-to-speech.
ru = Проверьте громкость или системные настройки преобразования текста в речь, если сейчас ничего не слышно.
sk = Ak teraz nepočujete hlas, skontrolujte hlasitosť alebo systémové nastavenia prevodu textu na reč.
sv = Kontrollera volymen eller systemets text-till-tal-inställningar om du inte hör rösten nu.
sw = Angalia mipangilio ya sauti au ya mfumo ya kubadilisha maandishi-hadi-hotuba ikiwa husikii sauti sasa.
th = ตรวจสอบระดับเสียงหรือการตั้งค่าการอ่านออกเสียงข้อความของระบบหากคุณไม่ได้ยินเสียงในตอนนี้
tr = Sesi şimdi duymuyorsanız ses seviyesini veya sistem metin okuma ayarlarını kontrol edin.
uk = Якщо ви не чуєте голос, перевірте гучність або налаштування системи перетворення тексту на мовлення.
vi = Kiểm tra cài đặt âm lượng hoặc chuyển văn bản sang giọng nói của hệ thống nếu bây giờ bạn không nghe thấy giọng nói.
zh-Hans = 如果现在听不到语音,请检查音量或系统文本到语音设置。
zh-Hant = 如果您現在聽不到聲音,請檢查音量或系統文本轉語音設置。
[pref_tts_unavailable]
comment = Settings «Route» category: «Tts unavailable» subtitle
tags = android
@ -26763,3 +26851,46 @@
comment = A number of bookmarks and a number of tracks, separated by comma, like: 1 bookmark, 5 tracks
tags = android
en = %@, %@
[app_tip_00]
comment = Tip #00
tags = android
en = Thank you for using our community-built maps!
ar = شكرًا لك على استخدام الخرائط التي أنشأها مجتمعنا!
be = Дзякуй за выкарыстанне нашых карт, створаных супольнасцю!
bg = Благодарим ви, че използвате нашите карти, създадени от общността!
ca = Gràcies per utilitzar els nostres mapes creats per la comunitat!
cs = Děkujeme, že používáte naše komunitní mapy!
da = Tak, fordi du bruger vores community-byggede kort!
de = Danke, dass du unsere von der Gemeinschaft erstellten Karten benutzt!
el = Σας ευχαριστούμε που χρησιμοποιείτε τους χάρτες μας που δημιουργήθηκαν από την κοινότητα!
es = ¡Gracias por utilizar nuestros mapas creados por la comunidad!
et = Aitäh, et kasutate meie kogukonna koostatud kaarte!
eu = Eskerrik asko gure komunitateak eraikitako mapak erabiltzeagatik!
fa = از شما برای استفاده از نقشه های ساخته شده توسط جامعه سپاسگزاریم!
fi = Kiitos, että käytät yhteisön laatimia karttojamme!
fr = Merci d'utiliser nos cartes créées par la communauté !
he = תודה על השימוש במפות שנבנו בקהילה שלנו!
hi = हमारे समुदाय-निर्मित मानचित्रों का उपयोग करने के लिए धन्यवाद!
hu = Köszönjük, hogy használja a közösség által készített térképeinket!
id = Terima kasih telah menggunakan peta buatan komunitas kami!
it = Grazie per aver utilizzato le nostre mappe costruite dalla comunità!
ja = 私たちのコミュニティが作った地図をご利用いただき、ありがとうございます!
ko = 커뮤니티에서 제작한 지도를 이용해 주셔서 감사합니다!
mr = आमचे समुदाय-निर्मित नकाशे वापरल्याबद्दल धन्यवाद!
nb = Takk for at du bruker kartene vi har laget i fellesskap!
nl = Bedankt voor het gebruik van onze door de community gemaakte kaarten!
pl = Dziękujemy za korzystanie z naszych map stworzonych przez społeczność!
pt = Obrigado por utilizares os nossos mapas construídos pela comunidade!
pt-BR = Obrigado por você usar nossos mapas criados pela comunidade!
ro = Vă mulțumim că utilizați hărțile create de comunitatea noastră!
ru = Спасибо, что пользуетесь нашими картами, созданными сообществом!
sk = Ďakujeme, že používate naše mapy vytvorené komunitou!
sv = Tack för att du använder våra gemenskapsbyggda kartor!
sw = Asante kwa kutumia ramani zetu zilizojengwa na jumuiya!
th = ขอขอบคุณที่ใช้แผนที่ที่สร้างโดยชุมชนของเรา!
tr = Topluluk tarafından oluşturulan haritalarımızı kullandığınız için teşekkür ederiz!
uk = Дякуємо, що користуєтесь нашими мапами, створеними спільнотою!
vi = Cảm ơn bạn đã sử dụng bản đồ do cộng đồng xây dựng của chúng tôi!
zh-Hans = 感谢您使用我们的社区地图!
zh-Hant = 感謝您使用我們社區構建的地圖!