Browse Source

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

master
Reece H. Dunn 12 years ago
parent
commit
cddd48e6f6
2 changed files with 19 additions and 3 deletions
  1. 2
    2
      android/AndroidManifest.xml
  2. 17
    1
      android/src/com/reecedunn/espeak/TtsService.java

+ 2
- 2
android/AndroidManifest.xml View File

@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.reecedunn.espeak"
android:versionCode="13"
android:versionName="1.47.04" >
android:versionCode="14"
android:versionName="1.47.11" >

<uses-feature
android:name="android.hardware.touchscreen"

+ 17
- 1
android/src/com/reecedunn/espeak/TtsService.java View File

@@ -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:

Loading…
Cancel
Save