Browse Source

Fix the TtsService.onGetDefaultVoiceNameFor behaviour.

master
Reece H. Dunn 9 years ago
parent
commit
8f6f0966f6

+ 11
- 10
android/eSpeakTests/src/com/reecedunn/espeak/test/TextToSpeechServiceTest.java View File

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

+ 14
- 7
android/src/com/reecedunn/espeak/TtsService.java View File

@@ -166,6 +166,18 @@ public class TtsService extends TextToSpeechService {
}
}

private Pair<Voice, Integer> getDefaultVoiceFor(String language, String country, String variant) {
final Pair<Voice, Integer> 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<Voice, Integer> 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

Loading…
Cancel
Save