From 1e52512637cdc2b986a012a8851c70d1bc46cf37 Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Mon, 11 Feb 2013 00:49:10 +0000 Subject: [PATCH] TtsService.java: report TextToSpeech.LANG_MISSING_DATA if the engine has not been initialized. --- .../src/com/reecedunn/espeak/TtsService.java | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/android/src/com/reecedunn/espeak/TtsService.java b/android/src/com/reecedunn/espeak/TtsService.java index dd6f2fd2..fe233541 100644 --- a/android/src/com/reecedunn/espeak/TtsService.java +++ b/android/src/com/reecedunn/espeak/TtsService.java @@ -62,6 +62,7 @@ public class TtsService extends TextToSpeechService { private SpeechSynthesis mEngine; private SynthesisCallback mCallback; + private boolean mEngineInitialized = false; private List mAvailableVoices; private Voice mMatchingVoice = null; @@ -72,6 +73,8 @@ public class TtsService extends TextToSpeechService { @Override public void onCreate() { + super.onCreate(); + if (!CheckVoiceData.hasBaseResources(this)) { final IntentFilter filter = new IntentFilter(DownloadVoiceData.BROADCAST_LANGUAGES_UPDATED); @@ -85,9 +88,6 @@ public class TtsService extends TextToSpeechService { } initializeTtsEngine(); - - // This calls onIsLanguageAvailable() and must run AFTER initialization! - super.onCreate(); } /** @@ -100,6 +100,7 @@ public class TtsService extends TextToSpeechService { } mEngine = new SpeechSynthesis(this, mSynthCallback); + mEngineInitialized = true; mAvailableVoices = mEngine.getAvailableVoices(); } @@ -113,6 +114,10 @@ public class TtsService extends TextToSpeechService { @Override protected int onIsLanguageAvailable(String language, String country, String variant) { + if (!mEngineInitialized) { + return TextToSpeech.LANG_MISSING_DATA; + } + if (mAvailableVoices == null) { Log.e(TAG, "Attempted to check language availability before loading voices!"); return TextToSpeech.LANG_NOT_SUPPORTED; @@ -175,9 +180,10 @@ public class TtsService extends TextToSpeechService { mVariant = ((variant == null) ? "" : variant); } break; - default: - Log.e(TAG, "Failed to load language {language='" + language + "', country='" + country - + "', variant='" + variant + "'}, result=" + result); + case TextToSpeech.LANG_NOT_SUPPORTED: + Log.e(TAG, "Unsupported language {language='" + language + "', country='" + country + + "', variant='" + variant + "'}"); + break; } return result; } @@ -193,9 +199,9 @@ public class TtsService extends TextToSpeechService { protected synchronized void onSynthesizeText( SynthesisRequest request, SynthesisCallback callback) { final int result = onLoadLanguage(request.getLanguage(), request.getCountry(), request.getVariant()); - - // Return immediately if the language is not available. - if (result == TextToSpeech.LANG_NOT_SUPPORTED) { + switch (result) { + case TextToSpeech.LANG_MISSING_DATA: + case TextToSpeech.LANG_NOT_SUPPORTED: return; }