// 录音开始处理函数
void ThunderBirdModel::HandleAudioRecordingStart()
{
+ // 检查 WebSocket 连接状态,如果正在重连,等待重连完成
+ int wsState = ln_ws_get_connection_state();
+ bool wsConnected = (wsState == 2); // WS_STATE_CONNECTED = 2
+
+ if (!wsConnected) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HandleDialogueFunction: WebSocket未连接(状态=%d),等待连接完成", wsState);
+ // WebSocket 未连接,不执行操作,避免状态混乱
+ return;
+ }
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleAudioRecordingStart: 录音开始");
if(ThunderBirdDialogueView::GetInstance()->IsNormalEnd == false)
{
// return ;//需要vad的时候在处理
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleAudioRecordingEnd: 录音结束");
+ // 检查 WebSocket 连接状态,如果正在重连,等待重连完成
+ int wsState = ln_ws_get_connection_state();
+ bool wsConnected = (wsState == 2); // WS_STATE_CONNECTED = 2
+
+ if (!wsConnected) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HandleDialogueFunction: WebSocket未连接(状态=%d),等待连接完成", wsState);
+ // WebSocket 未连接,不执行操作,避免状态混乱
+ return;
+ }
// 检查是否正在退出对话模式,如果是则不应该跳转到播放界面
ThunderBirdPresenter* presenter = ThunderBirdPresenter::GetInstance();
if (presenter != nullptr && !presenter->isDialogueing) {
ThunderBirdModel::GetInstance()->ClearAudioTextQueue();
ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_SPEAKING);
} else if(currentView == THUNDERBIRD_DIALOGUEVIEW && currentSubView == ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_SPEAKING) {
+ // 检查 WebSocket 连接状态,如果正在重连,等待重连完成
+ int wsState = ln_ws_get_connection_state();
+ bool wsConnected = (wsState == 2); // WS_STATE_CONNECTED = 2
+
+ if (!wsConnected) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HandleDialogueFunction: WebSocket未连接(状态=%d),等待连接完成", wsState);
+ // WebSocket 未连接,不执行操作,避免状态混乱
+ return;
+ }
+
GraphicService::GetInstance()->PostGraphicEvent([]() {
AI_ForceInterrupt();
ln_ws_end_audio_chat();