am 5a38df26: Call setLanguage() when the TTS locale is changed in settings.
* commit '5a38df2648f5e8246d20a46675bd99cc5ea368e0': Call setLanguage() when the TTS locale is changed in settings.
This commit is contained in:
@@ -192,23 +192,6 @@ public class TextToSpeechSettings extends SettingsPreferenceFragment implements
|
|||||||
checkVoiceData(mCurrentEngine);
|
checkVoiceData(mCurrentEngine);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void maybeUpdateTtsLanguage(String currentEngine) {
|
|
||||||
if (currentEngine != null && mTts != null) {
|
|
||||||
final String localeString = mEnginesHelper.getLocalePrefForEngine(
|
|
||||||
currentEngine);
|
|
||||||
if (localeString != null) {
|
|
||||||
final String[] locale = TtsEngines.parseLocalePref(localeString);
|
|
||||||
final Locale newLocale = new Locale(locale[0], locale[1], locale[2]);
|
|
||||||
final Locale engineLocale = mTts.getLanguage();
|
|
||||||
|
|
||||||
if (!newLocale.equals(engineLocale)) {
|
|
||||||
if (DBG) Log.d(TAG, "Loading language ahead of sample check : " + locale);
|
|
||||||
mTts.setLanguage(newLocale);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ask the current default engine to return a string of sample text to be
|
* Ask the current default engine to return a string of sample text to be
|
||||||
* spoken to the user.
|
* spoken to the user.
|
||||||
@@ -218,7 +201,6 @@ public class TextToSpeechSettings extends SettingsPreferenceFragment implements
|
|||||||
|
|
||||||
if (TextUtils.isEmpty(currentEngine)) currentEngine = mTts.getDefaultEngine();
|
if (TextUtils.isEmpty(currentEngine)) currentEngine = mTts.getDefaultEngine();
|
||||||
|
|
||||||
maybeUpdateTtsLanguage(currentEngine);
|
|
||||||
Locale currentLocale = mTts.getLanguage();
|
Locale currentLocale = mTts.getLanguage();
|
||||||
|
|
||||||
// TODO: This is currently a hidden private API. The intent extras
|
// TODO: This is currently a hidden private API. The intent extras
|
||||||
|
|||||||
@@ -51,6 +51,25 @@ public class TtsEngineSettingsFragment extends SettingsPreferenceFragment implem
|
|||||||
private Preference mInstallVoicesPreference;
|
private Preference mInstallVoicesPreference;
|
||||||
private Intent mEngineSettingsIntent;
|
private Intent mEngineSettingsIntent;
|
||||||
|
|
||||||
|
private TextToSpeech mTts;
|
||||||
|
|
||||||
|
private final TextToSpeech.OnInitListener mTtsInitListener = new TextToSpeech.OnInitListener() {
|
||||||
|
@Override
|
||||||
|
public void onInit(int status) {
|
||||||
|
if (status != TextToSpeech.SUCCESS) {
|
||||||
|
finishFragment();
|
||||||
|
} else {
|
||||||
|
getActivity().runOnUiThread(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
mLocalePreference.setEnabled(true);
|
||||||
|
updateVoiceDetails();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
public TtsEngineSettingsFragment() {
|
public TtsEngineSettingsFragment() {
|
||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
@@ -83,7 +102,15 @@ public class TtsEngineSettingsFragment extends SettingsPreferenceFragment implem
|
|||||||
}
|
}
|
||||||
mInstallVoicesPreference.setEnabled(false);
|
mInstallVoicesPreference.setEnabled(false);
|
||||||
|
|
||||||
updateVoiceDetails();
|
mLocalePreference.setEnabled(false);
|
||||||
|
mTts = new TextToSpeech(getActivity().getApplicationContext(), mTtsInitListener,
|
||||||
|
getEngineName());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDestroy() {
|
||||||
|
mTts.shutdown();
|
||||||
|
super.onDestroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateVoiceDetails() {
|
private void updateVoiceDetails() {
|
||||||
@@ -153,8 +180,7 @@ public class TtsEngineSettingsFragment extends SettingsPreferenceFragment implem
|
|||||||
mLocalePreference.setValueIndex(selectedLanguageIndex);
|
mLocalePreference.setValueIndex(selectedLanguageIndex);
|
||||||
} else {
|
} else {
|
||||||
mLocalePreference.setValueIndex(0);
|
mLocalePreference.setValueIndex(0);
|
||||||
mEnginesHelper.updateLocalePrefForEngine(getEngineName(),
|
updateLanguageTo(availableLangs.get(0));
|
||||||
availableLangs.get(0));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -191,13 +217,23 @@ public class TtsEngineSettingsFragment extends SettingsPreferenceFragment implem
|
|||||||
@Override
|
@Override
|
||||||
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||||
if (preference == mLocalePreference) {
|
if (preference == mLocalePreference) {
|
||||||
mEnginesHelper.updateLocalePrefForEngine(getEngineName(), (String) newValue);
|
updateLanguageTo((String) newValue);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void updateLanguageTo(String locale) {
|
||||||
|
mEnginesHelper.updateLocalePrefForEngine(getEngineName(), locale);
|
||||||
|
if (getEngineName().equals(mTts.getCurrentEngine())) {
|
||||||
|
String[] localeArray = TtsEngines.parseLocalePref(locale);
|
||||||
|
if (localeArray != null) {
|
||||||
|
mTts.setLanguage(new Locale(localeArray[0], localeArray[1], localeArray[2]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private String getEngineName() {
|
private String getEngineName() {
|
||||||
return getArguments().getString(TtsEnginePreference.FRAGMENT_ARGS_NAME);
|
return getArguments().getString(TtsEnginePreference.FRAGMENT_ARGS_NAME);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user