summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndroid (Google) Code Review <android-gerrit@google.com>2009-06-29 16:09:44 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2009-06-29 16:09:44 -0700
commit526355dea1fdb24e8ef49f4e5b62974f1dc637d5 (patch)
tree98ac0a959b94791c03873c38df9fee149f0e53b9
parent53e083c90d84fff53f30379a753612ac5d79bbdf (diff)
parentbee1c7e6a4ea5c7f00852f0758a4be968a980d20 (diff)
downloadframeworks_base-526355dea1fdb24e8ef49f4e5b62974f1dc637d5.zip
frameworks_base-526355dea1fdb24e8ef49f4e5b62974f1dc637d5.tar.gz
frameworks_base-526355dea1fdb24e8ef49f4e5b62974f1dc637d5.tar.bz2
Merge change 5701 into donut
* changes: Expose in SynthProxy the query for the TTS supported and current language.
-rw-r--r--packages/TtsService/jni/android_tts_SynthProxy.cpp61
-rwxr-xr-xpackages/TtsService/src/android/tts/SynthProxy.java35
2 files changed, 74 insertions, 22 deletions
diff --git a/packages/TtsService/jni/android_tts_SynthProxy.cpp b/packages/TtsService/jni/android_tts_SynthProxy.cpp
index 27c0021..69ba062 100644
--- a/packages/TtsService/jni/android_tts_SynthProxy.cpp
+++ b/packages/TtsService/jni/android_tts_SynthProxy.cpp
@@ -278,6 +278,33 @@ android_tts_SynthProxy_native_finalize(JNIEnv *env, jobject thiz, jint jniData)
}
+static int
+android_tts_SynthProxy_isLanguageAvailable(JNIEnv *env, jobject thiz, jint jniData,
+ jstring language, jstring country, jstring variant)
+{
+ int result = TTS_LANG_NOT_SUPPORTED;
+
+ if (jniData == 0) {
+ LOGE("android_tts_SynthProxy_isLanguageAvailable(): invalid JNI data");
+ return result;
+ }
+
+ SynthProxyJniStorage* pSynthData = (SynthProxyJniStorage*)jniData;
+ const char *langNativeString = env->GetStringUTFChars(language, 0);
+ const char *countryNativeString = env->GetStringUTFChars(country, 0);
+ const char *variantNativeString = env->GetStringUTFChars(variant, 0);
+ // TODO check return codes
+ if (pSynthData->mNativeSynthInterface) {
+ result = pSynthData->mNativeSynthInterface->isLanguageAvailable(langNativeString,
+ countryNativeString, variantNativeString);
+ }
+ env->ReleaseStringUTFChars(language, langNativeString);
+ env->ReleaseStringUTFChars(country, countryNativeString);
+ env->ReleaseStringUTFChars(variant, variantNativeString);
+ return result;
+}
+
+
static void
android_tts_SynthProxy_setLanguage(JNIEnv *env, jobject thiz, jint jniData,
jstring language, jstring country, jstring variant)
@@ -533,24 +560,34 @@ LOGI("android_tts_SynthProxy_playAudioBuffer");
}
-JNIEXPORT jstring JNICALL
+static jobjectArray
android_tts_SynthProxy_getLanguage(JNIEnv *env, jobject thiz, jint jniData)
{
if (jniData == 0) {
LOGE("android_tts_SynthProxy_getLanguage(): invalid JNI data");
- return env->NewStringUTF("");
+ return NULL;
}
SynthProxyJniStorage* pSynthData = (SynthProxyJniStorage*)jniData;
- size_t bufSize = 100;
- char buf[bufSize];
- memset(buf, 0, bufSize);
- // TODO check return codes
+
if (pSynthData->mNativeSynthInterface) {
- // TODO use the correct getLanguage()
- //pSynthData->mNativeSynthInterface->getLanguage(buf, &bufSize);
+ size_t bufSize = 100;
+ char lang[bufSize];
+ char country[bufSize];
+ char variant[bufSize];
+ memset(lang, 0, bufSize);
+ memset(country, 0, bufSize);
+ memset(variant, 0, bufSize);
+ jobjectArray retLocale = (jobjectArray)env->NewObjectArray(3,
+ env->FindClass("java/lang/String"), env->NewStringUTF(""));
+ pSynthData->mNativeSynthInterface->getLanguage(lang, country, variant);
+ env->SetObjectArrayElement(retLocale, 0, env->NewStringUTF(lang));
+ env->SetObjectArrayElement(retLocale, 1, env->NewStringUTF(country));
+ env->SetObjectArrayElement(retLocale, 2, env->NewStringUTF(variant));
+ return retLocale;
+ } else {
+ return NULL;
}
- return env->NewStringUTF(buf);
}
@@ -588,6 +625,10 @@ static JNINativeMethod gMethods[] = {
"(ILjava/lang/String;Ljava/lang/String;)V",
(void*)android_tts_SynthProxy_synthesizeToFile
},
+ { "native_isLanguageAvailable",
+ "(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)I",
+ (void*)android_tts_SynthProxy_isLanguageAvailable
+ },
{ "native_setLanguage",
"(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V",
(void*)android_tts_SynthProxy_setLanguage
@@ -609,7 +650,7 @@ static JNINativeMethod gMethods[] = {
(void*)android_tts_SynthProxy_playAudioBuffer
},
{ "native_getLanguage",
- "(I)Ljava/lang/String;",
+ "(I)[Ljava/lang/String;",
(void*)android_tts_SynthProxy_getLanguage
},
{ "native_getRate",
diff --git a/packages/TtsService/src/android/tts/SynthProxy.java b/packages/TtsService/src/android/tts/SynthProxy.java
index a8eaaa4..91fe3b7 100755
--- a/packages/TtsService/src/android/tts/SynthProxy.java
+++ b/packages/TtsService/src/android/tts/SynthProxy.java
@@ -68,12 +68,20 @@ public class SynthProxy {
// TODO add IPA methods
/**
- * Sets the language
+ * Queries for language support.
+ * Return codes are defined in android.speech.tts.TextToSpeech
+ */
+ public int isLanguageAvailable(String language, String country, String variant) {
+ return native_isLanguageAvailable(mJniData, language, country, variant);
+ }
+
+ /**
+ * Sets the language.
*/
public void setLanguage(String language, String country, String variant) {
native_setLanguage(mJniData, language, country, variant);
}
-
+
/**
* Loads the language: it's not set, but prepared for use later.
*/
@@ -82,42 +90,42 @@ public class SynthProxy {
}
/**
- * Sets the speech rate
+ * Sets the speech rate.
*/
public final void setSpeechRate(int speechRate) {
native_setSpeechRate(mJniData, speechRate);
}
/**
- * Sets the pitch of the synthesized voice
+ * Sets the pitch of the synthesized voice.
*/
public final void setPitch(int pitch) {
native_setPitch(mJniData, pitch);
}
/**
- * Plays the given audio buffer
+ * Plays the given audio buffer.
*/
public void playAudioBuffer(int bufferPointer, int bufferSize) {
native_playAudioBuffer(mJniData, bufferPointer, bufferSize);
}
/**
- * Gets the currently set language
+ * Returns the currently set language, country and variant information.
*/
- public String getLanguage() {
+ public String[] getLanguage() {
return native_getLanguage(mJniData);
}
/**
- * Gets the currently set rate
+ * Gets the currently set rate.
*/
public int getRate() {
return native_getRate(mJniData);
}
/**
- * Shuts down the native synthesizer
+ * Shuts down the native synthesizer.
*/
public void shutdown() {
native_shutdown(mJniData);
@@ -154,20 +162,23 @@ public class SynthProxy {
private native final void native_synthesizeToFile(int jniData, String text, String filename);
+ private native final int native_isLanguageAvailable(int jniData, String language,
+ String country, String variant);
+
private native final void native_setLanguage(int jniData, String language, String country,
String variant);
-
+
private native final void native_loadLanguage(int jniData, String language, String country,
String variant);
private native final void native_setSpeechRate(int jniData, int speechRate);
-
+
private native final void native_setPitch(int jniData, int speechRate);
// TODO add buffer format
private native final void native_playAudioBuffer(int jniData, int bufferPointer, int bufferSize);
- private native final String native_getLanguage(int jniData);
+ private native final String[] native_getLanguage(int jniData);
private native final int native_getRate(int jniData);