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

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


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

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

private Voice mMatchingVoice = null; private Voice mMatchingVoice = null;


private BroadcastReceiver mOnLanguagesDownloaded = null; private BroadcastReceiver mOnLanguagesDownloaded = null;
private BroadcastReceiver mOnSystemLocaleChanged = null;


private String mLanguage = DEFAULT_LANGUAGE; private String mLanguage = DEFAULT_LANGUAGE;
private String mCountry = DEFAULT_COUNTRY; private String mCountry = DEFAULT_COUNTRY;
public void onCreate() { public void onCreate() {
initializeTtsEngine(); initializeTtsEngine();
super.onCreate(); 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 @Override
if (mOnLanguagesDownloaded != null) { if (mOnLanguagesDownloaded != null) {
unregisterReceiver(mOnLanguagesDownloaded); unregisterReceiver(mOnLanguagesDownloaded);
} }
if (mOnSystemLocaleChanged != null) {
unregisterReceiver(mOnSystemLocaleChanged);
}
} }


/** /**
@Override @Override
protected synchronized void onSynthesizeText( protected synchronized void onSynthesizeText(
SynthesisRequest request, SynthesisCallback callback) { SynthesisRequest request, SynthesisCallback callback) {
final int result = onLoadLanguage(request.getLanguage(), request.getCountry(), request.getVariant());
final int result = onLoadLanguage(mLanguage, mCountry, mVariant);
switch (result) { switch (result) {
case TextToSpeech.LANG_MISSING_DATA: case TextToSpeech.LANG_MISSING_DATA:
case TextToSpeech.LANG_NOT_SUPPORTED: case TextToSpeech.LANG_NOT_SUPPORTED:

Loading…
Cancel
Save