TtsService: support changing language to the user locale when they change the system language.

This commit is contained in:
Reece H. Dunn
2013-05-09 14:54:09 +01:00
parent 7ee59ed331
commit cddd48e6f6
2 changed files with 19 additions and 3 deletions
@@ -66,6 +66,7 @@ public class TtsService extends TextToSpeechService {
private Voice mMatchingVoice = null;
private BroadcastReceiver mOnLanguagesDownloaded = null;
private BroadcastReceiver mOnSystemLocaleChanged = null;
private String mLanguage = DEFAULT_LANGUAGE;
private String mCountry = DEFAULT_COUNTRY;
@@ -75,6 +76,18 @@ public class TtsService extends TextToSpeechService {
public void onCreate() {
initializeTtsEngine();
super.onCreate();
mOnSystemLocaleChanged = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Locale locale = Locale.getDefault();
int ret = onLoadLanguage(locale.getISO3Language(), locale.getISO3Country(), locale.getVariant());
Log.i("LocaleChange", "Locale = " + locale + "; status = " + ret);
}
};
final IntentFilter filter = new IntentFilter(Intent.ACTION_LOCALE_CHANGED);
registerReceiver(mOnSystemLocaleChanged, filter);
}
@Override
@@ -83,6 +96,9 @@ public class TtsService extends TextToSpeechService {
if (mOnLanguagesDownloaded != null) {
unregisterReceiver(mOnLanguagesDownloaded);
}
if (mOnSystemLocaleChanged != null) {
unregisterReceiver(mOnSystemLocaleChanged);
}
}
/**
@@ -203,7 +219,7 @@ public class TtsService extends TextToSpeechService {
@Override
protected synchronized void onSynthesizeText(
SynthesisRequest request, SynthesisCallback callback) {
final int result = onLoadLanguage(request.getLanguage(), request.getCountry(), request.getVariant());
final int result = onLoadLanguage(mLanguage, mCountry, mVariant);
switch (result) {
case TextToSpeech.LANG_MISSING_DATA:
case TextToSpeech.LANG_NOT_SUPPORTED: