Language loading / availablity should repsect defaults enforcement.
There is no point loading a language that will never be used. It is in fact harmful, because the engine might load it and then receive a request for the default voice and have to load the default voice again. Change-Id: I8082f28d15b6e325d6a39d439b66753711a2c244
This commit is contained in:
@@ -55,6 +55,8 @@ public abstract class TextToSpeechService extends Service {
|
||||
|
||||
private CallbackMap mCallbacks;
|
||||
|
||||
private int mDefaultAvailability = TextToSpeech.LANG_NOT_SUPPORTED;
|
||||
|
||||
@Override
|
||||
public void onCreate() {
|
||||
if (DBG) Log.d(TAG, "onCreate()");
|
||||
@@ -71,7 +73,8 @@ public abstract class TextToSpeechService extends Service {
|
||||
mCallbacks = new CallbackMap();
|
||||
|
||||
// Load default language
|
||||
onLoadLanguage(getDefaultLanguage(), getDefaultCountry(), getDefaultVariant());
|
||||
mDefaultAvailability = onLoadLanguage(getDefaultLanguage(),
|
||||
getDefaultCountry(), getDefaultVariant());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -651,17 +654,43 @@ public abstract class TextToSpeechService extends Service {
|
||||
return onGetLanguage();
|
||||
}
|
||||
|
||||
/*
|
||||
* If defaults are enforced, then no language is "available" except
|
||||
* perhaps the default language selected by the user.
|
||||
*/
|
||||
public int isLanguageAvailable(String lang, String country, String variant) {
|
||||
if (areDefaultsEnforced()) {
|
||||
if (isDefault(lang, country, variant)) {
|
||||
return mDefaultAvailability;
|
||||
} else {
|
||||
return TextToSpeech.LANG_NOT_SUPPORTED;
|
||||
}
|
||||
}
|
||||
return onIsLanguageAvailable(lang, country, variant);
|
||||
}
|
||||
|
||||
/*
|
||||
* There is no point loading a non default language if defaults
|
||||
* are enforced.
|
||||
*/
|
||||
public int loadLanguage(String lang, String country, String variant) {
|
||||
if (areDefaultsEnforced()) {
|
||||
if (isDefault(lang, country, variant)) {
|
||||
return mDefaultAvailability;
|
||||
} else {
|
||||
return TextToSpeech.LANG_NOT_SUPPORTED;
|
||||
}
|
||||
}
|
||||
return onLoadLanguage(lang, country, variant);
|
||||
}
|
||||
|
||||
public void setCallback(String packageName, ITextToSpeechCallback cb) {
|
||||
mCallbacks.setCallback(packageName, cb);
|
||||
}
|
||||
|
||||
private boolean isDefault(String lang, String country, String variant) {
|
||||
return Locale.getDefault().equals(new Locale(lang, country, variant));
|
||||
}
|
||||
};
|
||||
|
||||
private class CallbackMap extends RemoteCallbackList<ITextToSpeechCallback> {
|
||||
|
||||
Reference in New Issue
Block a user