增加未绑定的对话处理
authorxue <2144439972@qq.com>
Tue, 28 Oct 2025 10:15:22 +0000 (18:15 +0800)
committerxue <2144439972@qq.com>
Tue, 28 Oct 2025 10:15:22 +0000 (18:15 +0800)
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdAdjustView.cpp
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

index 0e64ad4..41df350 100644 (file)
@@ -251,16 +251,16 @@ namespace OHOS
     void ThunderBirdAdjustView::ShowUnbindWarning()
     {
         if (TextLabel) 
-        {   
-            TextLabel->SetPosition(0, 148, 360, 42); 
+        {  
+            TextLabel->SetPosition(0, 120, 360, 42); 
             TextLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
-            TextLabel->SetText("设å¤\87已解ç»\91"); 
+            TextLabel->SetText("è§£ç»\91æ\88\90å\8a\9fï¼\81"); 
             TextLabel->SetVisible(true);
         }
         if (RemindLabel) 
         { 
-            RemindLabel->SetPosition(0, 230, 360, 28);  
-            RemindLabel->SetText("等待设备重启");  
+            RemindLabel->SetPosition(0, 190, 360, 28);  
+            RemindLabel->SetText("待重启...");  
             RemindLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
             RemindLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 25);
             RemindLabel->SetVisible(true);
@@ -268,7 +268,6 @@ namespace OHOS
         if (RemindIcon) { RemindIcon->SetVisible(false);}
         if (RemindIcon2) { RemindIcon2->SetVisible(false);}
         if (RemindIcon3) { RemindIcon3->SetVisible(false);}
-       
     }
 }
 
index 3031a71..5306305 100644 (file)
@@ -5,6 +5,9 @@
 #include <string>
 #include "UiConfig.h"
 #include "custom_utils.h"
+#include "ln_api.h"
+#include "thunderbird/include/ThunderBirdPresenter.h"
+#include "ai_media.h"
 
 namespace OHOS
 {
@@ -357,18 +360,50 @@ namespace OHOS
         {
             ThunderBirdModel::GetInstance()->LowFrequence();//减低视频帧率
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdLullabyView::Show: THUNDERBIRD_LULLABYVIEW_4");
+            
+            // 检查是否在对话模式
+            ThunderBirdPresenter *presenter = ThunderBirdPresenter::GetInstance();
+            if(presenter && presenter->isDialogueing)
+            {
+                // 进入故事模式时退出对话模式
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "进入故事模式,退出对话模式");
+                
+                // 停止定时器
+                ThunderBirdModel::GetInstance()->StopCountUpTimer();
+                
+                // 停止AI语音播放
+                ai_media_play_stop();
+                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ThunderBirdLullabyView::Show: Stopped AI audio playback");
+                
+                // 结束音频聊天
+                ln_ws_end_audio_chat();
+                
+                // 强制中断AI
+                AI_ForceInterrupt();
+                ln_ws_send_voice_chat_interrupt("进入故事模式");
+                
+                // 反初始化音频
+                // do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_AUDIO_DEINIT, NULL, 0);
+                
+                // 设置对话状态为false
+                presenter->isDialogueing = false;
+                
+                // 调用退出对话模式
+                ThunderBirdModel::GetInstance()->OnExitDialogueMode();
+            }
             //长亮屏
             ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON);
             if (TextLabel)
             {
-                TextLabel->SetPosition(35, 64, 325, 42);
+                TextLabel->SetPosition(35, 64, 300, 42);
+                TextLabel->SetText("");//设置为空
                 TextLabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE); 
                 TextLabel->SetRollSpeed(55); 
                 TextLabel->SetVisible(true);
             }
             if (TextLabel_Y)
             {
-                TextLabel_Y->SetPosition(37, 66, 325, 42);
+                TextLabel_Y->SetPosition(37, 66, 300, 42);
                 TextLabel_Y->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE); 
                 TextLabel_Y->SetStyle(STYLE_TEXT_COLOR, 0xff000000);
                 TextLabel_Y->SetRollSpeed(55); 
index 11990e9..61d8955 100644 (file)
@@ -738,7 +738,7 @@ namespace OHOS
             GRAPHIC_LOGE("surfaceView is nullptr\n");
             return;
         }
