diff --git a/src/com/android/settings/TextToSpeechSettings.java b/src/com/android/settings/TextToSpeechSettings.java index 93613b7d8f5..34ce2515a66 100644 --- a/src/com/android/settings/TextToSpeechSettings.java +++ b/src/com/android/settings/TextToSpeechSettings.java @@ -683,6 +683,8 @@ public class TextToSpeechSettings extends SettingsPreferenceFragment implements private void loadEngines() { List engines = mEnginesHelper.getEngines(); + updateUserEnabledEngines(engines); + ArrayList entries = new ArrayList(); ArrayList values = new ArrayList(); StringBuilder enabledEngines = new StringBuilder(); @@ -692,12 +694,9 @@ public class TextToSpeechSettings extends SettingsPreferenceFragment implements if (mEnginesHelper.isEngineEnabled(engine.name)) { entries.add(engine.label); values.add(engine.name); - if (enabledEngines.length() > 0) enabledEngines.append(' '); - enabledEngines.append(engine.name); } } - ContentResolver resolver = getContentResolver(); - Settings.Secure.putString(resolver, TTS_ENABLED_PLUGINS, enabledEngines.toString()); + CharSequence entriesArray[] = new CharSequence[entries.size()]; CharSequence valuesArray[] = new CharSequence[values.size()]; @@ -717,4 +716,26 @@ public class TextToSpeechSettings extends SettingsPreferenceFragment implements } } + /* + * Write out the list of engines enabled by the user to a + * shared preference. + */ + private void updateUserEnabledEngines(List engines) { + StringBuilder enginesList = new StringBuilder(); + for (EngineInfo engine : engines) { + if (isEngineUserEnabled(engine.name)) { + if (enginesList.length() > 0) enginesList.append(' '); + enginesList.append(engine.name); + } + } + + ContentResolver resolver = getContentResolver(); + Settings.Secure.putString(resolver, TTS_ENABLED_PLUGINS, enginesList.toString()); + } + + private boolean isEngineUserEnabled(String engineName) { + String enginePref = KEY_PLUGIN_ENABLED_PREFIX + engineName; + return getPreferenceManager().getSharedPreferences().getBoolean(enginePref, false); + } + }