diff options
| author | Charles Chen <clchen@google.com> | 2009-07-06 10:51:48 -0700 |
|---|---|---|
| committer | Charles Chen <clchen@google.com> | 2009-07-06 10:51:48 -0700 |
| commit | 35b86c273ac69bde967d0828c1683c71f0de530a (patch) | |
| tree | 34bbe00c3cbc28f8059a09e88353663c6df890ec /packages | |
| parent | 46841db4f2c7360d3b861a816e51f76acca0d677 (diff) | |
| download | frameworks_base-35b86c273ac69bde967d0828c1683c71f0de530a.zip frameworks_base-35b86c273ac69bde967d0828c1683c71f0de530a.tar.gz frameworks_base-35b86c273ac69bde967d0828c1683c71f0de530a.tar.bz2 | |
Adding tts result codes.
Diffstat (limited to 'packages')
| -rw-r--r-- | packages/TtsService/jni/android_tts_SynthProxy.cpp | 108 | ||||
| -rwxr-xr-x | packages/TtsService/src/android/tts/SynthProxy.java | 14 |
2 files changed, 74 insertions, 48 deletions
diff --git a/packages/TtsService/jni/android_tts_SynthProxy.cpp b/packages/TtsService/jni/android_tts_SynthProxy.cpp index a55b704..058c033 100644 --- a/packages/TtsService/jni/android_tts_SynthProxy.cpp +++ b/packages/TtsService/jni/android_tts_SynthProxy.cpp @@ -298,7 +298,7 @@ android_tts_SynthProxy_isLanguageAvailable(JNIEnv *env, jobject thiz, jint jniDa 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); @@ -310,61 +310,70 @@ android_tts_SynthProxy_isLanguageAvailable(JNIEnv *env, jobject thiz, jint jniDa } -static void +static int android_tts_SynthProxy_setLanguage(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_setLanguage(): invalid JNI data"); - return; + 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) { - pSynthData->mNativeSynthInterface->setLanguage(langNativeString, countryNativeString, - variantNativeString); + result = pSynthData->mNativeSynthInterface->setLanguage(langNativeString, + countryNativeString, variantNativeString); } env->ReleaseStringUTFChars(language, langNativeString); env->ReleaseStringUTFChars(country, countryNativeString); env->ReleaseStringUTFChars(variant, variantNativeString); + return result; } -static void +static int android_tts_SynthProxy_loadLanguage(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_loadLanguage(): invalid JNI data"); - return; + 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) { - pSynthData->mNativeSynthInterface->loadLanguage(langNativeString, countryNativeString, - variantNativeString); + result = pSynthData->mNativeSynthInterface->loadLanguage(langNativeString, + countryNativeString, variantNativeString); } env->ReleaseStringUTFChars(language, langNativeString); env->ReleaseStringUTFChars(country, countryNativeString); env->ReleaseStringUTFChars(variant, variantNativeString); + + return result; } -static void +static int android_tts_SynthProxy_setSpeechRate(JNIEnv *env, jobject thiz, jint jniData, jint speechRate) { + int result = TTS_FAILURE; + if (jniData == 0) { LOGE("android_tts_SynthProxy_setSpeechRate(): invalid JNI data"); - return; + return result; } int bufSize = 10; @@ -373,20 +382,24 @@ android_tts_SynthProxy_setSpeechRate(JNIEnv *env, jobject thiz, jint jniData, SynthProxyJniStorage* pSynthData = (SynthProxyJniStorage*)jniData; LOGI("setting speech rate to %d", speechRate); - // TODO check return codes + if (pSynthData->mNativeSynthInterface) { - pSynthData->mNativeSynthInterface->setProperty("rate", buffer, bufSize); + result = pSynthData->mNativeSynthInterface->setProperty("rate", buffer, bufSize); } + + return result; } -static void +static int android_tts_SynthProxy_setPitch(JNIEnv *env, jobject thiz, jint jniData, jint pitch) { + int result = TTS_FAILURE; + if (jniData == 0) { LOGE("android_tts_SynthProxy_setPitch(): invalid JNI data"); - return; + return result; } int bufSize = 10; @@ -395,26 +408,30 @@ android_tts_SynthProxy_setPitch(JNIEnv *env, jobject thiz, jint jniData, SynthProxyJniStorage* pSynthData = (SynthProxyJniStorage*)jniData; LOGI("setting pitch to %d", pitch); - // TODO check return codes + if (pSynthData->mNativeSynthInterface) { - pSynthData->mNativeSynthInterface->setProperty("pitch", buffer, bufSize); + result = pSynthData->mNativeSynthInterface->setProperty("pitch", buffer, bufSize); } + + return result; } -static void +static int android_tts_SynthProxy_synthesizeToFile(JNIEnv *env, jobject thiz, jint jniData, jstring textJavaString, jstring filenameJavaString) { + int result = TTS_FAILURE; + if (jniData == 0) { LOGE("android_tts_SynthProxy_synthesizeToFile(): invalid JNI data"); - return; + return result; } SynthProxyJniStorage* pSynthData = (SynthProxyJniStorage*)jniData; if (!pSynthData->mNativeSynthInterface) { LOGE("android_tts_SynthProxy_synthesizeToFile(): invalid engine handle"); - return; + return result; } // Retrieve audio parameters before writing the file header @@ -425,7 +442,7 @@ android_tts_SynthProxy_synthesizeToFile(JNIEnv *env, jobject thiz, jint jniData, if ((encoding != AudioSystem::PCM_16_BIT) && (encoding != AudioSystem::PCM_8_BIT)) { LOGE("android_tts_SynthProxy_synthesizeToFile(): engine uses invalid format"); - return; + return result; } const char *filenameNativeString = @@ -441,7 +458,7 @@ android_tts_SynthProxy_synthesizeToFile(JNIEnv *env, jobject thiz, jint jniData, if (pForAfter->outputFile == NULL) { LOGE("android_tts_SynthProxy_synthesizeToFile(): error creating output file"); delete pForAfter; - return; + return result; } // Write 44 blank bytes for WAV header, then come back and fill them in @@ -451,9 +468,8 @@ android_tts_SynthProxy_synthesizeToFile(JNIEnv *env, jobject thiz, jint jniData, unsigned int unique_identifier; - // TODO check return codes - pSynthData->mNativeSynthInterface->synthesizeText(textNativeString, pSynthData->mBuffer, - pSynthData->mBufferSize, (void *)pForAfter); + result = pSynthData->mNativeSynthInterface->synthesizeText(textNativeString, + pSynthData->mBuffer, pSynthData->mBufferSize, (void *)pForAfter); long filelen = ftell(pForAfter->outputFile); @@ -503,16 +519,20 @@ android_tts_SynthProxy_synthesizeToFile(JNIEnv *env, jobject thiz, jint jniData, env->ReleaseStringUTFChars(textJavaString, textNativeString); env->ReleaseStringUTFChars(filenameJavaString, filenameNativeString); + + return result; } -static void +static int android_tts_SynthProxy_speak(JNIEnv *env, jobject thiz, jint jniData, jstring textJavaString) { + int result = TTS_FAILURE; + if (jniData == 0) { LOGE("android_tts_SynthProxy_speak(): invalid JNI data"); - return; + return result; } SynthProxyJniStorage* pSynthData = (SynthProxyJniStorage*)jniData; @@ -528,29 +548,35 @@ android_tts_SynthProxy_speak(JNIEnv *env, jobject thiz, jint jniData, if (pSynthData->mNativeSynthInterface) { const char *textNativeString = env->GetStringUTFChars(textJavaString, 0); - pSynthData->mNativeSynthInterface->synthesizeText(textNativeString, pSynthData->mBuffer, - pSynthData->mBufferSize, (void *)pForAfter); + result = pSynthData->mNativeSynthInterface->synthesizeText(textNativeString, + pSynthData->mBuffer, pSynthData->mBufferSize, (void *)pForAfter); env->ReleaseStringUTFChars(textJavaString, textNativeString); } + + return result; } -static void +static int android_tts_SynthProxy_stop(JNIEnv *env, jobject thiz, jint jniData) { + int result = TTS_FAILURE; + if (jniData == 0) { LOGE("android_tts_SynthProxy_stop(): invalid JNI data"); - return; + return result; } SynthProxyJniStorage* pSynthData = (SynthProxyJniStorage*)jniData; if (pSynthData->mNativeSynthInterface) { - pSynthData->mNativeSynthInterface->stop(); + result = pSynthData->mNativeSynthInterface->stop(); } if (pSynthData->mAudioOut) { pSynthData->mAudioOut->stop(); } + + return result; } @@ -642,15 +668,15 @@ android_tts_SynthProxy_getRate(JNIEnv *env, jobject thiz, jint jniData) // Dalvik VM type signatures static JNINativeMethod gMethods[] = { { "native_stop", - "(I)V", + "(I)I", (void*)android_tts_SynthProxy_stop }, { "native_speak", - "(ILjava/lang/String;)V", + "(ILjava/lang/String;)I", (void*)android_tts_SynthProxy_speak }, { "native_synthesizeToFile", - "(ILjava/lang/String;Ljava/lang/String;)V", + "(ILjava/lang/String;Ljava/lang/String;)I", (void*)android_tts_SynthProxy_synthesizeToFile }, { "native_isLanguageAvailable", @@ -658,19 +684,19 @@ static JNINativeMethod gMethods[] = { (void*)android_tts_SynthProxy_isLanguageAvailable }, { "native_setLanguage", - "(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V", + "(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)I", (void*)android_tts_SynthProxy_setLanguage }, { "native_loadLanguage", - "(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V", + "(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)I", (void*)android_tts_SynthProxy_loadLanguage }, { "native_setSpeechRate", - "(II)V", + "(II)I", (void*)android_tts_SynthProxy_setSpeechRate }, { "native_setPitch", - "(II)V", + "(II)I", (void*)android_tts_SynthProxy_setPitch }, { "native_playAudioBuffer", diff --git a/packages/TtsService/src/android/tts/SynthProxy.java b/packages/TtsService/src/android/tts/SynthProxy.java index 91fe3b7..11a4380 100755 --- a/packages/TtsService/src/android/tts/SynthProxy.java +++ b/packages/TtsService/src/android/tts/SynthProxy.java @@ -156,24 +156,24 @@ public class SynthProxy { private native final void native_finalize(int jniData); - private native final void native_stop(int jniData); + private native final int native_stop(int jniData); - private native final void native_speak(int jniData, String text); + private native final int native_speak(int jniData, String text); - private native final void native_synthesizeToFile(int jniData, String text, String filename); + private native final int 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, + private native final int native_setLanguage(int jniData, String language, String country, String variant); - private native final void native_loadLanguage(int jniData, String language, String country, + private native final int native_loadLanguage(int jniData, String language, String country, String variant); - private native final void native_setSpeechRate(int jniData, int speechRate); + private native final int native_setSpeechRate(int jniData, int speechRate); - private native final void native_setPitch(int jniData, int speechRate); + private native final int native_setPitch(int jniData, int speechRate); // TODO add buffer format private native final void native_playAudioBuffer(int jniData, int bufferPointer, int bufferSize); |
