diff --git a/res/values/strings.xml b/res/values/strings.xml index 8ccb8bfd4b0..c63ad6ef4ec 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -2012,6 +2012,10 @@ found in the list of installed applications. Default settings below override application settings Default settings + + Default Engine + + Sets the speech synthesis engine to be used for spoken text Speech rate diff --git a/res/xml/tts_settings.xml b/res/xml/tts_settings.xml index d94d5754cc6..6b1a8433409 100644 --- a/res/xml/tts_settings.xml +++ b/res/xml/tts_settings.xml @@ -37,6 +37,11 @@ + -1 ? newIndex : 0; + } else if (KEY_TTS_DEFAULT_SYNTH.equals(preference.getKey())) { + // TODO: Do a data check here + mDefaultEng = objValue.toString(); + Settings.Secure.putString(getContentResolver(), TTS_DEFAULT_SYNTH, mDefaultEng); + if (mTts != null) { + mTts.setEngineByPackageName(mDefaultEng); + } + Log.v("Settings", "The default synth is: " + objValue.toString()); } return true; @@ -424,4 +437,23 @@ public class TextToSpeechSettings extends PreferenceActivity implements Settings.Secure.putString(resolver, TTS_DEFAULT_VARIANT, DEFAULT_VARIANT_VAL); } + + private void loadEngines() { + ListPreference enginesPref = (ListPreference) findPreference(KEY_TTS_DEFAULT_SYNTH); + + Intent intent = new Intent("android.intent.action.START_TTS_ENGINE"); + + ResolveInfo[] enginesArray = new ResolveInfo[0]; + PackageManager pm = getPackageManager(); + enginesArray = pm.queryIntentActivities(intent, 0).toArray(enginesArray); + CharSequence entries[] = new CharSequence[enginesArray.length]; + CharSequence values[] = new CharSequence[enginesArray.length]; + for (int i = 0; i < enginesArray.length; i++) { + entries[i] = enginesArray[i].loadLabel(pm); + values[i] = enginesArray[i].activityInfo.packageName; + } + enginesPref.setEntries(entries); + enginesPref.setEntryValues(values); + } + }