Fix for empty "Listen to an example" string.
Because of bug in previous TTS related change (bugfix for hiding "Play TTS sample" if default language is not supported), settings stopped to call getSampleText() when it was established that current default language is supported. This change makes sure that getSampleText() is always called if language is supported. Bug: 10672535 Change-Id: I83bf7056e12ddbe2322b6a3f04552802037626aa
This commit is contained in:
@@ -104,7 +104,17 @@ public class TextToSpeechSettings extends SettingsPreferenceFragment implements
|
||||
private TtsEngines mEnginesHelper = null;
|
||||
|
||||
private String mSampleText = "";
|
||||
|
||||
/**
|
||||
* Default locale used by selected TTS engine, null if not connected to any engine.
|
||||
*/
|
||||
private Locale mCurrentDefaultLocale;
|
||||
|
||||
/**
|
||||
* List of available locals of selected TTS engine, as returned by
|
||||
* {@link TextToSpeech.Engine#ACTION_CHECK_TTS_DATA} activity. If empty, then activity
|
||||
* was not yet called.
|
||||
*/
|
||||
private List<String> mAvailableStrLocals;
|
||||
|
||||
/**
|
||||
@@ -263,7 +273,9 @@ public class TextToSpeechSettings extends SettingsPreferenceFragment implements
|
||||
}
|
||||
|
||||
private boolean evaluateDefaultLocale() {
|
||||
if (mCurrentDefaultLocale == null) {
|
||||
// Check if we are connected to the engine, and CHECK_VOICE_DATA returned list
|
||||
// of available languages.
|
||||
if (mCurrentDefaultLocale == null || mAvailableStrLocals == null) {
|
||||
return false;
|
||||
}
|
||||
int defaultAvailable = mTts.setLanguage(mCurrentDefaultLocale);
|
||||
@@ -277,18 +289,17 @@ public class TextToSpeechSettings extends SettingsPreferenceFragment implements
|
||||
if (!TextUtils.isEmpty(mCurrentDefaultLocale.getVariant())) {
|
||||
defaultLocaleStr += "-" + mCurrentDefaultLocale.getVariant();
|
||||
}
|
||||
if (mAvailableStrLocals != null) {
|
||||
|
||||
for (String loc : mAvailableStrLocals) {
|
||||
if (loc.equalsIgnoreCase(defaultLocaleStr)) {
|
||||
notInAvailableLangauges = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (defaultAvailable == TextToSpeech.LANG_NOT_SUPPORTED ||
|
||||
defaultAvailable == TextToSpeech.LANG_MISSING_DATA ||
|
||||
mAvailableStrLocals == null || notInAvailableLangauges) {
|
||||
notInAvailableLangauges) {
|
||||
if (DBG) Log.d(TAG, "Default locale for this TTS engine is not supported.");
|
||||
updateEngineStatus(R.string.tts_status_not_supported);
|
||||
updateWidgetState(false);
|
||||
@@ -558,7 +569,14 @@ public class TextToSpeechSettings extends SettingsPreferenceFragment implements
|
||||
|
||||
mAvailableStrLocals = data.getStringArrayListExtra(
|
||||
TextToSpeech.Engine.EXTRA_AVAILABLE_VOICES);
|
||||
evaluateDefaultLocale();
|
||||
if (mAvailableStrLocals == null) {
|
||||
Log.e(TAG, "Voice data check complete, but no available voices found");
|
||||
// Set mAvailableStrLocals to empty list
|
||||
mAvailableStrLocals = new ArrayList<String>();
|
||||
}
|
||||
if (evaluateDefaultLocale()) {
|
||||
getSampleText();
|
||||
}
|
||||
|
||||
final int engineCount = mEnginePreferenceCategory.getPreferenceCount();
|
||||
for (int i = 0; i < engineCount; ++i) {
|
||||
|
Reference in New Issue
Block a user