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