am 377b21e9: Merge change 9502 into donut

Merge commit '377b21e9f531e3fec1a5849453f886b5462e4144'

* commit '377b21e9f531e3fec1a5849453f886b5462e4144':
  Fix bug 2025765.
This commit is contained in:
Android (Google) Code Review
2009-08-03 11:54:24 -07:00
committed by Android Git Automerger

View File

@@ -142,6 +142,8 @@ public class TtsService extends Service implements OnCompletionListener {
private final ReentrantLock synthesizerLock = new ReentrantLock();
private static SynthProxy sNativeSynth = null;
private static Boolean sIsKillingSynth = true;
@Override
public void onCreate() {
super.onCreate();
@@ -152,6 +154,7 @@ public class TtsService extends Service implements OnCompletionListener {
String soLibPath = "/system/lib/libttspico.so";
if (sNativeSynth == null) {
sNativeSynth = new SynthProxy(soLibPath);
sIsKillingSynth = false;
}
mSelf = this;
@@ -172,6 +175,9 @@ public class TtsService extends Service implements OnCompletionListener {
@Override
public void onDestroy() {
super.onDestroy();
sIsKillingSynth = true;
Log.i("TtsService", "TtsService.onDestroy()");
// Don't hog the media player
cleanUpPlayer();
@@ -180,6 +186,7 @@ public class TtsService extends Service implements OnCompletionListener {
// Unregister all callbacks.
mCallbacks.kill();
//Log.i("TtsService", "TtsService.onDestroy() ended");
}
@@ -243,6 +250,9 @@ public class TtsService extends Service implements OnCompletionListener {
private int setSpeechRate(String callingApp, int rate) {
if (sIsKillingSynth) {
return TextToSpeech.ERROR;
}
if (isDefaultEnforced()) {
return sNativeSynth.setSpeechRate(getDefaultRate());
} else {
@@ -252,23 +262,37 @@ public class TtsService extends Service implements OnCompletionListener {
private int setPitch(String callingApp, int pitch) {
if (sIsKillingSynth) {
return TextToSpeech.ERROR;
}
return sNativeSynth.setPitch(pitch);
}
private int isLanguageAvailable(String lang, String country, String variant) {
if (sIsKillingSynth) {
return TextToSpeech.LANG_NOT_SUPPORTED;
}
//Log.v("TtsService", "TtsService.isLanguageAvailable(" + lang + ", " + country + ", " +variant+")");
return sNativeSynth.isLanguageAvailable(lang, country, variant);
}
private String[] getLanguage() {
if (sIsKillingSynth) {
Log.v("TtsService", "killing synth:: aborting getLanguage()");
return null;
}
return sNativeSynth.getLanguage();
}
private int setLanguage(String callingApp, String lang, String country, String variant) {
Log.v("TtsService", "TtsService.setLanguage(" + lang + ", " + country + ", " + variant + ")");
if (sIsKillingSynth) {
Log.v("TtsService", "killing synth:: aborting setLanguage()");
return TextToSpeech.ERROR;
}
if (isDefaultEnforced()) {
return sNativeSynth.setLanguage(getDefaultLanguage(), getDefaultCountry(),
getDefaultLocVariant());
@@ -402,7 +426,12 @@ public class TtsService extends Service implements OnCompletionListener {
}
if ((mCurrentSpeechItem != null) &&
mCurrentSpeechItem.mCallingApp.equals(callingApp)) {
result = sNativeSynth.stop();
if (sIsKillingSynth) {
Log.v("TtsService", "killing synth:: aborting stop()");
result = TextToSpeech.ERROR;
} else {
result = sNativeSynth.stop();
}
mKillList.put(mCurrentSpeechItem, true);
if (mPlayer != null) {
try {
@@ -451,7 +480,12 @@ public class TtsService extends Service implements OnCompletionListener {
if ((mCurrentSpeechItem != null) &&
((mCurrentSpeechItem.mType != SpeechItem.TEXT_TO_FILE) ||
mCurrentSpeechItem.mCallingApp.equals(callingApp))) {
result = sNativeSynth.stop();
if (sIsKillingSynth) {
Log.v("TtsService", "killing synth:: aborting stop()");
result = TextToSpeech.ERROR;
} else {
result = sNativeSynth.stop();
}
mKillList.put(mCurrentSpeechItem, true);
if (mPlayer != null) {
try {
@@ -591,7 +625,9 @@ public class TtsService extends Service implements OnCompletionListener {
if (speechRate.length() > 0){
setSpeechRate("", Integer.parseInt(speechRate));
}
sNativeSynth.speak(speechItem.mText, streamType);
if (!sIsKillingSynth) {
sNativeSynth.speak(speechItem.mText, streamType);
}
}
} catch (InterruptedException e) {
Log.e("TtsService", "TTS speakInternalOnly(): tryLock interrupted");
@@ -660,7 +696,9 @@ public class TtsService extends Service implements OnCompletionListener {
if (speechRate.length() > 0){
setSpeechRate("", Integer.parseInt(speechRate));
}
sNativeSynth.synthesizeToFile(speechItem.mText, speechItem.mFilename);
if (!sIsKillingSynth) {
sNativeSynth.synthesizeToFile(speechItem.mText, speechItem.mFilename);
}
}
} catch (InterruptedException e) {
Log.e("TtsService", "TTS synthToFileInternalOnly(): tryLock interrupted");