From 473111bcfca1342fdbd74af10189931a386c8f24 Mon Sep 17 00:00:00 2001 From: Charles Chen Date: Tue, 6 Apr 2010 15:50:42 -0700 Subject: [PATCH] Fixing bug #2575499 - TextToSpeech Settings did not verify that the current default language was still supported when the default engine changes. Change-Id: I2f4b986311161ceaa9d4b9cf3a495f536d9425cd --- .../settings/TextToSpeechSettings.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/com/android/settings/TextToSpeechSettings.java b/src/com/android/settings/TextToSpeechSettings.java index 23959c87ced..fa9ea583fa4 100644 --- a/src/com/android/settings/TextToSpeechSettings.java +++ b/src/com/android/settings/TextToSpeechSettings.java @@ -401,6 +401,28 @@ public class TextToSpeechSettings extends PreferenceActivity implements ttsLanguagePref.setEntries(entries); ttsLanguagePref.setEntryValues(entryValues); mEnableDemo = true; + // Make sure that the default language can be used. + int languageResult = mTts.setLanguage( + new Locale(mDefaultLanguage, mDefaultCountry, mDefaultLocVariant)); + if (languageResult < TextToSpeech.LANG_AVAILABLE){ + Locale currentLocale = Locale.getDefault(); + mDefaultLanguage = currentLocale.getISO3Language(); + mDefaultCountry = currentLocale.getISO3Country(); + mDefaultLocVariant = currentLocale.getVariant(); + languageResult = mTts.setLanguage( + new Locale(mDefaultLanguage, mDefaultCountry, mDefaultLocVariant)); + // If the default Locale isn't supported, just choose the first available + // language so that there is at least something. + if (languageResult < TextToSpeech.LANG_AVAILABLE){ + parseLocaleInfo(ttsLanguagePref.getEntryValues()[0].toString()); + mTts.setLanguage( + new Locale(mDefaultLanguage, mDefaultCountry, mDefaultLocVariant)); + } + ContentResolver resolver = getContentResolver(); + Settings.Secure.putString(resolver, TTS_DEFAULT_LANG, mDefaultLanguage); + Settings.Secure.putString(resolver, TTS_DEFAULT_COUNTRY, mDefaultCountry); + Settings.Secure.putString(resolver, TTS_DEFAULT_VARIANT, mDefaultLocVariant); + } } else { mEnableDemo = false; }