fctom1215
2020-03-10 e5e41dec2d41651c7160662ecf43325d49b07b66
lib/src/main/cpp/native-lib.cpp
@@ -82,36 +82,6 @@
    return ciphertext_length;
}
void TextSpeak(const char *text)
{
    JNIEnv *env;
    bool ready_in_java_env = false;
    if (sg_jvm->GetEnv((void **)&env, JNI_VERSION_1_6) != JNI_OK) {
        // Attach主线程
        if (sg_jvm->AttachCurrentThread(&env, NULL) != JNI_OK) {
            LOGE("%s: AttachCurrentThread() failed", __FUNCTION__);
            return;
        }
    } else {
        ready_in_java_env = true;
    }
    jclass cls = env->GetObjectClass(sg_obj);
    jmethodID fun = env->GetMethodID(cls, "TextSpeak", "(Ljava/lang/String;)V");
    std::string cstext = text;
    env->CallVoidMethod(sg_obj, fun, env->NewStringUTF(cstext.c_str()));
    env->DeleteLocalRef(cls);
    if (!ready_in_java_env) {
        //Detach主线程
        if (sg_jvm->DetachCurrentThread() != JNI_OK) {
            LOGE("%s: DetachCurrentThread() failed", __FUNCTION__);
        }
    }
}
void TextOsd(int type, const char *text)
{
/*    JNIEnv *env;
@@ -225,7 +195,7 @@
    }
}
void PlayTTS(const char *string)
void PlayTTS(const char *string, int id)
{
    DEBUG("PlayTTS: %s", string);
@@ -243,9 +213,9 @@
    }
    jclass cls = env->GetObjectClass(sg_obj);
    jmethodID fun = env->GetMethodID(cls, "TextSpeak", "(Ljava/lang/String;)V");
    jmethodID fun = env->GetMethodID(cls, "TextSpeak", "(Ljava/lang/String;I)V");
    env->CallVoidMethod(sg_obj, fun, env->NewStringUTF(string));
    env->CallVoidMethod(sg_obj, fun, env->NewStringUTF(string), id);
    env->DeleteLocalRef(cls);
@@ -266,6 +236,8 @@
    env->GetJavaVM(&sg_jvm);
    // 不能直接赋值(g_obj = ojb)
    sg_obj = env->NewGlobalRef(thiz);
    srand(time(NULL));
    AppTimer_Init();
    ConfigMCU();
@@ -309,3 +281,10 @@
    env->ReleaseByteArrayElements(data, c_dat, NULL);
}
extern "C"
JNIEXPORT void JNICALL
Java_com_anyun_exam_lib_RemoteService_TextSpeakEnd(JNIEnv *env, jobject thiz, jint id) {
    // TODO: implement TextSpeakEnd()
    PlatformStatusChanged(PLAY_TTS_DONE_EVT, (uint8_t *)&id, sizeof(id));
}