| | |
| | | |
| | | 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, |
| | |
| | | } |
| | | } |
| | | |
| | | void SendMsgToMainProc(int cmd, const char *value) |
| | | int SendMsgToMainProc(int cmd, const char *value) |
| | | { |
| | | JNIEnv *env; |
| | | bool ready_in_java_env = false; |
| | | int ret; |
| | | |
| | | 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; |
| | | return -3; |
| | | } |
| | | } else { |
| | | ready_in_java_env = true; |
| | | } |
| | | |
| | | jclass cls = env->GetObjectClass(sg_obj); |
| | | jmethodID fun = env->GetMethodID(cls, "SendMsgToMainProc", "(ILjava/lang/String;)V"); |
| | | jmethodID fun = env->GetMethodID(cls, "SendMsgToMainProc", "(ILjava/lang/String;)I"); |
| | | |
| | | env->CallVoidMethod(sg_obj, fun, cmd, value != NULL ? env->NewStringUTF(value) : NULL); |
| | | ret = env->CallIntMethod(sg_obj, fun, cmd, value != NULL ? env->NewStringUTF(value) : NULL); |
| | | |
| | | env->DeleteLocalRef(cls); |
| | | |
| | |
| | | LOGE("%s: DetachCurrentThread() failed", __FUNCTION__); |
| | | } |
| | | } |
| | | |
| | | return ret; |
| | | } |
| | | |
| | | static int GetTtsSeq(void) |
| | |
| | | |
| | | extern "C" |
| | | JNIEXPORT void JNICALL |
| | | Java_com_anyun_exam_lib_RemoteService_startNative(JNIEnv *env, jobject thiz) { |
| | | Java_com_anyun_exam_lib_RemoteService_startNative(JNIEnv *env, jobject thiz, jboolean ayDevice) { |
| | | // TODO: implement startNative() |
| | | // 保存全局JVM以便在子线程中使用 |
| | | DEBUG("启动Native"); |
| | |
| | | srand(time(NULL)); |
| | | |
| | | AppTimer_Init(); |
| | | ConfigMCU(); |
| | | ConfigMCU(ayDevice); |
| | | DriverTestInit(); |
| | | ConfigRTKModule(); |
| | | ConfigRTKModule(ayDevice); |
| | | MA_Init(); |
| | | InitPlatform(phone, RTK_PLATFORM_IP, RTK_PLATFORM_PORT); |
| | | AppTimer_add(SendBootIndicate, D_SEC(1)); |
| | | InitPlatform(ayDevice, phone, RTK_PLATFORM_IP, RTK_PLATFORM_PORT); |
| | | |
| | | InitVirtualDevice(VIRTUAL_RTK_IP, VIRTUAL_RTK_PORT); |
| | | |
| | | pthread_mutex_init(&tts_mutex, NULL); |
| | | } |
| | | |
| | | static void SendBootIndicate(union sigval sig) { |
| | | static int n = 0; |
| | | AppTimer_delete(SendBootIndicate); |
| | | MA_NdkStart(); |
| | | |
| | | n++; |
| | | |
| | | if (n < 3) { |
| | | AppTimer_add(SendBootIndicate, D_SEC(1)); |
| | | } |
| | | } |
| | | |
| | | extern "C" |