From 682b17ff66dff23e03c6a57de276ea0c3e670c0e Mon Sep 17 00:00:00 2001
From: yy1717 <fctom1215@outlook.com>
Date: 星期一, 23 三月 2020 18:44:47 +0800
Subject: [PATCH] 起步和直线

---
 lib/src/main/cpp/native-lib.cpp |   25 +++++++++++++++++++++++--
 1 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/lib/src/main/cpp/native-lib.cpp b/lib/src/main/cpp/native-lib.cpp
index e19a097..2769bd6 100644
--- a/lib/src/main/cpp/native-lib.cpp
+++ b/lib/src/main/cpp/native-lib.cpp
@@ -29,6 +29,10 @@
 const char *VIRTUAL_RTK_IP = "192.168.16.100";
 const int VIRTUAL_RTK_PORT = 9001;
 
+static pthread_mutex_t tts_mutex = PTHREAD_MUTEX_INITIALIZER;
+
+static int ttsSeq = 0;
+
 static void SendBootIndicate(union sigval sig);
 
 int DESEncrypt(const uint8_t *key, int key_length,
@@ -195,7 +199,18 @@
     }
 }
 
-void PlayTTS(const char *string, int id)
+static int GetTtsSeq(void)
+{
+    int seq = 0;
+
+    pthread_mutex_lock(&tts_mutex);
+    seq = ttsSeq++;
+    pthread_mutex_unlock(&tts_mutex);
+
+    return seq;
+}
+
+int PlayTTS(const char *string)
 {
     DEBUG("PlayTTS: %s", string);
 
@@ -206,7 +221,7 @@
         // Attach涓荤嚎绋�
         if (sg_jvm->AttachCurrentThread(&env, NULL) != JNI_OK) {
             LOGE("%s: AttachCurrentThread() failed", __FUNCTION__);
-            return;
+            return -1;
         }
     } else {
         ready_in_java_env = true;
@@ -214,6 +229,8 @@
 
     jclass cls = env->GetObjectClass(sg_obj);
     jmethodID fun = env->GetMethodID(cls, "TextSpeak", "(Ljava/lang/String;I)V");
+
+    int id = GetTtsSeq();
 
     env->CallVoidMethod(sg_obj, fun, env->NewStringUTF(string), id);
 
@@ -225,6 +242,8 @@
             LOGE("%s: DetachCurrentThread() failed", __FUNCTION__);
         }
     }
+
+    return id;
 }
 
 extern "C"
@@ -248,6 +267,8 @@
     AppTimer_add(SendBootIndicate, 500);
 
     InitVirtualDevice(VIRTUAL_RTK_IP, VIRTUAL_RTK_PORT);
+
+    pthread_mutex_init(&tts_mutex, NULL);
 }
 
 static void SendBootIndicate(union sigval sig) {

--
Gitblit v1.8.0