diff options
| -rw-r--r-- | core/java/android/speech/tts/TextToSpeechService.java | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/core/java/android/speech/tts/TextToSpeechService.java b/core/java/android/speech/tts/TextToSpeechService.java index 717dde8c3e71..ddd32521891d 100644 --- a/core/java/android/speech/tts/TextToSpeechService.java +++ b/core/java/android/speech/tts/TextToSpeechService.java @@ -55,6 +55,8 @@ public abstract class TextToSpeechService extends Service { private CallbackMap mCallbacks; + private int mDefaultAvailability = TextToSpeech.LANG_NOT_SUPPORTED; + @Override public void onCreate() { if (DBG) Log.d(TAG, "onCreate()"); @@ -71,7 +73,8 @@ public abstract class TextToSpeechService extends Service { mCallbacks = new CallbackMap(); // Load default language - onLoadLanguage(getDefaultLanguage(), getDefaultCountry(), getDefaultVariant()); + mDefaultAvailability = onLoadLanguage(getDefaultLanguage(), + getDefaultCountry(), getDefaultVariant()); } @Override @@ -651,17 +654,43 @@ public abstract class TextToSpeechService extends Service { return onGetLanguage(); } + /* + * If defaults are enforced, then no language is "available" except + * perhaps the default language selected by the user. + */ public int isLanguageAvailable(String lang, String country, String variant) { + if (areDefaultsEnforced()) { + if (isDefault(lang, country, variant)) { + return mDefaultAvailability; + } else { + return TextToSpeech.LANG_NOT_SUPPORTED; + } + } return onIsLanguageAvailable(lang, country, variant); } + /* + * There is no point loading a non default language if defaults + * are enforced. + */ public int loadLanguage(String lang, String country, String variant) { + if (areDefaultsEnforced()) { + if (isDefault(lang, country, variant)) { + return mDefaultAvailability; + } else { + return TextToSpeech.LANG_NOT_SUPPORTED; + } + } return onLoadLanguage(lang, country, variant); } public void setCallback(String packageName, ITextToSpeechCallback cb) { mCallbacks.setCallback(packageName, cb); } + + private boolean isDefault(String lang, String country, String variant) { + return Locale.getDefault().equals(new Locale(lang, country, variant)); + } }; private class CallbackMap extends RemoteCallbackList<ITextToSpeechCallback> { |