Exposing the ability to select a default TTS engine to the
user by adding it into Settings.
This commit is contained in:
@@ -2012,6 +2012,10 @@ found in the list of installed applications.</string>
|
|||||||
<string name="use_default_tts_settings_summary">Default settings below override application settings</string>
|
<string name="use_default_tts_settings_summary">Default settings below override application settings</string>
|
||||||
<!-- On main TTS Settings screen, section header for default TTS settings -->
|
<!-- On main TTS Settings screen, section header for default TTS settings -->
|
||||||
<string name="tts_default_settings_section">Default settings</string>
|
<string name="tts_default_settings_section">Default settings</string>
|
||||||
|
<!-- On main TTS Settings screen, in default settings section, setting default synthesis engine for synthesized voice -->
|
||||||
|
<string name="tts_default_synth_title">Default Engine</string>
|
||||||
|
<!-- On main TTS Settings screen, summary for default synthesis engine for synthesized voice -->
|
||||||
|
<string name="tts_default_synth_summary">Sets the speech synthesis engine to be used for spoken text</string>
|
||||||
<!-- On main TTS Settings screen, in default settings section, setting default speech rate for synthesized voice -->
|
<!-- On main TTS Settings screen, in default settings section, setting default speech rate for synthesized voice -->
|
||||||
<string name="tts_default_rate_title">Speech rate</string>
|
<string name="tts_default_rate_title">Speech rate</string>
|
||||||
<!-- On main TTS Settings screen, summary for default speech rate for synthesized voice -->
|
<!-- On main TTS Settings screen, summary for default speech rate for synthesized voice -->
|
||||||
|
@@ -37,6 +37,11 @@
|
|||||||
|
|
||||||
<PreferenceCategory
|
<PreferenceCategory
|
||||||
android:title="@string/tts_default_settings_section">
|
android:title="@string/tts_default_settings_section">
|
||||||
|
<ListPreference
|
||||||
|
android:key="tts_default_synth"
|
||||||
|
android:title="@string/tts_default_synth_title"
|
||||||
|
android:summary="@string/tts_default_synth_summary"
|
||||||
|
android:persistent="false" />
|
||||||
|
|
||||||
<ListPreference
|
<ListPreference
|
||||||
android:key="tts_default_rate"
|
android:key="tts_default_rate"
|
||||||
|
@@ -55,6 +55,7 @@ public class TextToSpeechSettings extends PreferenceActivity implements
|
|||||||
private static final String KEY_TTS_DEFAULT_LANG = "tts_default_lang";
|
private static final String KEY_TTS_DEFAULT_LANG = "tts_default_lang";
|
||||||
private static final String KEY_TTS_DEFAULT_COUNTRY = "tts_default_country";
|
private static final String KEY_TTS_DEFAULT_COUNTRY = "tts_default_country";
|
||||||
private static final String KEY_TTS_DEFAULT_VARIANT = "tts_default_variant";
|
private static final String KEY_TTS_DEFAULT_VARIANT = "tts_default_variant";
|
||||||
|
private static final String KEY_TTS_DEFAULT_SYNTH = "tts_default_synth";
|
||||||
// TODO move default Locale values to TextToSpeech.Engine
|
// TODO move default Locale values to TextToSpeech.Engine
|
||||||
private static final String DEFAULT_LANG_VAL = "eng";
|
private static final String DEFAULT_LANG_VAL = "eng";
|
||||||
private static final String DEFAULT_COUNTRY_VAL = "USA";
|
private static final String DEFAULT_COUNTRY_VAL = "USA";
|
||||||
@@ -70,6 +71,7 @@ public class TextToSpeechSettings extends PreferenceActivity implements
|
|||||||
private CheckBoxPreference mUseDefaultPref = null;
|
private CheckBoxPreference mUseDefaultPref = null;
|
||||||
private ListPreference mDefaultRatePref = null;
|
private ListPreference mDefaultRatePref = null;
|
||||||
private ListPreference mDefaultLocPref = null;
|
private ListPreference mDefaultLocPref = null;
|
||||||
|
private ListPreference mDefaultSynthPref = null;
|
||||||
private String mDefaultLanguage = null;
|
private String mDefaultLanguage = null;
|
||||||
private String mDefaultCountry = null;
|
private String mDefaultCountry = null;
|
||||||
private String mDefaultLocVariant = null;
|
private String mDefaultLocVariant = null;
|
||||||
@@ -156,7 +158,10 @@ public class TextToSpeechSettings extends PreferenceActivity implements
|
|||||||
mUseDefaultPref.setChecked(useDefault == 1);
|
mUseDefaultPref.setChecked(useDefault == 1);
|
||||||
mUseDefaultPref.setOnPreferenceChangeListener(this);
|
mUseDefaultPref.setOnPreferenceChangeListener(this);
|
||||||
|
|
||||||
// Default engine
|
// Default synthesis engine
|
||||||
|
mDefaultSynthPref = (ListPreference) findPreference(KEY_TTS_DEFAULT_SYNTH);
|
||||||
|
loadEngines();
|
||||||
|
mDefaultSynthPref.setOnPreferenceChangeListener(this);
|
||||||
String engine = Settings.Secure.getString(resolver, TTS_DEFAULT_SYNTH);
|
String engine = Settings.Secure.getString(resolver, TTS_DEFAULT_SYNTH);
|
||||||
if (engine == null) {
|
if (engine == null) {
|
||||||
// TODO move FALLBACK_TTS_DEFAULT_SYNTH to TextToSpeech
|
// TODO move FALLBACK_TTS_DEFAULT_SYNTH to TextToSpeech
|
||||||
@@ -297,6 +302,14 @@ public class TextToSpeechSettings extends PreferenceActivity implements
|
|||||||
int newIndex = mDefaultLocPref.findIndexOfValue((String)objValue);
|
int newIndex = mDefaultLocPref.findIndexOfValue((String)objValue);
|
||||||
Log.v("Settings", " selected is " + newIndex);
|
Log.v("Settings", " selected is " + newIndex);
|
||||||
mDemoStringIndex = newIndex > -1 ? newIndex : 0;
|
mDemoStringIndex = newIndex > -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;
|
return true;
|
||||||
@@ -424,4 +437,23 @@ public class TextToSpeechSettings extends PreferenceActivity implements
|
|||||||
Settings.Secure.putString(resolver, TTS_DEFAULT_VARIANT, DEFAULT_VARIANT_VAL);
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user