优化对话流程 2628/2 2628/head 2629/target/1
authorxue <2144439972@qq.com>
Wed, 29 Oct 2025 07:19:34 +0000 (15:19 +0800)
committerxue <2144439972@qq.com>
Wed, 29 Oct 2025 07:19:34 +0000 (15:19 +0800)
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/include/ThunderBirdLullabyView.h
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdLullabyView.cpp
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdMainView.cpp
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdModel.cpp
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdPresenter.cpp
code/sdk/zhihui/leiniao/imsl_ln/ln_api_websocket.c

index 98bd2d2..f64056e 100644 (file)
@@ -14,7 +14,7 @@ namespace OHOS
     static constexpr int16_t TB_LISTEN_Y = 151;
     static constexpr int16_t TB_LISTEN_W = 36;
     static constexpr int16_t TB_LISTEN_H = 36;
-    static constexpr int16_t TB_LISTEN_FRAMES = 95;
+    static constexpr int16_t TB_LISTEN_FRAMES = 61;
     static constexpr int16_t TB_LISTEN_INTERVAL = 41;
     static constexpr const char *TB_LISTEN_PATH = "/user/res/animated_icon/listen/";
 
index 5306305..73f1693 100644 (file)
@@ -74,40 +74,6 @@ namespace OHOS
         TB_LISTEN_IMAGE_59,
         TB_LISTEN_IMAGE_60,
         TB_LISTEN_IMAGE_61,
-        TB_LISTEN_IMAGE_62,
-        TB_LISTEN_IMAGE_63,
-        TB_LISTEN_IMAGE_64,
-        TB_LISTEN_IMAGE_65,
-        TB_LISTEN_IMAGE_66,
-        TB_LISTEN_IMAGE_67,
-        TB_LISTEN_IMAGE_68,
-        TB_LISTEN_IMAGE_69,
-        TB_LISTEN_IMAGE_70,
-        TB_LISTEN_IMAGE_71,
-        TB_LISTEN_IMAGE_72,
-        TB_LISTEN_IMAGE_73,
-        TB_LISTEN_IMAGE_74,
-        TB_LISTEN_IMAGE_75,
-        TB_LISTEN_IMAGE_76,
-        TB_LISTEN_IMAGE_77,
-        TB_LISTEN_IMAGE_78,
-        TB_LISTEN_IMAGE_79,
-        TB_LISTEN_IMAGE_80,
-        TB_LISTEN_IMAGE_81,
-        TB_LISTEN_IMAGE_82,
-        TB_LISTEN_IMAGE_83,
-        TB_LISTEN_IMAGE_84,
-        TB_LISTEN_IMAGE_85,
-        TB_LISTEN_IMAGE_86,
-        TB_LISTEN_IMAGE_87,
-        TB_LISTEN_IMAGE_88,
-        TB_LISTEN_IMAGE_89,
-        TB_LISTEN_IMAGE_90,
-        TB_LISTEN_IMAGE_91,
-        TB_LISTEN_IMAGE_92,
-        TB_LISTEN_IMAGE_93,
-        TB_LISTEN_IMAGE_94,
-        TB_LISTEN_IMAGE_95,
     };
 
     ThunderBirdLullabyView::ThunderBirdLullabyView()
@@ -168,6 +134,7 @@ namespace OHOS
     {
         if (listenAnimator == nullptr)
         {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdLullabyView::EnsureListenAnimator: 创建聆听动画");
             listenPathsArray = TB_LULLABY_LISTEN_PATHS;
             listenAnimator = new UIImageAnimatorView();
             if (listenAnimator == nullptr)
@@ -187,12 +154,14 @@ namespace OHOS
             }
             listenAnimator->SetPosition(TB_LISTEN_X, TB_LISTEN_Y, TB_LISTEN_W, TB_LISTEN_H);
             listenAnimator->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);
-            listenAnimator->SetStyle(STYLE_BACKGROUND_OPA, 0xff);
+            listenAnimator->SetStyle(STYLE_BACKGROUND_OPA, 0x00);
             listenAnimator->SetImageAnimatorSrc(listenImageInfo, TB_LISTEN_FRAMES, TB_LISTEN_INTERVAL);
-            listenAnimator->SetRepeat(false);
+            listenAnimator->SetRepeat(true);
             listenAnimator->SetRepeatTimes(1);
             listenAnimator->SetResizeMode(UIImageView::COVER);
             //listenAnimator->SetAnimatorStopListener(this);
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdLullabyView::EnsureListenAnimator: 动画配置完成,位置=(%d,%d), 大小=(%d,%d), 帧数=%d", 
+                         TB_LISTEN_X, TB_LISTEN_Y, TB_LISTEN_W, TB_LISTEN_H, TB_LISTEN_FRAMES);
         }
         return true;
     }
