Fixing bug #2575499 - TextToSpeech Settings did not verify that the
current default language was still supported when the default engine
changes.

Change-Id: I2f4b986311161ceaa9d4b9cf3a495f536d9425cd
diff --git a/src/com/android/settings/TextToSpeechSettings.java b/src/com/android/settings/TextToSpeechSettings.java
index 23959c8..fa9ea58 100644
--- a/src/com/android/settings/TextToSpeechSettings.java
+++ b/src/com/android/settings/TextToSpeechSettings.java
@@ -401,6 +401,28 @@
                 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;
             }