From 8c3663bbd7fef33734001ef8ec8e7b0f01538616 Mon Sep 17 00:00:00 2001 From: Narayan Kamath Date: Wed, 24 Aug 2011 20:12:26 +0100 Subject: Call setLanguage( ) on the TTS engine before the sample. This makes the sample play faster, and results in a reliable return value from getLanguage(). bug:5207139 Change-Id: Ic6ca4a2f4aed299d35c320ecc3f327579c66471b --- src/com/android/settings/tts/TextToSpeechSettings.java | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'src/com/android') diff --git a/src/com/android/settings/tts/TextToSpeechSettings.java b/src/com/android/settings/tts/TextToSpeechSettings.java index 210cb9c..e8255bf 100644 --- a/src/com/android/settings/tts/TextToSpeechSettings.java +++ b/src/com/android/settings/tts/TextToSpeechSettings.java @@ -192,16 +192,31 @@ public class TextToSpeechSettings extends SettingsPreferenceFragment implements checkVoiceData(mCurrentEngine); } + private void maybeUpdateTtsLanguage(String currentEngine) { + if (currentEngine != null && mTts != null) { + final String localeString = mEnginesHelper.getLocalePrefForEngine( + currentEngine); + if (localeString != null) { + final String[] locale = TtsEngines.parseLocalePref(localeString); + + if (DBG) Log.d(TAG, "Loading language ahead of sample check : " + locale); + mTts.setLanguage(new Locale(locale[0], locale[1], locale[2])); + } + } + } + /** * Ask the current default engine to return a string of sample text to be * spoken to the user. */ private void getSampleText() { String currentEngine = mTts.getCurrentEngine(); - Locale currentLocale = mTts.getLanguage(); if (TextUtils.isEmpty(currentEngine)) currentEngine = mTts.getDefaultEngine(); + maybeUpdateTtsLanguage(currentEngine); + Locale currentLocale = mTts.getLanguage(); + // TODO: This is currently a hidden private API. The intent extras // and the intent action should be made public if we intend to make this // a public API. We fall back to using a canned set of strings if this @@ -220,7 +235,6 @@ public class TextToSpeechSettings extends SettingsPreferenceFragment implements startActivityForResult(intent, GET_SAMPLE_TEXT); } catch (ActivityNotFoundException ex) { Log.e(TAG, "Failed to get sample text, no activity found for " + intent + ")"); - onSampleTextReceived(TextToSpeech.ERROR, null); } } -- cgit v1.1