-        colorKey_.full = 0xffecdbd4;
+        colorKey_.full = 0x00ecdbd4;
         surfaceView_->SetViewId("sur");
         surfaceView_->SetPosition(0, 0, VIDEO_WIDTH, VIDEO_HEIGHT);
         surfaceView_->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);
index 4073780..7d90c18 100644 (file)
     {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleSleepModeStart");
         if (ThunderBirdMainView::GetInstance()) {
-            int currentView = ThunderBirdMainView::GetInstance()->GetCurrentView(); //获取当前视图
-            ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_LULLABYVIEW, ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_4);
-            //清空文本队列
-            ClearAudioTextQueue();
-            ln_ws_audio_init();//功耗优化
+            int currentView = ThunderBirdMainView::GetInstance()->GetCurrentView();
+           //若为意图识别结果,则跳转到4,否则跳转到2
+           if(is_intention_result == 0)
+           {
+              WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleSleepModeStart: 意图识别结果,跳转到4");
+                ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_LULLABYVIEW, ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_4);
+                //清空文本队列
+                ClearAudioTextQueue();
+                ln_ws_audio_init();//功耗优化
+                ln_ws_send_random_story_request("随机故事");
+           }
+           else//意图识别结果
+           {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleSleepModeStart: 非意图识别结果,跳转到2");
+                ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_LULLABYVIEW, ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_2);
+           }
         } else {
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdMainView instance is null, cannot start sleep mode");
         }
index 89c9a44..0045ae7 100644 (file)
@@ -501,6 +501,12 @@ namespace OHOS
                     ThunderBirdMainView::GetInstance()->ChangeView(THUNDERBIRD_GUIDEVIEW, THUNDERBIRD_GUIDEVIEW, ThunderBirdGuideView::THUNDERBIRD_GUIDEVIEW_3);
                     break;
                 case ThunderBirdGuideView::THUNDERBIRD_GUIDEVIEW_3:
+                    ThunderBirdMainView::GetInstance()->ChangeView(THUNDERBIRD_GUIDEVIEW, THUNDERBIRD_GUIDEVIEW, ThunderBirdGuideView::THUNDERBIRD_GUIDEVIEW_4);
+                    break;
+                case ThunderBirdGuideView::THUNDERBIRD_GUIDEVIEW_4:
+                    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);
                     break;
             }
@@ -554,7 +560,11 @@ namespace OHOS
         {
         switch (currentSubView) {
             case ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_2:
-                ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_LULLABYVIEW, ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_3);
+                ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_LULLABYVIEW, ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_4);
+                //清空文本队列
+                ThunderBirdModel::GetInstance()->ClearAudioTextQueue();
+                ln_ws_audio_init();//功耗优化
+                ln_ws_send_random_story_request("随机故事");
                 break;
             case ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_3:
                 ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_LULLABYVIEW, ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_4);
@@ -691,7 +701,8 @@ namespace OHOS
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HandleFuncKeyLongPress: currentView=%d, currentSubView=%d, isDialogueing=%d", 
                          currentView, currentSubView, isDialogueing);
             
-            if(currentView == THUNDERBIRD_DIALOGUEVIEW && currentSubView == ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_STATUS_SHOW)
+            if((currentView == THUNDERBIRD_DIALOGUEVIEW && currentSubView == ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_STATUS_SHOW) 
+            || (currentView == THUNDERBIRD_GUIDEVIEW))
             {
                 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "进入对话模式");
                 ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_LISTENING);
@@ -716,9 +727,8 @@ namespace OHOS
                 }
                 
                 // 停止实际的音频播放
-                // ai_media_play_stop();
-                // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ThunderBirdDialogueView::AudioPlaybackEnd: Stopped audio playback");
-                //
+                ai_media_play_stop();
+                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ThunderBirdPresenter::HandleFuncKeyLongPress: Stopped AI audio playback");
                 ln_ws_end_audio_chat();//结束对话
                 
                 // 退出对话模式时恢复表情
@@ -740,11 +750,6 @@ namespace OHOS
                 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdPresenter::HandleFuncKeyLongPress");
                 ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_LULLABYVIEW, ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_5);
             }
-            else if(currentView == THUNDERBIRD_GUIDEVIEW)
-            {
-                ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_GUIDEVIEW, ThunderBirdGuideView::THUNDERBIRD_GUIDEVIEW_3);
-                ThunderBirdGuideView::GetInstance()->UpdateTextLabel("先小程序扫码绑定\n才能开始对话哦~");
-            }
         }
     }