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:
45
core/java/android/speech/tts/TextToSpeech.java
Executable file → Normal file
45
core/java/android/speech/tts/TextToSpeech.java
Executable file → Normal 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();
|
||||||
|
|||||||
Reference in New Issue
Block a user