Merge "Add explicit "use system language" TTS language."
This commit is contained in:
committed by
Android (Google) Code Review
commit
abf3886ed9
@@ -3887,6 +3887,8 @@
|
|||||||
|
|
||||||
<!-- On main TTS Settings screen, in default settings section, setting default language for synthesized voice -->
|
<!-- On main TTS Settings screen, in default settings section, setting default language for synthesized voice -->
|
||||||
<string name="tts_default_lang_title">Language</string>
|
<string name="tts_default_lang_title">Language</string>
|
||||||
|
<!-- Entry in the TTS engine language/locale picker, when selected will try to default to the system language [CHAR LIMIT=50] -->
|
||||||
|
<string name="tts_lang_use_system">Use system language</string>
|
||||||
<!-- On main TTS Settings screen, language summary if it can't default to system language [CHAR LIMIT=50] -->
|
<!-- On main TTS Settings screen, language summary if it can't default to system language [CHAR LIMIT=50] -->
|
||||||
<string name="tts_lang_not_selected">Language not selected</string>
|
<string name="tts_lang_not_selected">Language not selected</string>
|
||||||
<!-- On main TTS Settings screen, summary for default language for synthesized voice -->
|
<!-- On main TTS Settings screen, summary for default language for synthesized voice -->
|
||||||
|
@@ -68,7 +68,6 @@ public class TtsEngineSettingsFragment extends SettingsPreferenceFragment implem
|
|||||||
private TextToSpeech mTts;
|
private TextToSpeech mTts;
|
||||||
|
|
||||||
private int mSelectedLocaleIndex = -1;
|
private int mSelectedLocaleIndex = -1;
|
||||||
private int mSystemLocaleIndex = -1;
|
|
||||||
|
|
||||||
private final TextToSpeech.OnInitListener mTtsInitListener = new TextToSpeech.OnInitListener() {
|
private final TextToSpeech.OnInitListener mTtsInitListener = new TextToSpeech.OnInitListener() {
|
||||||
@Override
|
@Override
|
||||||
@@ -234,8 +233,10 @@ public class TtsEngineSettingsFragment extends SettingsPreferenceFragment implem
|
|||||||
mLocalePreference.setEnabled(false);
|
mLocalePreference.setEnabled(false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
String currentLocale = mEnginesHelper.getLocalePrefForEngine(
|
String currentLocale = "";
|
||||||
getEngineName());
|
if (!mEnginesHelper.isLocaleSetToDefaultForEngine(getEngineName())) {
|
||||||
|
currentLocale = mEnginesHelper.getLocalePrefForEngine(getEngineName());
|
||||||
|
}
|
||||||
|
|
||||||
ArrayList<Pair<String, String>> entryPairs =
|
ArrayList<Pair<String, String>> entryPairs =
|
||||||
new ArrayList<Pair<String, String>>(availableLangs.size());
|
new ArrayList<Pair<String, String>>(availableLangs.size());
|
||||||
@@ -264,21 +265,19 @@ public class TtsEngineSettingsFragment extends SettingsPreferenceFragment implem
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
String defaultLocaleStr = mEnginesHelper.getDefaultLocale();
|
|
||||||
|
|
||||||
// Get two arrays out of one of pairs
|
// Get two arrays out of one of pairs
|
||||||
mSelectedLocaleIndex = -1;
|
mSelectedLocaleIndex = 0; // Will point to the R.string.tts_lang_use_system value
|
||||||
mSystemLocaleIndex = -1;
|
CharSequence[] entries = new CharSequence[availableLangs.size()+1];
|
||||||
CharSequence[] entries = new CharSequence[availableLangs.size()];
|
CharSequence[] entryValues = new CharSequence[availableLangs.size()+1];
|
||||||
CharSequence[] entryValues = new CharSequence[availableLangs.size()];
|
|
||||||
int i = 0;
|
entries[0] = getActivity().getString(R.string.tts_lang_use_system);
|
||||||
|
entryValues[0] = "";
|
||||||
|
|
||||||
|
int i = 1;
|
||||||
for (Pair<String, String> entry : entryPairs) {
|
for (Pair<String, String> entry : entryPairs) {
|
||||||
if (entry.second.equalsIgnoreCase(currentLocale)) {
|
if (entry.second.equalsIgnoreCase(currentLocale)) {
|
||||||
mSelectedLocaleIndex = i;
|
mSelectedLocaleIndex = i;
|
||||||
}
|
}
|
||||||
if (entry.second.equalsIgnoreCase(defaultLocaleStr)) {
|
|
||||||
mSystemLocaleIndex = i;
|
|
||||||
}
|
|
||||||
entries[i] = entry.first;
|
entries[i] = entry.first;
|
||||||
entryValues[i++] = entry.second;
|
entryValues[i++] = entry.second;
|
||||||
}
|
}
|
||||||
@@ -355,18 +354,18 @@ public class TtsEngineSettingsFragment extends SettingsPreferenceFragment implem
|
|||||||
mLocalePreference.setSummary(mLocalePreference.getEntries()[selectedLocaleIndex]);
|
mLocalePreference.setSummary(mLocalePreference.getEntries()[selectedLocaleIndex]);
|
||||||
mSelectedLocaleIndex = selectedLocaleIndex;
|
mSelectedLocaleIndex = selectedLocaleIndex;
|
||||||
|
|
||||||
if (mSelectedLocaleIndex == mSystemLocaleIndex) {
|
|
||||||
// Use empty locale, it will default to the system language
|
|
||||||
mEnginesHelper.updateLocalePrefForEngine(getEngineName(), "");
|
|
||||||
} else {
|
|
||||||
mEnginesHelper.updateLocalePrefForEngine(getEngineName(), locale);
|
mEnginesHelper.updateLocalePrefForEngine(getEngineName(), locale);
|
||||||
}
|
|
||||||
|
|
||||||
if (getEngineName().equals(mTts.getCurrentEngine())) {
|
if (getEngineName().equals(mTts.getCurrentEngine())) {
|
||||||
|
if (!locale.isEmpty()) {
|
||||||
String[] localeArray = TtsEngines.parseLocalePref(locale);
|
String[] localeArray = TtsEngines.parseLocalePref(locale);
|
||||||
if (localeArray != null) {
|
if (localeArray != null) {
|
||||||
mTts.setLanguage(new Locale(localeArray[0], localeArray[1], localeArray[2]));
|
mTts.setLanguage(new Locale(localeArray[0], localeArray[1], localeArray[2]));
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
// Empty locale means "use system default"
|
||||||
|
mTts.setLanguage(Locale.getDefault());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user