From c8298717bc3b015ce1dece31d201d7ae7bf37677 Mon Sep 17 00:00:00 2001 From: Charles Chen Date: Wed, 10 Feb 2010 13:58:23 -0800 Subject: [PATCH] Settings for TextToSpeech now uses the results returned by the engine's CheckVoiceData activity to determine which languages are available and whether or not to make "Install Data" clickable. --- .../settings/TextToSpeechSettings.java | 46 +++++++++++++++++-- 1 file changed, 41 insertions(+), 5 deletions(-) diff --git a/src/com/android/settings/TextToSpeechSettings.java b/src/com/android/settings/TextToSpeechSettings.java index 1a97fbf189f..4a2f8c8e680 100644 --- a/src/com/android/settings/TextToSpeechSettings.java +++ b/src/com/android/settings/TextToSpeechSettings.java @@ -38,6 +38,7 @@ import android.provider.Settings.SettingNotFoundException; import android.speech.tts.TextToSpeech; import android.util.Log; +import java.util.ArrayList; import java.util.List; import java.util.Locale; import java.util.StringTokenizer; @@ -84,6 +85,7 @@ public class TextToSpeechSettings extends PreferenceActivity implements private int mDemoStringIndex = 0; private boolean mEnableDemo = false; + private boolean mVoicesMissing = false; private TextToSpeech mTts = null; @@ -278,16 +280,50 @@ public class TextToSpeechSettings extends PreferenceActivity implements */ protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == VOICE_DATA_INTEGRITY_CHECK) { - if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) { - Log.v(TAG, "Voice data check passed"); + // TODO (clchen): Add these extras to TextToSpeech.Engine + ArrayList available = + data.getStringArrayListExtra("TextToSpeech.Engine.EXTRA_AVAILABLE_VOICES"); + ArrayList unavailable = + data.getStringArrayListExtra("TextToSpeech.Engine.EXTRA_UNAVAILABLE_VOICES"); + + if (available.size() > 0){ if (mTts == null) { mTts = new TextToSpeech(this, this); } + ListPreference ttsLanguagePref = + (ListPreference) findPreference("tts_default_lang"); + CharSequence[] entries = new CharSequence[available.size()]; + CharSequence[] entryValues = new CharSequence[available.size()]; + for (int i=0; i 0){ + mVoicesMissing = true; + } else { + mVoicesMissing = false; + } + + updateWidgetState(); } else if (requestCode == GET_SAMPLE_TEXT) { if (resultCode == TextToSpeech.LANG_AVAILABLE) { if (mTts != null) { @@ -377,7 +413,7 @@ public class TextToSpeechSettings extends PreferenceActivity implements mDefaultRatePref.setEnabled(mEnableDemo); mDefaultLocPref.setEnabled(mEnableDemo); - mInstallData.setEnabled(!mEnableDemo); + mInstallData.setEnabled(mVoicesMissing); }