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



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


private List<Voice> mAvailableVoices; private List<Voice> mAvailableVoices;
private Voice mMatchingVoice = null; private Voice mMatchingVoice = null;


@Override @Override
public void onCreate() { public void onCreate() {
super.onCreate();

if (!CheckVoiceData.hasBaseResources(this)) { if (!CheckVoiceData.hasBaseResources(this)) {
final IntentFilter filter = final IntentFilter filter =
new IntentFilter(DownloadVoiceData.BROADCAST_LANGUAGES_UPDATED); new IntentFilter(DownloadVoiceData.BROADCAST_LANGUAGES_UPDATED);
} }


initializeTtsEngine(); initializeTtsEngine();

// This calls onIsLanguageAvailable() and must run AFTER initialization!
super.onCreate();
} }


/** /**
} }


mEngine = new SpeechSynthesis(this, mSynthCallback); mEngine = new SpeechSynthesis(this, mSynthCallback);
mEngineInitialized = true;
mAvailableVoices = mEngine.getAvailableVoices(); mAvailableVoices = mEngine.getAvailableVoices();
} }




@Override @Override
protected int onIsLanguageAvailable(String language, String country, String variant) { protected int onIsLanguageAvailable(String language, String country, String variant) {
if (!mEngineInitialized) {
return TextToSpeech.LANG_MISSING_DATA;
}

if (mAvailableVoices == null) { if (mAvailableVoices == null) {
Log.e(TAG, "Attempted to check language availability before loading voices!"); Log.e(TAG, "Attempted to check language availability before loading voices!");
return TextToSpeech.LANG_NOT_SUPPORTED; return TextToSpeech.LANG_NOT_SUPPORTED;
mVariant = ((variant == null) ? "" : variant); mVariant = ((variant == null) ? "" : variant);
} }
break; 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; return result;
} }
protected synchronized void onSynthesizeText( protected synchronized void onSynthesizeText(
SynthesisRequest request, SynthesisCallback callback) { SynthesisRequest request, SynthesisCallback callback) {
final int result = onLoadLanguage(request.getLanguage(), request.getCountry(), request.getVariant()); 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; return;
} }



Loading…
Cancel
Save