summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Dippold <michael.dippold@us.thalesgroup.com>2017-01-03 14:39:47 -0800
committerMichael Dippold <michael.dippold@us.thalesgroup.com>2017-01-10 16:17:34 +0000
commit43fed1e8fa150ce9441281ad1891e9f2029b6d51 (patch)
tree7ef2a725675bfde21e4c9f46511b6dd6ee37c984
parent15e98bdbb4c0d065fcdeacd5ba6f6e8e69473e61 (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.java7
-rw-r--r--src/plugins/tts/android/src/qtexttospeech_android.cpp20
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