From def7185cf19d48c95b50c2b83503d5cd21a613bf Mon Sep 17 00:00:00 2001 From: Charles Chen Date: Thu, 25 Mar 2010 19:59:50 -0700 Subject: [PATCH] Cherry-picking this fix into Froyo. This fix is part of addressing bug #2548048 Making it possible to determine which TTS engine is currently set as the default by the user. Change-Id: Ifa422f43a33498b94d96811078c0794d64668357 --- core/java/android/speech/tts/ITts.aidl | 4 ++- core/java/android/speech/tts/TextToSpeech.java | 39 ++++++++++++++++++++++ .../TtsService/src/android/tts/TtsService.java | 9 +++++ 3 files changed, 51 insertions(+), 1 deletion(-) diff --git a/core/java/android/speech/tts/ITts.aidl b/core/java/android/speech/tts/ITts.aidl index 2ed660a4f3c3..df8ea0c02585 100755 --- a/core/java/android/speech/tts/ITts.aidl +++ b/core/java/android/speech/tts/ITts.aidl @@ -61,5 +61,7 @@ interface ITts { int playSilence(in String callingApp, in long duration, in int queueMode, in String[] params); - int setEngineByPackageName(in String enginePackageName); + int setEngineByPackageName(in String enginePackageName); + + String getDefaultEngine(); } diff --git a/core/java/android/speech/tts/TextToSpeech.java b/core/java/android/speech/tts/TextToSpeech.java index 80b3a74057eb..69b60dbc2df4 100755 --- a/core/java/android/speech/tts/TextToSpeech.java +++ b/core/java/android/speech/tts/TextToSpeech.java @@ -1340,4 +1340,43 @@ public class TextToSpeech { } } + + /** + * Gets the packagename of the default speech synthesis engine. + * + * @return Packagename of the TTS engine that the user has chosen as their default. + * + * @hide + */ + public String getDefaultEngine() { + synchronized (mStartLock) { + String engineName = ""; + if (!mStarted) { + return engineName; + } + try { + engineName = mITts.getDefaultEngine(); + } catch (RemoteException e) { + // TTS died; restart it. + Log.e("TextToSpeech.java - setEngineByPackageName", "RemoteException"); + e.printStackTrace(); + mStarted = false; + initTts(); + } catch (NullPointerException e) { + // TTS died; restart it. + Log.e("TextToSpeech.java - setEngineByPackageName", "NullPointerException"); + e.printStackTrace(); + mStarted = false; + initTts(); + } catch (IllegalStateException e) { + // TTS died; restart it. + Log.e("TextToSpeech.java - setEngineByPackageName", "IllegalStateException"); + e.printStackTrace(); + mStarted = false; + initTts(); + } finally { + return engineName; + } + } + } } diff --git a/packages/TtsService/src/android/tts/TtsService.java b/packages/TtsService/src/android/tts/TtsService.java index 0d2921e6c4c9..ae48e0eaabff 100755 --- a/packages/TtsService/src/android/tts/TtsService.java +++ b/packages/TtsService/src/android/tts/TtsService.java @@ -1436,6 +1436,15 @@ public class TtsService extends Service implements OnCompletionListener { return mSelf.setEngine(packageName); } + /** + * Returns the packagename of the default speech synthesis engine. + * + * @return Packagename of the TTS engine that the user has chosen as their default. + */ + public String getDefaultEngine() { + return mSelf.getDefaultEngine(); + } + }; } -- 2.11.0