Avoid MissingResourceException on calls to getISO3CountryCode.

This commit is contained in:
Reece H. Dunn
2013-07-27 18:30:34 +01:00
parent db49a68f70
commit 3d2d277a10
2 changed files with 19 additions and 8 deletions
@@ -166,13 +166,18 @@ public class SpeechSynthesis {
try {
if (locale != null && !locale.getISO3Language().equals("")) {
// This will throw a MissingResourceException on Android 4.3,
// so check here to avoid the exception in the Android
// TextToSpeech class.
String country = locale.getISO3Country();
final Voice voice = new Voice(name, identifier, gender, age, locale);
voices.add(voice);
}
} catch (MissingResourceException e) {
// Android 4.3 throws this exception if the 3-letter language
// code is missing for a locale (e.g. nci). Earlier versions
// of Android return an empty string.
// (e.g. nci) or country (e.g. 021) code is missing for a locale.
// Earlier versions of Android return an empty string.
}
}
+12 -6
View File
@@ -18,6 +18,7 @@
package com.reecedunn.espeak;
import java.util.Locale;
import java.util.MissingResourceException;
import android.speech.tts.TextToSpeech;
@@ -51,13 +52,18 @@ public class Voice {
public int match(Locale query) {
if (!locale.getISO3Language().equals(query.getISO3Language())) {
return TextToSpeech.LANG_NOT_SUPPORTED;
} else if (!locale.getISO3Country().equals(query.getISO3Country())) {
return TextToSpeech.LANG_AVAILABLE;
} else if (!locale.getVariant().equals(query.getVariant())) {
return TextToSpeech.LANG_COUNTRY_AVAILABLE;
} else {
return TextToSpeech.LANG_COUNTRY_VAR_AVAILABLE;
}
try {
if (!locale.getISO3Country().equals(query.getISO3Country())) {
return TextToSpeech.LANG_AVAILABLE;
}
} catch (MissingResourceException e) {
return TextToSpeech.LANG_AVAILABLE;
}
if (!locale.getVariant().equals(query.getVariant())) {
return TextToSpeech.LANG_COUNTRY_AVAILABLE;
}
return TextToSpeech.LANG_COUNTRY_VAR_AVAILABLE;
}
@Override