From cfb2f9d3cbd1deae933b9b36c7c6aa46a6215a19 Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Thu, 30 Oct 2014 12:28:32 +0000 Subject: [PATCH] Fix TextToSpeech,setLanguage on Android 5.0. As of Android 5.0, TextToSpeech.setLanguage calls the new TextToSpeechService.onGetDefaultVoiceNameFor(lang,country,variant) and uses the specified voice name. The default Android 5.0 implementation of onGetDefaultVoiceNameFor does not work with eSpeak. This provides a working implementation. This fixes the TextToSpeechTest.testLanguages tests on Android 5.0. --- android/src/com/reecedunn/espeak/TtsService.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/android/src/com/reecedunn/espeak/TtsService.java b/android/src/com/reecedunn/espeak/TtsService.java index 8d11bbd0..403bc38f 100644 --- a/android/src/com/reecedunn/espeak/TtsService.java +++ b/android/src/com/reecedunn/espeak/TtsService.java @@ -201,7 +201,13 @@ public class TtsService extends TextToSpeechService { @Override public String onGetDefaultVoiceNameFor(String language, String country, String variant) { - return super.onGetDefaultVoiceNameFor(language, country, variant); + final int result = onLoadLanguage(language, country, variant); + switch (result) { + case TextToSpeech.LANG_MISSING_DATA: + case TextToSpeech.LANG_NOT_SUPPORTED: + return null; + } + return mMatchingVoice.name; } @Override