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

assertThat(mService.onGetDefaultVoiceNameFor("eng", "", ""), is("en")); assertThat(mService.onGetDefaultVoiceNameFor("eng", "", ""), is("en"));
checkLanguage(mService.onGetLanguage(), "vie", "VNM", "saigon"); checkLanguage(mService.onGetLanguage(), "vie", "VNM", "saigon");
assertThat(mService.getActiveVoice(), is(notNullValue())); 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")); assertThat(mService.onGetDefaultVoiceNameFor("eng", "USA", ""), is("en-us"));
checkLanguage(mService.onGetLanguage(), "vie", "VNM", "saigon"); checkLanguage(mService.onGetLanguage(), "vie", "VNM", "saigon");
assertThat(mService.getActiveVoice(), is(notNullValue())); 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")); assertThat(mService.onGetDefaultVoiceNameFor("eng", "GBR", "scotland"), is("en-sc"));
checkLanguage(mService.onGetLanguage(), "vie", "VNM", "saigon"); checkLanguage(mService.onGetLanguage(), "vie", "VNM", "saigon");
assertThat(mService.getActiveVoice(), is(notNullValue())); 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")); assertThat(mService.onGetDefaultVoiceNameFor("eng", "USA", "rp"), is("en-us"));
checkLanguage(mService.onGetLanguage(), "vie", "VNM", "saigon"); checkLanguage(mService.onGetLanguage(), "vie", "VNM", "saigon");
assertThat(mService.getActiveVoice(), is(notNullValue())); 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")); assertThat(mService.onGetDefaultVoiceNameFor("eng", "", "scotland"), is("en"));
checkLanguage(mService.onGetLanguage(), "vie", "VNM", "saigon"); checkLanguage(mService.onGetLanguage(), "vie", "VNM", "saigon");
assertThat(mService.getActiveVoice(), is(notNullValue())); 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"); checkLanguage(mService.onGetLanguage(), "vie", "VNM", "saigon");
assertThat(mService.getActiveVoice(), is(notNullValue())); 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"); checkLanguage(mService.onGetLanguage(), "vie", "VNM", "saigon");
assertThat(mService.getActiveVoice(), is(notNullValue())); 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())); assertThat(mService.onGetDefaultVoiceNameFor("ine", "", ""), is(nullValue()));
checkLanguage(mService.onGetLanguage(), "vie", "VNM", "saigon"); 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

} }
} }


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 @Override
protected int onIsLanguageAvailable(String language, String country, String variant) { protected int onIsLanguageAvailable(String language, String country, String variant) {
final Pair<Voice, Integer> match = findVoice(language, country, variant); final Pair<Voice, Integer> match = findVoice(language, country, variant);


@Override @Override
public String onGetDefaultVoiceNameFor(String language, String country, String variant) { 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 @Override

Loading…
Cancel
Save