优化对话超时处理
authorxue <2144439972@qq.com>
Wed, 26 Nov 2025 14:31:58 +0000 (22:31 +0800)
committerxue <2144439972@qq.com>
Wed, 26 Nov 2025 14:31:58 +0000 (22:31 +0800)
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdModel.cpp
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdPresenter.cpp

index cbdcd67..7cddcf9 100644 (file)
@@ -2688,7 +2688,7 @@ extern "C" {
             ThunderBirdDialogueView::GetInstance()->AudioPlaybackEnd();
             // 启动8秒定时器,时间到就退出对话
             StartCountUpTimer(10);
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleAudioPlaybackEnd: 启动8秒定时器,时间到就退出对话");
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleAudioPlaybackEnd: 启动10秒定时器,时间到就退出对话");
             return;
         }
         
@@ -2713,6 +2713,10 @@ extern "C" {
     {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleAudioRecordingStart: 录音开始");
         
+        // 取消退出对话的定时器(用户开始录音,说明要继续对话)
+        StopCountUpTimer();
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleAudioRecordingStart: 取消退出对话定时器");
+        
         // 获取当前视图状态
         ThunderBirdMainView *view = ThunderBirdMainView::GetInstance();
         if (view) {
@@ -2740,6 +2744,10 @@ extern "C" {
         // return ;//需要vad的时候在处理
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleAudioRecordingEnd: 录音结束");
         
+        // 取消退出对话的定时器(用户结束录音,说明要继续对话)
+        StopCountUpTimer();
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleAudioRecordingEnd: 取消退出对话定时器");
+        
         // 获取当前视图状态
         ThunderBirdMainView *view = ThunderBirdMainView::GetInstance();
         if (view) {
@@ -2751,26 +2759,19 @@ extern "C" {
                 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
-            {
+            else{
                 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleAudioRecordingEnd: 不满足推送条件 ");
             }
-        
+            
+            // 清空音频文本队列
+            ClearAudioTextQueue();
+        }
     }
 
     // VAD初始化完成处理函数
index 529b633..6bb8ae3 100644 (file)
@@ -450,6 +450,9 @@ namespace OHOS
      */
     void ThunderBirdPresenter::HandleDialogueFunction(int16_t currentView, int16_t currentSubView)
     {
+        // 在对话界面进行按键操作时,取消退出对话的定时器(用户有操作,说明要继续对话)
+        ThunderBirdModel::GetInstance()->StopCountUpTimer();
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HandleDialogueViewNavigation: 取消退出对话定时器");
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HandleDialogueFunction: currentView=%d, currentSubView=%d", currentView, currentSubView);
         
         //bool flag = ThunderBirdModel::GetInstance()->Get_is_all_services_ready();
@@ -614,6 +617,7 @@ namespace OHOS
      */
     bool ThunderBirdPresenter::HandleDialogueViewNavigation(int16_t currentSubView, KeyType keyType)
     {
+        
         // switch (currentSubView) {
         //     case ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_SPEAKING:
         //         ThunderBirdMainView::GetInstance()->ChangeView(THUNDERBIRD_DIALOGUEVIEW, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_LISTENING);