Browse Source

TtsService.java: report TextToSpeech.LANG_MISSING_DATA if the engine has not been initialized.

master
Reece H. Dunn 12 years ago
parent
commit
1e52512637
1 changed files with 15 additions and 9 deletions
  1. 15
    9
      android/src/com/reecedunn/espeak/TtsService.java

+ 15
- 9
android/src/com/reecedunn/espeak/TtsService.java View File

@@ -62,6 +62,7 @@ public class TtsService extends TextToSpeechService {

private SpeechSynthesis mEngine;
private SynthesisCallback mCallback;
private boolean mEngineInitialized = false;

private List<Voice> 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;
}


Loading…
Cancel
Save