优化提醒界面触发提醒设置逻辑
authorxue <2144439972@qq.com>
Thu, 12 Feb 2026 02:47:53 +0000 (10:47 +0800)
committerxue <2144439972@qq.com>
Thu, 12 Feb 2026 02:47:53 +0000 (10:47 +0800)
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdModel.cpp

index 147dc93..71b9132 100644 (file)
@@ -2611,6 +2611,13 @@ extern "C" {
             if (ThunderBirdMainView::GetInstance()) {
                 int currentView = ThunderBirdMainView::GetInstance()->GetCurrentView();
                 int currentSubView = ThunderBirdMainView::GetInstance()->GetCurrentSubView();
+                //如果已经在提醒界面。则先进入发呆中界面
+                if (currentView == THUNDERBIRD_REMINDERVIEW && currentSubView == ThunderBirdReminderView::THUNDERBIRD_REMINDERVIEW_TASK_REMINDER) {
+                    ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_STATUS_SHOW);
+                    //关闭提醒音频
+                    ln_schedule_reminder_set_volume_zero();
+ 
+                }
                 ThunderBirdModel::GetInstance()->StartReminderHideTimer(3000);
                 ThunderBirdReminderView *reminderView = ThunderBirdReminderView::GetInstance();
                 if (reminderView) 
@@ -3081,8 +3088,12 @@ extern "C" {
            //若为意图识别结果,则跳转到4,否则跳转到2
            if(is_intention_result == 0)
            {
-              do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_AUDIO_INIT_VAD_DISABLE, NULL, 0);
+                do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_AUDIO_INIT_VAD_DISABLE, NULL, 0);
               WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleSleepModeStart: 非意图识别结果,跳转到4");
+                // 对话过程中收到小程序哄睡:关闭VAD,隐藏收音指示灯
+                if (ThunderBirdMainView::GetInstance() && ThunderBirdMainView::GetInstance()->listenIcon) {
+                    ThunderBirdMainView::GetInstance()->listenIcon->SetVisible(false);
+                }
                 // 重置故事模式finished标志,确保每次进入故事模式时标志位是干净的
                 m_storyModeFinished = false;
                 // 进入哄睡模式时切换为眨眼表情
@@ -3555,17 +3566,33 @@ extern "C" {
     void ThunderBirdModel::HandleAudioPlaybackStart()
     {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleAudioPlaybackStart");
+        ThunderBirdMainView *view = ThunderBirdMainView::GetInstance();
+        if (view) {
+            int currentView = view->GetCurrentView();
+            int currentSubView = view->GetCurrentSubView();
+            // 对话模式下若“音频开始播放”早于“录音结束”回调:此时仍为聆听中,需先切到说话中再推送文本,避免出现“聆听中还在播放上一句”的错位
+            if (currentView == THUNDERBIRD_DIALOGUEVIEW &&
+                currentSubView == ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_LISTENING) {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleAudioPlaybackStart: 对话聆听中收到播放开始,先切到说话中");
+                view->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_SPEAKING);
+                if (view->listenIcon) {
+                    view->listenIcon->SetVisible(false);
+                }
+            }
+        }
         // 音频开始播放时,从队列中取出对应的文本并推送
         DequeueAndPushAudioText();
         
         // 检查是否在THUNDERBIRD_LULLABYVIEW_3界面,如果是,标记角色开始询问
-        int currentView = ThunderBirdMainView::GetInstance()->GetCurrentView();
-        int currentSubView = ThunderBirdMainView::GetInstance()->GetCurrentSubView();
-        if (currentView == THUNDERBIRD_LULLABYVIEW &&
-            currentSubView == ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_3)
-        {
-            m_lullabyView3InquiryStarted = true;
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleAudioPlaybackStart: THUNDERBIRD_LULLABYVIEW_3界面,角色开始询问");
+        if (view) {
+            int currentView = view->GetCurrentView();
+            int currentSubView = view->GetCurrentSubView();
+            if (currentView == THUNDERBIRD_LULLABYVIEW &&
+                currentSubView == ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_3)
+            {
+                m_lullabyView3InquiryStarted = true;
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleAudioPlaybackStart: THUNDERBIRD_LULLABYVIEW_3界面,角色开始询问");
+            }
         }
     }