From 42229259a6fca8851db74dc1c0ecbab2d3fb788d Mon Sep 17 00:00:00 2001 From: Charles Chen Date: Mon, 29 Mar 2010 18:30:30 -0700 Subject: [PATCH] Fix for bug 2548048 - it was impossible for applications to discover if their TTS settings were being overridden by the user or not. Change-Id: I28856a1b79c9455435671d13ed614a1ccb4e95ea --- core/java/android/speech/tts/ITts.aidl | 4 +- .../java/android/speech/tts/TextToSpeech.java | 41 +++++++++++++++++++ .../src/android/tts/TtsService.java | 10 +++++ 3 files changed, 54 insertions(+), 1 deletion(-) diff --git a/core/java/android/speech/tts/ITts.aidl b/core/java/android/speech/tts/ITts.aidl index df8ea0c025859..2fd367208b697 100755 --- a/core/java/android/speech/tts/ITts.aidl +++ b/core/java/android/speech/tts/ITts.aidl @@ -63,5 +63,7 @@ interface ITts { int setEngineByPackageName(in String enginePackageName); - String getDefaultEngine(); + String getDefaultEngine(); + + boolean areDefaultsEnforced(); } diff --git a/core/java/android/speech/tts/TextToSpeech.java b/core/java/android/speech/tts/TextToSpeech.java index 69b60dbc2df42..eeb42c42596a2 100755 --- a/core/java/android/speech/tts/TextToSpeech.java +++ b/core/java/android/speech/tts/TextToSpeech.java @@ -1379,4 +1379,45 @@ public class TextToSpeech { } } } + + + /** + * Returns whether or not the user is forcing their defaults to override the + * Text-To-Speech settings set by applications. + * + * @return Whether or not defaults are enforced. + * + * @hide + */ + public boolean areDefaultsEnforced() { + synchronized (mStartLock) { + boolean defaultsEnforced = false; + if (!mStarted) { + return defaultsEnforced; + } + try { + defaultsEnforced = mITts.areDefaultsEnforced(); + } catch (RemoteException e) { + // TTS died; restart it. + Log.e("TextToSpeech.java - areDefaultsEnforced", "RemoteException"); + e.printStackTrace(); + mStarted = false; + initTts(); + } catch (NullPointerException e) { + // TTS died; restart it. + Log.e("TextToSpeech.java - areDefaultsEnforced", "NullPointerException"); + e.printStackTrace(); + mStarted = false; + initTts(); + } catch (IllegalStateException e) { + // TTS died; restart it. + Log.e("TextToSpeech.java - areDefaultsEnforced", "IllegalStateException"); + e.printStackTrace(); + mStarted = false; + initTts(); + } finally { + return defaultsEnforced; + } + } + } } diff --git a/packages/TtsService/src/android/tts/TtsService.java b/packages/TtsService/src/android/tts/TtsService.java index ae48e0eaabfff..530ca5773e62c 100755 --- a/packages/TtsService/src/android/tts/TtsService.java +++ b/packages/TtsService/src/android/tts/TtsService.java @@ -1445,6 +1445,16 @@ public class TtsService extends Service implements OnCompletionListener { return mSelf.getDefaultEngine(); } + /** + * Returns whether or not the user is forcing their defaults to override the + * Text-To-Speech settings set by applications. + * + * @return Whether or not defaults are enforced. + */ + public boolean areDefaultsEnforced() { + return mSelf.isDefaultEnforced(); + } + }; }