OSDN Git Service

Adding tts result codes.
authorCharles Chen <clchen@google.com>
Mon, 6 Jul 2009 17:51:48 +0000 (10:51 -0700)
committerCharles Chen <clchen@google.com>
Mon, 6 Jul 2009 17:51:48 +0000 (10:51 -0700)
packages/TtsService/jni/android_tts_SynthProxy.cpp
packages/TtsService/src/android/tts/SynthProxy.java

index a55b704..058c033 100644 (file)
@@ -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",
index 91fe3b7..11a4380 100755 (executable)
@@ -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);