summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/tts
diff options
context:
space:
mode:
authorPrzemyslaw Szczepaniak <pszczepaniak@google.com>2013-09-10 10:35:57 +0100
committerPrzemyslaw Szczepaniak <pszczepaniak@google.com>2013-09-10 10:35:57 +0100
commiteb306b4c15d721c69255f02497d2bcebff0c265f (patch)
treea6bb52043653d300607e9496d104c00a77fa35f1 /src/com/android/settings/tts
parentc184ed7683f3d56ca545ac91c15c747f5460addc (diff)
downloadpackages_apps_Settings-eb306b4c15d721c69255f02497d2bcebff0c265f.zip
packages_apps_Settings-eb306b4c15d721c69255f02497d2bcebff0c265f.tar.gz
packages_apps_Settings-eb306b4c15d721c69255f02497d2bcebff0c265f.tar.bz2
Fix for empty "Listen to an example" string.
Because of bug in previous TTS related change (bugfix for hiding "Play TTS sample" if default language is not supported), settings stopped to call getSampleText() when it was established that current default language is supported. This change makes sure that getSampleText() is always called if language is supported. Bug: 10672535 Change-Id: I83bf7056e12ddbe2322b6a3f04552802037626aa
Diffstat (limited to 'src/com/android/settings/tts')
-rw-r--r--src/com/android/settings/tts/TextToSpeechSettings.java38
1 files changed, 28 insertions, 10 deletions
diff --git a/src/com/android/settings/tts/TextToSpeechSettings.java b/src/com/android/settings/tts/TextToSpeechSettings.java
index 52ee4fd..0ff7f4f 100644
--- a/src/com/android/settings/tts/TextToSpeechSettings.java
+++ b/src/com/android/settings/tts/TextToSpeechSettings.java
@@ -104,7 +104,17 @@ public class TextToSpeechSettings extends SettingsPreferenceFragment implements
private TtsEngines mEnginesHelper = null;
private String mSampleText = "";
+
+ /**
+ * Default locale used by selected TTS engine, null if not connected to any engine.
+ */
private Locale mCurrentDefaultLocale;
+
+ /**
+ * List of available locals of selected TTS engine, as returned by
+ * {@link TextToSpeech.Engine#ACTION_CHECK_TTS_DATA} activity. If empty, then activity
+ * was not yet called.
+ */
private List<String> mAvailableStrLocals;
/**
@@ -263,7 +273,9 @@ public class TextToSpeechSettings extends SettingsPreferenceFragment implements
}
private boolean evaluateDefaultLocale() {
- if (mCurrentDefaultLocale == null) {
+ // Check if we are connected to the engine, and CHECK_VOICE_DATA returned list
+ // of available languages.
+ if (mCurrentDefaultLocale == null || mAvailableStrLocals == null) {
return false;
}
int defaultAvailable = mTts.setLanguage(mCurrentDefaultLocale);
@@ -277,18 +289,17 @@ public class TextToSpeechSettings extends SettingsPreferenceFragment implements
if (!TextUtils.isEmpty(mCurrentDefaultLocale.getVariant())) {
defaultLocaleStr += "-" + mCurrentDefaultLocale.getVariant();
}
- if (mAvailableStrLocals != null) {
- for (String loc : mAvailableStrLocals) {
- if (loc.equalsIgnoreCase(defaultLocaleStr)) {
- notInAvailableLangauges = false;
- break;
- }
+
+ for (String loc : mAvailableStrLocals) {
+ if (loc.equalsIgnoreCase(defaultLocaleStr)) {
+ notInAvailableLangauges = false;
+ break;
}
}
if (defaultAvailable == TextToSpeech.LANG_NOT_SUPPORTED ||
defaultAvailable == TextToSpeech.LANG_MISSING_DATA ||
- mAvailableStrLocals == null || notInAvailableLangauges) {
+ notInAvailableLangauges) {
if (DBG) Log.d(TAG, "Default locale for this TTS engine is not supported.");
updateEngineStatus(R.string.tts_status_not_supported);
updateWidgetState(false);
@@ -557,8 +568,15 @@ public class TextToSpeechSettings extends SettingsPreferenceFragment implements
Settings.Secure.putString(getContentResolver(), TTS_DEFAULT_SYNTH, engine);
mAvailableStrLocals = data.getStringArrayListExtra(
- TextToSpeech.Engine.EXTRA_AVAILABLE_VOICES);
- evaluateDefaultLocale();
+ TextToSpeech.Engine.EXTRA_AVAILABLE_VOICES);
+ if (mAvailableStrLocals == null) {
+ Log.e(TAG, "Voice data check complete, but no available voices found");
+ // Set mAvailableStrLocals to empty list
+ mAvailableStrLocals = new ArrayList<String>();
+ }
+ if (evaluateDefaultLocale()) {
+ getSampleText();
+ }
final int engineCount = mEnginePreferenceCategory.getPreferenceCount();
for (int i = 0; i < engineCount; ++i) {