diff options
author | Michael Dippold <michael.dippold@us.thalesgroup.com> | 2017-01-03 14:39:47 -0800 |
---|---|---|
committer | Michael Dippold <michael.dippold@us.thalesgroup.com> | 2017-01-10 16:17:34 +0000 |
commit | 43fed1e8fa150ce9441281ad1891e9f2029b6d51 (patch) | |
tree | 7ef2a725675bfde21e4c9f46511b6dd6ee37c984 | |
parent | 15e98bdbb4c0d065fcdeacd5ba6f6e8e69473e61 (diff) |
Android: add set locale functionality
Added the ability to set languages in the Android plugin.
Change-Id: I2794526633f976bcc52eeab4187c0454415fab74
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
-rw-r--r-- | src/plugins/tts/android/jar/src/org/qtproject/qt5/android/speech/QtTextToSpeech.java | 7 | ||||
-rw-r--r-- | src/plugins/tts/android/src/qtexttospeech_android.cpp | 20 |
2 files changed, 25 insertions, 2 deletions
diff --git a/src/plugins/tts/android/jar/src/org/qtproject/qt5/android/speech/QtTextToSpeech.java b/src/plugins/tts/android/jar/src/org/qtproject/qt5/android/speech/QtTextToSpeech.java index d6a6846..a6e6091 100644 --- a/src/plugins/tts/android/jar/src/org/qtproject/qt5/android/speech/QtTextToSpeech.java +++ b/src/plugins/tts/android/jar/src/org/qtproject/qt5/android/speech/QtTextToSpeech.java @@ -49,6 +49,7 @@ import android.os.Bundle; import android.util.Log; import java.lang.Float; import java.util.HashMap; +import java.util.Locale; public class QtTextToSpeech { @@ -199,4 +200,10 @@ public class QtTextToSpeech return TextToSpeech.SUCCESS; } + public boolean setLocale(Locale locale) + { + int result = mTts.setLanguage(locale); + return (result != TextToSpeech.LANG_NOT_SUPPORTED) && (result != TextToSpeech.LANG_MISSING_DATA); + } + } diff --git a/src/plugins/tts/android/src/qtexttospeech_android.cpp b/src/plugins/tts/android/src/qtexttospeech_android.cpp index 6b6ed6c..527bbec 100644 --- a/src/plugins/tts/android/src/qtexttospeech_android.cpp +++ b/src/plugins/tts/android/src/qtexttospeech_android.cpp @@ -256,9 +256,25 @@ QVector<QLocale> QTextToSpeechEngineAndroid::availableLocales() const return QVector<QLocale>(); } -bool QTextToSpeechEngineAndroid::setLocale(const QLocale & /* locale */) +bool QTextToSpeechEngineAndroid::setLocale(const QLocale &locale) { - return false; + QStringList parts = locale.name().split('_'); + + if (parts.length() != 2) + return false; + + QString languageCode = parts.at(0); + QString countryCode = parts.at(1); + + QJNIEnvironmentPrivate env; + jstring jLanguageCode = env->NewString(reinterpret_cast<const jchar*>(languageCode.constData()), + languageCode.length()); + jstring jCountryCode = env->NewString(reinterpret_cast<const jchar*>(countryCode.constData()), + countryCode.length()); + + QJNIObjectPrivate jLocale("java/util/Locale", "(Ljava/lang/String;Ljava/lang/String;)V", jLanguageCode, jCountryCode); + + return m_speech.callMethod<jboolean>("setLocale", "(Ljava/util/Locale;)Z", jLocale.object()); } QLocale QTextToSpeechEngineAndroid::locale() const |