|
|
@@ -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; |
|
|
|
} |
|
|
|
|