@@ -325,6 +294,7 @@ namespace OHOS
         }
         case THUNDERBIRD_LULLABYVIEW_3:
         {
+            ln_ws_start_audio_chat(LN_AUDIO_CHAT_CHOOSE_STORY_REQUEST);
             ThunderBirdMainView::GetInstance()->OpenBackGround();
             if (TextLabel)
             {
@@ -334,7 +304,13 @@ namespace OHOS
                 TextLabel->SetRollSpeed(35);
                 TextLabel->SetVisible(true);
             }
-            if (listenAnimator) { listenAnimator->SetVisible(true);  }
+            if (listenAnimator) { 
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdLullabyView::Show: 启动聆听动画");
+                listenAnimator->SetVisible(true); 
+                listenAnimator->Start(); 
+            } else {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdLullabyView::Show: listenAnimator is null");
+            }
             if (RemindLabel)
             {
                 RemindLabel->SetPosition(80, 275, 200, 25);
@@ -372,7 +348,7 @@ namespace OHOS
                 ThunderBirdModel::GetInstance()->StopCountUpTimer();
                 
                 // 停止AI语音播放
-                ai_media_play_stop();
+                // ai_media_play_stop();
                 WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ThunderBirdLullabyView::Show: Stopped AI audio playback");
                 
                 // 结束音频聊天
@@ -396,7 +372,7 @@ namespace OHOS
             if (TextLabel)
             {
                 TextLabel->SetPosition(35, 64, 300, 42);
-                TextLabel->SetText("");//设置为空
+                TextLabel->SetText("正在准备故事...");//设置初始文字
                 TextLabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE); 
                 TextLabel->SetRollSpeed(55); 
                 TextLabel->SetVisible(true);
@@ -404,6 +380,7 @@ namespace OHOS
             if (TextLabel_Y)
             {
                 TextLabel_Y->SetPosition(37, 66, 300, 42);
+                TextLabel_Y->SetText("正在准备故事...");//设置初始文字
                 TextLabel_Y->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE); 
                 TextLabel_Y->SetStyle(STYLE_TEXT_COLOR, 0xff000000);
                 TextLabel_Y->SetRollSpeed(55); 
@@ -469,17 +446,24 @@ namespace OHOS
 
     void ThunderBirdLullabyView::UpdateLullabyText(const char *text)
     {
-           // 先停止滚动,确保同步
-           TextLabel->SetAnimState(Animator::STOP);
-           TextLabel_Y->SetAnimState(Animator::STOP);
-           
-           // 设置文本
-           TextLabel->SetText(text); 
-           TextLabel_Y->SetText(text);
-           
-           // 同时开始滚动,确保同步
-           TextLabel->SetAnimState(Animator::START);
-           TextLabel_Y->SetAnimState(Animator::START);
+        if(!TextLabel || !TextLabel_Y) {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdLullabyView::UpdateLullabyText: TextLabel or TextLabel_Y is null");
+            return;
+        }
+        
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdLullabyView::UpdateLullabyText: 更新故事文字: %s", text ? text : "null");
+        
+        // 先停止滚动,确保同步
+        TextLabel->SetAnimState(Animator::STOP);
+        TextLabel_Y->SetAnimState(Animator::STOP);
+        
+        // 设置文本
+        TextLabel->SetText(text); 
+        TextLabel_Y->SetText(text);
+        
+        // 同时开始滚动,确保同步
+        TextLabel->SetAnimState(Animator::START);
+        TextLabel_Y->SetAnimState(Animator::START);
     }
 }
 
index 61d8955..8ffa3d4 100644 (file)
@@ -608,7 +608,7 @@ namespace OHOS
             WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ThunderBirdMainView::ChangeView: 从常亮界面退出,关闭屏幕常亮,重新设置息屏时间");
             ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON); // 关闭屏幕常亮
             uapi_setScreenDuration(30000); // 重新设置30秒自动息屏
-            ThunderBirdModel::GetInstance()->HighFrequence();
+            //ThunderBirdModel::GetInstance()->HighFrequence();
         }
        
         // OTA界面已独立为slice,不再需要此检查
index 7d90c18..8241319 100644 (file)
                             restore_factory_settings();
                         } else {
                             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "普通警告界面超时,返回原任务");
-                            view->GoBackToPreviousView();
+                            ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_STATUS_SHOW);
                         }
                     }
                     // 检查是否是任务提醒界面,需要返回原任务
                              currentSubView == ThunderBirdReminderView::THUNDERBIRD_REMINDERVIEW_TASK_REMINDER) {
                         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "任务提醒界面超时,返回原任务");
                         ThunderBirdModel::GetInstance()->HighFrequence();
