diff options
-rw-r--r-- | .qmake.conf | 2 | ||||
-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 |
3 files changed, 26 insertions, 3 deletions
diff --git a/.qmake.conf b/.qmake.conf index 165ecba..ab3b383 100644 --- a/.qmake.conf +++ b/.qmake.conf @@ -2,4 +2,4 @@ load(qt_build_config) CONFIG += qt_example_installs CONFIG += warning_clean -MODULE_VERSION = 5.8.1 +MODULE_VERSION = 5.9.0 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 |