From cc0c4195bd8356e5fe8e8690a75c676972e3c5e5 Mon Sep 17 00:00:00 2001 From: Caisking Date: Sun, 21 Sep 2025 17:40:01 +0800 Subject: [PATCH] =?utf8?q?=E4=BC=98=E5=8C=96token=E8=8E=B7=E5=8F=96?= =?utf8?q?=E4=B8=9A=E5=8A=A1=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../thunderbird/include/ThunderBirdModel.h | 1 + .../thunderbird/src/ThunderBirdModel.cpp | 58 ++++++++++++------- .../thunderbird/src/ThunderBirdPresenter.cpp | 8 ++- .../src/kvstore_impl_posix/kv_store.c | 2 +- 4 files changed, 45 insertions(+), 24 deletions(-) diff --git a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/include/ThunderBirdModel.h b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/include/ThunderBirdModel.h index 4cfa4c40c..9577ceb91 100644 --- a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/include/ThunderBirdModel.h +++ b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/include/ThunderBirdModel.h @@ -199,6 +199,7 @@ namespace OHOS bool m_networkStatusChanged; // 网络状态变化标志位 bool is_all_services_ready = false; + bool init_falg = false; }; } diff --git a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdModel.cpp b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdModel.cpp index 149cfe1d9..20270ef7b 100644 --- a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdModel.cpp +++ b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdModel.cpp @@ -70,6 +70,8 @@ { // 初始化时加载提醒数据 // LoadRemindersFromFile(); + //创建kv文件夹 + uapi_create_folder("/user/system/kvstore/"); // 读取绑定状态 char temp[10] = { 0 }; (void)UtilsGetValue("bind_status", temp, 10); @@ -703,13 +705,14 @@ // ==================== 对话文本管理函数 ==================== std::string ThunderBirdModel::GetTextStr() { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "获取对话文本: %s", m_currentTimeStr.c_str()); return m_currentTimeStr; } void ThunderBirdModel::SetTextStr(const char *textId) { if (textId == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetTextStr: textId is null"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "设置对话文本: textId is null"); return; } @@ -718,7 +721,7 @@ // 添加文本内容 m_currentTimeStr = textId; - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetTextStr: added text, current length: %zu", m_currentTimeStr.length()); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "设置对话文本: %s", m_currentTimeStr.c_str()); } void ThunderBirdModel::ClearTextStr() @@ -1017,24 +1020,28 @@ // 更新网络状态信息(包括SIM卡、信号强度、网络连接等) UpdateNetworkStatus(); - // 检查网络状态是否发生变化 - if (IsNetworkStatusChanged()) { - if (HasNetwork()) { - // 网络连接成功,调用HTTP服务获取设备Token - do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_GET_DEVICE_TOKEN, NULL, 0); - // 获取一下OTA 是否有最新版本 - ota_update_boot(); - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Network connected, calling HTTP service"); - #if JUHEPINGTAI - uapi_init_all_websocket_servers(); - uapi_start_all_websocket_servers(); // 连接服务器 - #endif - } else { - // 网络断开,记录状态变化日志 - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Network disconnected"); + // 检查网络状态是否有网 + if(HasNetwork()) + { + if(get_is_ln_get_device_token_success() == 0) + { + do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_GET_DEVICE_TOKEN, NULL, 0); + } + else + { + if (init_falg == false) + { + // 网络连接成功,调用HTTP服务获取设备Token + // 获取一下OTA 是否有最新版本 + ota_update_boot(); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Network connected, calling HTTP service"); + #if JUHEPINGTAI + uapi_init_all_websocket_servers(); + uapi_start_all_websocket_servers(); // 连接服务器 + #endif + init_falg = true; + } } - // 重置网络状态变化标志位,避免重复处理 - SetNetworkStatusChanged(false); } #if JUHEPINGTAI @@ -1340,7 +1347,7 @@ } // 记录网络状态更新日志 - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"Network status updated: sim=%d, power=%d, signal=%d, network=%d, type=%d, hasNetwork=%d", + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"Network status updated: sim=%d, power=%d, signal=%d, network=%d, type=%d, hasNetwork=%d", m_simStatus, m_cat1PowerStatus, m_signalStrength, m_networkStatus, m_networkType, m_hasNetwork); } @@ -1382,13 +1389,22 @@ { } + /** + * @brief WebSocket AI答案回调函数 + * @param buf AI返回的文本内容(可能为NULL) + * @param type 消息类型 + * @note 此函数由WebSocket服务器管理器调用,SetTextStr会进行深拷贝,内存安全 + */ void ws_register_ai_answer_cb(char *buf, uint8_t type) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ws_register_ai_answer_cb:%s\n", buf ? buf : ""); if (buf && buf[0] != '\0') { // 先写入文本,再置对话标志,避免UI读到标志已置但文本尚未更新 - ThunderBirdModel::GetInstance()->SetTextStr(buf); set_start_conversation_flag(START_CONVERSATION_FLAG_START); + + // SetTextStr使用std::string,会自动进行深拷贝,内存安全 + // ThunderBirdModel::GetInstance()->SetTextStr(buf); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "buf processed: %s", buf); } else { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ws_register_ai_answer_cb: empty buf, skip update"); } diff --git a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdPresenter.cpp b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdPresenter.cpp index 96c1949a8..3374801b5 100644 --- a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdPresenter.cpp +++ b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdPresenter.cpp @@ -318,8 +318,12 @@ namespace OHOS void ThunderBirdPresenter::HandleDialogueFunction(int16_t currentView, int16_t currentSubView) { bool flag = ThunderBirdModel::GetInstance()->Get_is_all_services_ready(); - if (currentView == THUNDERBIRD_DIALOGUEVIEW && - currentSubView == ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_LISTENING && flag == true) { + if(flag == false) + { + return; + } + + if (currentView == THUNDERBIRD_DIALOGUEVIEW && currentSubView == ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_LISTENING) { // 停止录音并发送 // ThunderBirdModel::GetInstance()->StopRecording(); ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_SPEAKING); diff --git a/code/sdk/open_source/openharmony/utils/native/lite/kv_store/src/kvstore_impl_posix/kv_store.c b/code/sdk/open_source/openharmony/utils/native/lite/kv_store/src/kvstore_impl_posix/kv_store.c index f13f0c814..86b238a94 100644 --- a/code/sdk/open_source/openharmony/utils/native/lite/kv_store/src/kvstore_impl_posix/kv_store.c +++ b/code/sdk/open_source/openharmony/utils/native/lite/kv_store/src/kvstore_impl_posix/kv_store.c @@ -150,7 +150,7 @@ static int InitKv(const char* dataPath) free(kvPath); return EC_FAILURE; } - // printf("kvPath: %s\n", kvPath); + printf("kvPath: %s\n", kvPath); if (access(kvPath, F_OK) == F_OK) { free(kvPath); return EC_SUCCESS; -- 2.17.1