diff --git a/android/eSpeakTests/src/com/reecedunn/espeak/test/TextToSpeechServiceTest.java b/android/eSpeakTests/src/com/reecedunn/espeak/test/TextToSpeechServiceTest.java index b8687ad1..7604fc90 100644 --- a/android/eSpeakTests/src/com/reecedunn/espeak/test/TextToSpeechServiceTest.java +++ b/android/eSpeakTests/src/com/reecedunn/espeak/test/TextToSpeechServiceTest.java @@ -169,40 +169,41 @@ public class TextToSpeechServiceTest extends AndroidTestCase assertThat(mService.onGetDefaultVoiceNameFor("eng", "", ""), is("en")); checkLanguage(mService.onGetLanguage(), "vie", "VNM", "saigon"); assertThat(mService.getActiveVoice(), is(notNullValue())); - assertThat(mService.getActiveVoice().name, is("en")); + assertThat(mService.getActiveVoice().name, is("vi-sgn")); assertThat(mService.onGetDefaultVoiceNameFor("eng", "USA", ""), is("en-us")); checkLanguage(mService.onGetLanguage(), "vie", "VNM", "saigon"); assertThat(mService.getActiveVoice(), is(notNullValue())); - assertThat(mService.getActiveVoice().name, is("en-us")); + assertThat(mService.getActiveVoice().name, is("vi-sgn")); assertThat(mService.onGetDefaultVoiceNameFor("eng", "GBR", "scotland"), is("en-sc")); checkLanguage(mService.onGetLanguage(), "vie", "VNM", "saigon"); assertThat(mService.getActiveVoice(), is(notNullValue())); - assertThat(mService.getActiveVoice().name, is("en-sc")); + assertThat(mService.getActiveVoice().name, is("vi-sgn")); assertThat(mService.onGetDefaultVoiceNameFor("eng", "USA", "rp"), is("en-us")); checkLanguage(mService.onGetLanguage(), "vie", "VNM", "saigon"); assertThat(mService.getActiveVoice(), is(notNullValue())); - assertThat(mService.getActiveVoice().name, is("en-us")); + assertThat(mService.getActiveVoice().name, is("vi-sgn")); assertThat(mService.onGetDefaultVoiceNameFor("eng", "", "scotland"), is("en")); checkLanguage(mService.onGetLanguage(), "vie", "VNM", "saigon"); assertThat(mService.getActiveVoice(), is(notNullValue())); - assertThat(mService.getActiveVoice().name, is("en")); + assertThat(mService.getActiveVoice().name, is("vi-sgn")); - assertThat(mService.onGetDefaultVoiceNameFor("eng", "FRA", "rp"), is("en-uk-rp")); + assertThat(mService.onGetDefaultVoiceNameFor("eng", "FRA", "rp"), is("en")); checkLanguage(mService.onGetLanguage(), "vie", "VNM", "saigon"); assertThat(mService.getActiveVoice(), is(notNullValue())); - assertThat(mService.getActiveVoice().name, is("en-uk-rp")); + assertThat(mService.getActiveVoice().name, is("vi-sgn")); - assertThat(mService.onGetDefaultVoiceNameFor("eng", "FRA", ""), is("en-uk-rp")); + assertThat(mService.onGetDefaultVoiceNameFor("eng", "FRA", ""), is("en")); checkLanguage(mService.onGetLanguage(), "vie", "VNM", "saigon"); assertThat(mService.getActiveVoice(), is(notNullValue())); - assertThat(mService.getActiveVoice().name, is("en-uk-rp")); + assertThat(mService.getActiveVoice().name, is("vi-sgn")); assertThat(mService.onGetDefaultVoiceNameFor("ine", "", ""), is(nullValue())); checkLanguage(mService.onGetLanguage(), "vie", "VNM", "saigon"); - assertThat(mService.getActiveVoice(), is(nullValue())); + assertThat(mService.getActiveVoice(), is(notNullValue())); + assertThat(mService.getActiveVoice().name, is("vi-sgn")); } } diff --git a/android/src/com/reecedunn/espeak/TtsService.java b/android/src/com/reecedunn/espeak/TtsService.java index 2b112361..aa90eb2b 100644 --- a/android/src/com/reecedunn/espeak/TtsService.java +++ b/android/src/com/reecedunn/espeak/TtsService.java @@ -166,6 +166,18 @@ public class TtsService extends TextToSpeechService { } } + private Pair getDefaultVoiceFor(String language, String country, String variant) { + final Pair match = findVoice(language, country, variant); + switch (match.second) { + case TextToSpeech.LANG_AVAILABLE: + return new Pair<>(findVoice(language, "", "").first, match.second); + case TextToSpeech.LANG_COUNTRY_AVAILABLE: + return new Pair<>(findVoice(language, country, "").first, match.second); + default: + return match; + } + } + @Override protected int onIsLanguageAvailable(String language, String country, String variant) { final Pair match = findVoice(language, country, variant); @@ -208,13 +220,8 @@ public class TtsService extends TextToSpeechService { @Override public String onGetDefaultVoiceNameFor(String language, String country, String variant) { - final int result = onIsLanguageAvailable(language, country, variant); - switch (result) { - case TextToSpeech.LANG_MISSING_DATA: - case TextToSpeech.LANG_NOT_SUPPORTED: - return null; - } - return mMatchingVoice.name; + final Voice match = getDefaultVoiceFor(language, country, variant).first; + return (match == null) ? null : match.name; } @Override