am dd441795: Merge "Don\'t strip country and variant from locale." into mnc-dev
* commit 'dd441795409f26f45de3ce40a1bab4121cfcefe5': Don't strip country and variant from locale.
This commit is contained in:
@@ -1481,14 +1481,8 @@ public class TextToSpeech {
|
|||||||
// interface).
|
// interface).
|
||||||
|
|
||||||
// Sanitize locale using isLanguageAvailable.
|
// Sanitize locale using isLanguageAvailable.
|
||||||
int result = service.isLanguageAvailable( language, country, variant);
|
int result = service.isLanguageAvailable(language, country, variant);
|
||||||
if (result >= LANG_AVAILABLE){
|
if (result >= LANG_AVAILABLE) {
|
||||||
if (result < LANG_COUNTRY_VAR_AVAILABLE) {
|
|
||||||
variant = "";
|
|
||||||
if (result < LANG_COUNTRY_AVAILABLE) {
|
|
||||||
country = "";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Get the default voice for the locale.
|
// Get the default voice for the locale.
|
||||||
String voiceName = service.getDefaultVoiceNameFor(language, country, variant);
|
String voiceName = service.getDefaultVoiceNameFor(language, country, variant);
|
||||||
if (TextUtils.isEmpty(voiceName)) {
|
if (TextUtils.isEmpty(voiceName)) {
|
||||||
@@ -1502,10 +1496,28 @@ public class TextToSpeech {
|
|||||||
return LANG_NOT_SUPPORTED;
|
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);
|
||||||
|
String voiceLanguage = "";
|
||||||
|
try {
|
||||||
|
voiceLanguage = voice.getLocale().getISO3Language();
|
||||||
|
} catch (MissingResourceException e) {
|
||||||
|
Log.w(TAG, "Couldn't retrieve ISO 639-2/T language code for locale: " +
|
||||||
|
voice.getLocale(), e);
|
||||||
|
}
|
||||||
|
|
||||||
|
String voiceCountry = "";
|
||||||
|
try {
|
||||||
|
voiceCountry = voice.getLocale().getISO3Country();
|
||||||
|
} catch (MissingResourceException e) {
|
||||||
|
Log.w(TAG, "Couldn't retrieve ISO 3166 country code for locale: " +
|
||||||
|
voice.getLocale(), e);
|
||||||
|
}
|
||||||
mParams.putString(Engine.KEY_PARAM_VOICE_NAME, voiceName);
|
mParams.putString(Engine.KEY_PARAM_VOICE_NAME, voiceName);
|
||||||
mParams.putString(Engine.KEY_PARAM_LANGUAGE, language);
|
mParams.putString(Engine.KEY_PARAM_LANGUAGE, voiceLanguage);
|
||||||
mParams.putString(Engine.KEY_PARAM_COUNTRY, country);
|
mParams.putString(Engine.KEY_PARAM_COUNTRY, voiceCountry);
|
||||||
mParams.putString(Engine.KEY_PARAM_VARIANT, variant);
|
mParams.putString(Engine.KEY_PARAM_VARIANT, voice.getLocale().getVariant());
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -1654,20 +1666,32 @@ public class TextToSpeech {
|
|||||||
if (TextUtils.isEmpty(voiceName)) {
|
if (TextUtils.isEmpty(voiceName)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
List<Voice> voices = service.getVoices();
|
return getVoice(service, voiceName);
|
||||||
if (voices == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
for (Voice voice : voices) {
|
|
||||||
if (voice.getName().equals(voiceName)) {
|
|
||||||
return voice;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
}, null, "getVoice");
|
}, null, "getVoice");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a Voice instance of the voice with the given voice name.
|
||||||
|
*
|
||||||
|
* @return Voice instance with the given voice name, or {@code null} if not set or on error.
|
||||||
|
*
|
||||||
|
* @see Voice
|
||||||
|
*/
|
||||||
|
private Voice getVoice(ITextToSpeechService service, String voiceName) throws RemoteException {
|
||||||
|
List<Voice> voices = service.getVoices();
|
||||||
|
if (voices == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
for (Voice voice : voices) {
|
||||||
|
if (voice.getName().equals(voiceName)) {
|
||||||
|
return voice;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a Voice instance that's the default voice for the default Text-to-speech language.
|
* Returns a Voice instance that's the default voice for the default Text-to-speech language.
|
||||||
* @return The default voice instance for the default language, or {@code null} if not set or
|
* @return The default voice instance for the default language, or {@code null} if not set or
|
||||||
@@ -1690,14 +1714,7 @@ public class TextToSpeech {
|
|||||||
|
|
||||||
// Sanitize the locale using isLanguageAvailable.
|
// Sanitize the locale using isLanguageAvailable.
|
||||||
int result = service.isLanguageAvailable(language, country, variant);
|
int result = service.isLanguageAvailable(language, country, variant);
|
||||||
if (result >= LANG_AVAILABLE){
|
if (result < LANG_AVAILABLE) {
|
||||||
if (result < LANG_COUNTRY_VAR_AVAILABLE) {
|
|
||||||
variant = "";
|
|
||||||
if (result < LANG_COUNTRY_AVAILABLE) {
|
|
||||||
country = "";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// The default language is not supported.
|
// The default language is not supported.
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user