diff options
author | Android (Google) Code Review <android-gerrit@google.com> | 2009-08-03 11:54:24 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2009-08-03 11:54:24 -0700 |
commit | 7a17cf3418eb0cbd23804f51921b7dd66713ad03 (patch) | |
tree | aa30072c5a8ea071cc9bdfa6acd048b9fa869cc6 /packages/TtsService | |
parent | 20b153bffc57711534c0f581258e06fa86afd67a (diff) | |
parent | 377b21e9f531e3fec1a5849453f886b5462e4144 (diff) | |
download | frameworks_base-7a17cf3418eb0cbd23804f51921b7dd66713ad03.zip frameworks_base-7a17cf3418eb0cbd23804f51921b7dd66713ad03.tar.gz frameworks_base-7a17cf3418eb0cbd23804f51921b7dd66713ad03.tar.bz2 |
am 377b21e9: Merge change 9502 into donut
Merge commit '377b21e9f531e3fec1a5849453f886b5462e4144'
* commit '377b21e9f531e3fec1a5849453f886b5462e4144':
Fix bug 2025765.
Diffstat (limited to 'packages/TtsService')
-rwxr-xr-x | packages/TtsService/src/android/tts/TtsService.java | 46 |
1 files changed, 42 insertions, 4 deletions
diff --git a/packages/TtsService/src/android/tts/TtsService.java b/packages/TtsService/src/android/tts/TtsService.java index 1b99d32..70960b5 100755 --- a/packages/TtsService/src/android/tts/TtsService.java +++ b/packages/TtsService/src/android/tts/TtsService.java @@ -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"); |