Merge "Fix crash with engines that don't override getVoices()." into mnc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
1ea7a81931
@@ -1486,19 +1486,28 @@ public class TextToSpeech {
|
||||
// Get the default voice for the locale.
|
||||
String voiceName = service.getDefaultVoiceNameFor(language, country, variant);
|
||||
if (TextUtils.isEmpty(voiceName)) {
|
||||
Log.w(TAG, "Couldn't find the default voice for " + language + "/" +
|
||||
country + "/" + variant);
|
||||
Log.w(TAG, "Couldn't find the default voice for " + language + "-" +
|
||||
country + "-" + variant);
|
||||
return LANG_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
// Load it.
|
||||
if (service.loadVoice(getCallerIdentity(), voiceName) == TextToSpeech.ERROR) {
|
||||
Log.w(TAG, "The service claimed " + language + "-" + country + "-"
|
||||
+ variant + " was available with voice name " + voiceName
|
||||
+ " but loadVoice returned ERROR");
|
||||
return LANG_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
// Set the language/country/variant of the voice, so #getLanguage will return
|
||||
// the currently set voice locale when called.
|
||||
Voice voice = getVoice(service, voiceName);
|
||||
if (voice == null) {
|
||||
Log.w(TAG, "getDefaultVoiceNameFor returned " + voiceName + " for locale "
|
||||
+ language + "-" + country + "-" + variant
|
||||
+ " but getVoice returns null");
|
||||
return LANG_NOT_SUPPORTED;
|
||||
}
|
||||
String voiceLanguage = "";
|
||||
try {
|
||||
voiceLanguage = voice.getLocale().getISO3Language();
|
||||
@@ -1682,6 +1691,7 @@ public class TextToSpeech {
|
||||
private Voice getVoice(ITextToSpeechService service, String voiceName) throws RemoteException {
|
||||
List<Voice> voices = service.getVoices();
|
||||
if (voices == null) {
|
||||
Log.w(TAG, "getVoices returned null");
|
||||
return null;
|
||||
}
|
||||
for (Voice voice : voices) {
|
||||
@@ -1689,6 +1699,7 @@ public class TextToSpeech {
|
||||
return voice;
|
||||
}
|
||||
}
|
||||
Log.w(TAG, "Could not find voice " + voiceName + " in voice list");
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -293,7 +293,9 @@ public abstract class TextToSpeechService extends Service {
|
||||
}
|
||||
Set<String> features = onGetFeaturesForLanguage(locale.getISO3Language(),
|
||||
locale.getISO3Country(), locale.getVariant());
|
||||
voices.add(new Voice(locale.toLanguageTag(), locale, Voice.QUALITY_NORMAL,
|
||||
String voiceName = onGetDefaultVoiceNameFor(locale.getISO3Language(),
|
||||
locale.getISO3Country(), locale.getVariant());
|
||||
voices.add(new Voice(voiceName, locale, Voice.QUALITY_NORMAL,
|
||||
Voice.LATENCY_NORMAL, false, features));
|
||||
}
|
||||
return voices;
|
||||
|
||||
Reference in New Issue
Block a user