OSDN Git Service

Call setLanguage( ) on the TTS engine before the sample.
authorNarayan Kamath <narayan@google.com>
Wed, 24 Aug 2011 19:12:26 +0000 (20:12 +0100)
committerNarayan Kamath <narayan@google.com>
Wed, 24 Aug 2011 19:33:01 +0000 (20:33 +0100)
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

index 210cb9c..e8255bf 100644 (file)
@@ -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);
         }
     }