Merge change 6414 into donut

* changes:
  Optimize storing of cached TTS parameters. Initialize the cached language settings with the current Locale.
This commit is contained in:
Android (Google) Code Review
2009-07-07 16:49:41 -07:00

45
core/java/android/speech/tts/TextToSpeech.java Executable file → Normal file
View File

@@ -144,10 +144,10 @@ public class TextToSpeech {
private OnInitListener mInitListener = null; private OnInitListener mInitListener = null;
private boolean mStarted = false; private boolean mStarted = false;
private final Object mStartLock = new Object(); private final Object mStartLock = new Object();
private int mCachedRate = Engine.FALLBACK_TTS_DEFAULT_RATE; /**
private String mCachedLang = Engine.FALLBACK_TTS_DEFAULT_LANG; * Used to store the cached parameters sent along with each synthesis request to the
private String mCachedCountry = Engine.FALLBACK_TTS_DEFAULT_COUNTRY; * TTS service.
private String mCachedVariant = Engine.FALLBACK_TTS_DEFAULT_VARIANT; */
private String[] mCachedParams; private String[] mCachedParams;
/** /**
@@ -163,25 +163,24 @@ public class TextToSpeech {
mContext = context; mContext = context;
mInitListener = listener; mInitListener = listener;
mCachedParams = new String[2*4]; //4 parameters, store key and value mCachedParams = new String[2*4]; // 4 parameters, store key and value
mCachedParams[Engine.TTS_PARAM_POSITION_RATE] = Engine.TTS_KEY_PARAM_RATE; mCachedParams[Engine.TTS_PARAM_POSITION_RATE] = Engine.TTS_KEY_PARAM_RATE;
mCachedParams[Engine.TTS_PARAM_POSITION_LANGUAGE] = Engine.TTS_KEY_PARAM_LANGUAGE; mCachedParams[Engine.TTS_PARAM_POSITION_LANGUAGE] = Engine.TTS_KEY_PARAM_LANGUAGE;
mCachedParams[Engine.TTS_PARAM_POSITION_COUNTRY] = Engine.TTS_KEY_PARAM_COUNTRY; mCachedParams[Engine.TTS_PARAM_POSITION_COUNTRY] = Engine.TTS_KEY_PARAM_COUNTRY;
mCachedParams[Engine.TTS_PARAM_POSITION_VARIANT] = Engine.TTS_KEY_PARAM_VARIANT; mCachedParams[Engine.TTS_PARAM_POSITION_VARIANT] = Engine.TTS_KEY_PARAM_VARIANT;
updateCachedParamArray();
mCachedParams[Engine.TTS_PARAM_POSITION_RATE + 1] =
String.valueOf(Engine.FALLBACK_TTS_DEFAULT_RATE);
// initialize the language cached parameters with the current Locale
Locale defaultLoc = Locale.getDefault();
mCachedParams[Engine.TTS_PARAM_POSITION_LANGUAGE + 1] = defaultLoc.getISO3Language();
mCachedParams[Engine.TTS_PARAM_POSITION_COUNTRY + 1] = defaultLoc.getISO3Country();
mCachedParams[Engine.TTS_PARAM_POSITION_VARIANT + 1] = defaultLoc.getVariant();
initTts(); initTts();
} }
private void updateCachedParamArray() {
mCachedParams[Engine.TTS_PARAM_POSITION_RATE+1] = String.valueOf(mCachedRate);
mCachedParams[Engine.TTS_PARAM_POSITION_LANGUAGE+1] = mCachedLang;
mCachedParams[Engine.TTS_PARAM_POSITION_COUNTRY+1] = mCachedCountry;
mCachedParams[Engine.TTS_PARAM_POSITION_VARIANT+1] = mCachedVariant;
}
private void initTts() { private void initTts() {
mStarted = false; mStarted = false;
@@ -533,9 +532,9 @@ public class TextToSpeech {
} }
try { try {
if (speechRate > 0) { if (speechRate > 0) {
mCachedRate = (int)(speechRate*100); int rate = (int)(speechRate*100);
updateCachedParamArray(); mCachedParams[Engine.TTS_PARAM_POSITION_RATE + 1] = String.valueOf(rate);
result = mITts.setSpeechRate(mCachedRate); result = mITts.setSpeechRate(rate);
} }
} catch (RemoteException e) { } catch (RemoteException e) {
// TTS died; restart it. // TTS died; restart it.
@@ -603,12 +602,12 @@ public class TextToSpeech {
return result; return result;
} }
try { try {
mCachedLang = loc.getISO3Language(); mCachedParams[Engine.TTS_PARAM_POSITION_LANGUAGE + 1] = loc.getISO3Language();
mCachedCountry = loc.getISO3Country(); mCachedParams[Engine.TTS_PARAM_POSITION_COUNTRY + 1] = loc.getISO3Country();
mCachedVariant = loc.getVariant(); mCachedParams[Engine.TTS_PARAM_POSITION_VARIANT + 1] = loc.getVariant();
updateCachedParamArray(); result = mITts.setLanguage(mCachedParams[Engine.TTS_PARAM_POSITION_LANGUAGE + 1],
result = mITts.setLanguage(mCachedLang, mCachedCountry, mCachedVariant); mCachedParams[Engine.TTS_PARAM_POSITION_COUNTRY + 1],
} catch (RemoteException e) { mCachedParams[Engine.TTS_PARAM_POSITION_VARIANT + 1] );
// TTS died; restart it. // TTS died; restart it.
mStarted = false; mStarted = false;
initTts(); initTts();