-                        view->GoBackToPreviousView();
+                        ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_STATUS_SHOW);
                     }
                 }
             } else {
            //若为意图识别结果,则跳转到4,否则跳转到2
            if(is_intention_result == 0)
            {
-              WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleSleepModeStart: 意图识别结果,跳转到4");
+              WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleSleepModeStart: 非意图识别结果,跳转到4");
                 ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_LULLABYVIEW, ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_4);
                 //清空文本队列
                 ClearAudioTextQueue();
            }
            else//意图识别结果
            {
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleSleepModeStart: 非意图识别结果,跳转到2");
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleSleepModeStart: 意图识别结果,跳转到2");
+                //看后续是否需要
+                ln_ws_end_audio_chat();//结束对话
                 ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_LULLABYVIEW, ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_2);
            }
         } else {
         if (view) {
             int16_t currentView = view->GetCurrentView();
             int16_t currentSubView = view->GetCurrentSubView();
-            
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleAudioRecordingEnd: currentView=%d, currentSubView=%d", currentView, currentSubView);
             // 如果当前在对话界面,且不是在状态显示界面(说明是正常录音结束,不是退出对话)
             if (currentView == THUNDERBIRD_DIALOGUEVIEW && 
-                currentSubView != ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_STATUS_SHOW) {
+                currentSubView == ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_LISTENING) {
                 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "录音结束,跳转到播放界面");
                 view->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_SPEAKING);
-                
+                }
+            else if (currentView == THUNDERBIRD_LULLABYVIEW && 
+                currentSubView == ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_3) {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "录音结束,跳转到故事选择界面");
+                view->ChangeView(currentView, THUNDERBIRD_LULLABYVIEW, ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_4);
+                }
+            else{
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleAudioRecordingEnd: 不满足推送条件 ");
+            }
                 // 停止聆听超时定时器
                 StopCountUpTimer();
                 
                 // 清空音频文本队列
                 ClearAudioTextQueue();
-            } else {
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "录音结束,但当前在状态显示界面,跳过界面跳转(可能是退出对话模式)");
             }
-        }
+            else
+            {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleAudioRecordingEnd: 不满足推送条件 ");
+            }
+        
     }
     
     // 将英文表情映射到英文文件名
            ThunderBirdLullabyView::GetInstance()->UpdateLullabyText(text.c_str());
            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "音频开始播放,显示哄睡文本: %s", text.c_str());
        }
+       else
+       {
+           WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::DequeueAndPushAudioText: 不满足推送条件 - ThunderBirdLullabyView::GetInstance()=%p, currentSubView=%d, THUNDERBIRD_LULLABYVIEW_4=%d", 
+                        ThunderBirdLullabyView::GetInstance(), currentSubView, ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_4);
+       }
    }
 
    // 检查队列中是否有文本
index 0045ae7..b661ff3 100644 (file)
@@ -281,6 +281,13 @@ namespace OHOS
         // 短按FUNC键(息屏状态下)
         if (keyState == InputDevice::STATE_PRESS && screenState == 0 ) {
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HandleFuncKey: KEY_TYPE_FUNC press");
+            
+            // 在非对话模式下按下FUNC键时,预先初始化音频
+            if (!isDialogueing && (currentView == THUNDERBIRD_DIALOGUEVIEW && currentSubView == ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_STATUS_SHOW)) {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "非对话模式下FUNC键按下,预先初始化音频");
+                do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_AUDIO_INIT, NULL, 0);
+            }
+            
             if(currentView == THUNDERBIRD_LULLABYVIEW && currentSubView == ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_3)
             {
                 HandleLullabyFunction(currentView, currentSubView);              
@@ -296,6 +303,12 @@ namespace OHOS
             }
         }
         
+        // FUNC键松开时,如果没有进入对话模式则关闭音频初始化
+        if (keyState == InputDevice::STATE_RELEASE && screenState == 0 && !isDialogueing && currentView != THUNDERBIRD_LULLABYVIEW) {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FUNC键松开,未进入对话模式,关闭音频初始化");
+            do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_AUDIO_DEINIT, NULL, 0);
+        }
+        
         return true;
     }
 
@@ -507,7 +520,16 @@ namespace OHOS
                     ThunderBirdMainView::GetInstance()->ChangeView(THUNDERBIRD_GUIDEVIEW, THUNDERBIRD_GUIDEVIEW, ThunderBirdGuideView::THUNDERBIRD_GUIDEVIEW_5);
                     break;
                 case ThunderBirdGuideView::THUNDERBIRD_GUIDEVIEW_5:
