Loading packages/TtsService/jni/android_tts_SynthProxy.cpp +51 −10 Original line number Diff line number Diff line Loading @@ -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) Loading Loading @@ -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); } Loading Loading @@ -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 Loading @@ -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", Loading packages/TtsService/src/android/tts/SynthProxy.java +23 −12 Original line number Diff line number Diff line Loading @@ -68,7 +68,15 @@ 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); Loading @@ -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); Loading Loading @@ -154,6 +162,9 @@ 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); Loading @@ -167,7 +178,7 @@ public class SynthProxy { // 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); Loading Loading
packages/TtsService/jni/android_tts_SynthProxy.cpp +51 −10 Original line number Diff line number Diff line Loading @@ -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) Loading Loading @@ -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); } Loading Loading @@ -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 Loading @@ -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", Loading
packages/TtsService/src/android/tts/SynthProxy.java +23 −12 Original line number Diff line number Diff line Loading @@ -68,7 +68,15 @@ 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); Loading @@ -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); Loading Loading @@ -154,6 +162,9 @@ 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); Loading @@ -167,7 +178,7 @@ public class SynthProxy { // 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); Loading