yy1717
2020-08-20 2d6a9d02c77d7e08d4f18ee87d6e3d337b949f47
lib/src/main/cpp/native-lib.cpp
@@ -3,6 +3,7 @@
#include <pthread.h>
#include <unistd.h>
#include <cstdlib>
#include <map>
#include "common/serial_port.h"
#include "jni_log.h"
#include "common/net.h"
@@ -34,6 +35,8 @@
static int ttsSeq = 1;
static void SendBootIndicate(union sigval sig);
static std::map<int, void (*)(int)> TTSCallBack;
int DESEncrypt(const uint8_t *key, int key_length,
        const uint8_t *plaintext, int plaintext_length,
@@ -210,7 +213,7 @@
    return seq;
}
int PlayTTS(const char *string)
int PlayTTS(const char *string, void (*callback)(int))
{
    DEBUG("PlayTTS: %s", string);
@@ -242,6 +245,8 @@
            LOGE("%s: DetachCurrentThread() failed", __FUNCTION__);
        }
    }
    TTSCallBack.insert(pair<int, void (*)(int)>(id, callback));
    return id;
}
@@ -314,5 +319,17 @@
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));
    auto it = TTSCallBack.find(id);
    if (it != TTSCallBack.end()) {
        if (it->second != NULL) {
            tts_back_t tb;
            tb.seq = id;
            tb.callback = (void (*)(int)) it->second;
            PlatformStatusChanged(PLAY_TTS_DONE_EVT, (uint8_t *)&tb, sizeof(tb));
        }
        TTSCallBack.erase(it);
    }
}