-                    ThunderBirdMainView::GetInstance()->ChangeView(THUNDERBIRD_GUIDEVIEW, THUNDERBIRD_GUIDEVIEW, ThunderBirdGuideView::THUNDERBIRD_GUIDEVIEW_1);
+                    // THUNDERBIRD_GUIDEVIEW_5 按音量+键跳转到对话界面并开启对话
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "THUNDERBIRD_GUIDEVIEW_5: 进入对话模式");
+                    ThunderBirdMainView::GetInstance()->ChangeView(THUNDERBIRD_GUIDEVIEW, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_LISTENING);
+                    isDialogueing = true;
+                    // 进入对话模式时记录当前表情
+                    //ThunderBirdModel::GetInstance()->OnEnterDialogueMode();
+                    // 开始对话
+                    do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_AUDIO_INIT, NULL, 0);
+                    ln_ws_start_audio_chat(LN_AUDIO_CHAT_VOICE_CHAT_REQUEST);
+                    
                     break;
             }
         }
@@ -560,22 +582,36 @@ namespace OHOS
         {
         switch (currentSubView) {
             case ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_2:
-                ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_LULLABYVIEW, ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_4);
+                ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_LULLABYVIEW, ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_3);
                 //清空文本队列
+                ln_ws_end_audio_chat();//结束对话
+                AI_ForceInterrupt();
+                ln_ws_send_voice_chat_interrupt("进入哄睡");
                 ThunderBirdModel::GetInstance()->ClearAudioTextQueue();
-                ln_ws_audio_init();//功耗优化
-                ln_ws_send_random_story_request("随机故事");
+                ln_ws_start_audio_chat(LN_AUDIO_CHAT_CHOOSE_STORY_REQUEST);
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HandleLullabyViewNavigation: 选择故事");
+                //ln_ws_send_random_story_request("随机故事");
                 break;
             case ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_3:
                 ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_LULLABYVIEW, ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_4);
+                ln_ws_end_audio_chat();//结束对话
+                AI_ForceInterrupt();
+                ln_ws_send_voice_chat_interrupt("进入哄睡");
+                ThunderBirdModel::GetInstance()->ClearAudioTextQueue();
+                //ln_ws_start_audio_chat(LN_AUDIO_CHAT_CHOOSE_STORY_REQUEST);
+                ln_ws_send_random_story_request("随机故事");
                 break;
             case ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_4:
                 ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_LULLABYVIEW, ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_5);
                 break;
             case ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_5:
+                ln_ws_end_audio_chat();//结束对话
                 do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_STORY_FINISH, NULL, 0);//确认结束哄睡
+                // 退出对话模式时恢复表情
                 AI_ForceInterrupt();
                 ln_ws_send_voice_chat_interrupt("退出哄睡");
+                do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_AUDIO_DEINIT, NULL, 0);
+                ThunderBirdModel::GetInstance()->HighFrequence();//恢复视频帧率
                 ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_STATUS_SHOW);
                 break;
         }
@@ -583,8 +619,20 @@ namespace OHOS
         else if(keyType == KEY_TYPE_VENDOR_DOWN)
         {
             switch (currentSubView) {
+                case ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_2:
+                    ln_ws_end_audio_chat();//结束对话
+                    AI_ForceInterrupt();
+                    ln_ws_send_voice_chat_interrupt("退出哄睡");
+                    ln_ws_start_audio_chat(LN_AUDIO_CHAT_VOICE_CHAT_REQUEST);//开始对话
+                    ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_SPEAKING);
+                 
+                    break;
                 case ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_3:
-                    ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_LULLABYVIEW, ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_4);
+                ln_ws_end_audio_chat();//结束对话
+                AI_ForceInterrupt();
+                ln_ws_send_voice_chat_interrupt("退出哄睡");
+                ln_ws_start_audio_chat(LN_AUDIO_CHAT_VOICE_CHAT_REQUEST);//开始对话
+                ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_SPEAKING);
                     break;
                 case ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_5:
                     ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_LULLABYVIEW, ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_4);
@@ -610,7 +658,8 @@ namespace OHOS
                 //回原界面
                 ThunderBirdModel::GetInstance()->StopCountUpTimer(); // 手动跳转时关闭定时器
                 ThunderBirdModel::GetInstance()->HighFrequence();
-                ThunderBirdMainView::GetInstance()->GoBackToPreviousView();
+                ThunderBirdMainView::GetInstance()->ChangeView(THUNDERBIRD_ADJUSTVIEW, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_STATUS_SHOW);
+
                 break;
             case ThunderBirdReminderView::THUNDERBIRD_REMINDERVIEW_DIALOGUE_NOT_ENOUGH://提醒界面-对话不足
                 ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_STATUS_SHOW);
@@ -653,7 +702,8 @@ namespace OHOS
             switch (currentSubView) {
                 case ThunderBirdAdjustView::THUNDERBIRD_ADJUSTVIEW_WARNING://退出返回原任务
                     ThunderBirdModel::GetInstance()->StopCountUpTimer(); // 手动跳转时关闭定时器
-                    ThunderBirdMainView::GetInstance()->GoBackToPreviousView();
+                    ThunderBirdMainView::GetInstance()->ChangeView(THUNDERBIRD_ADJUSTVIEW, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_STATUS_SHOW);
+
                     break;
             }
         }
@@ -704,17 +754,17 @@ namespace OHOS
             if((currentView == THUNDERBIRD_DIALOGUEVIEW && currentSubView == ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_STATUS_SHOW) 
             || (currentView == THUNDERBIRD_GUIDEVIEW))
             {
+                ThunderBirdModel::GetInstance()->LowFrequence();//减低视频帧率
                 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "进入对话模式");
                 ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_LISTENING);
                 isDialogueing = true;
                 // 进入对话模式时记录当前表情
                 ThunderBirdModel::GetInstance()->OnEnterDialogueMode();
-                //ThunderBirdDialogueView::GetInstance()->UpdateDialogueText("点击开始对话");
-                //DialogueingFlag = true;
-                //ln_ws_audio_init();//功耗优化
+                // do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_AUDIO_INIT, NULL, 0);
+                // 音频已在按键按下时初始化,这里直接开始对话
                 ln_ws_start_audio_chat(LN_AUDIO_CHAT_VOICE_CHAT_REQUEST);//开始对话
                 
-                do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_AUDIO_INIT, NULL, 0);
+               
             }
             else if(currentView == THUNDERBIRD_DIALOGUEVIEW)
             {
@@ -727,20 +777,25 @@ namespace OHOS
                 }
                 
                 // 停止实际的音频播放
-                ai_media_play_stop();
+                // ai_media_play_stop();
                 WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ThunderBirdPresenter::HandleFuncKeyLongPress: Stopped AI audio playback");
                 ln_ws_end_audio_chat();//结束对话
                 
                 // 退出对话模式时恢复表情
                 AI_ForceInterrupt();
                 ln_ws_send_voice_chat_interrupt("退出对话");
-
-                //ln_ws_audio_deinit();//功耗优化
-               
                 do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_AUDIO_DEINIT, NULL, 0);
-                 isDialogueing = false;
+                isDialogueing = false;
                 // DialogueingFlag = false;
-                 ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_STATUS_SHOW);
+                
+                // 检查绑定状态,如果未绑定则跳转到 THUNDERBIRD_GUIDEVIEW_5
+                if (!ThunderBirdModel::GetInstance()->getbind_status()) {
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "设备未绑定,跳转到 THUNDERBIRD_GUIDEVIEW_5");
+                    ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_GUIDEVIEW, ThunderBirdGuideView::THUNDERBIRD_GUIDEVIEW_5);
+                } else {
+                    ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_STATUS_SHOW);
+                }
+                 ThunderBirdModel::GetInstance()->HighFrequence();//恢复视频帧率
                  ThunderBirdModel::GetInstance()->OnExitDialogueMode();
                 
             }
index 6e84e58..3306f2a 100644 (file)
@@ -19,7 +19,7 @@
 #define ENABLE_BINARY_DATA_INTERRUPT_CHECK 1  // 启用二进制数据间隔检查
 
 // 主线程循环间隔时长(毫秒)
-#define LN_WS_MAIN_THREAD_INTERVAL_MS 500
+#define LN_WS_MAIN_THREAD_INTERVAL_MS 200
 
 // 心跳间隔(秒)
 #define LN_WS_HEARTBEAT_INTERVAL_SEC 30  //5分钟发送一次心跳,正常最大7分钟
@@ -816,10 +816,10 @@ static void ai_binary_message_handler(const uint8_t *raw_data, uint32_t timestam
     // 记录接收数据的时间
     g_last_binary_data_tick = osKernelGetTickCount();
     
-    // if (!is_chat_id_matched()) {
-    //     LN_WS_WARN("Chat ID not matched\n");
-    //     return;
-    // }
+    if (!is_chat_id_matched()) {
+        LN_WS_WARN("Chat ID not matched\n");
+        return;
+    }
 
     if (!raw_data || data_len == 0) {
         LN_WS_ERROR("Invalid binary data parameters\n");