修改提醒超时逻辑为音频结束计时 3236/1
authorxue <2144439972@qq.com>
Mon, 2 Mar 2026 11:10:48 +0000 (19:10 +0800)
committerxue <2144439972@qq.com>
Mon, 2 Mar 2026 11:10:48 +0000 (19:10 +0800)
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/include/ThunderBirdModel.h
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdModel.cpp
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdReminderView.cpp
code/sdk/zhihui/leiniao/imsl_ln/ln_api.c
code/sdk/zhihui/leiniao/ln_api_cpp/ln_api_interface.cpp
code/sdk/zhihui/leiniao/ln_api_cpp/ln_api_interface.h

index db51931..afc36ee 100644 (file)
@@ -39,6 +39,8 @@ namespace OHOS
         void StartOtaCountdown(uint32_t startVal);
         void StopOtaCountdown(void);
         void StartCountUpTimer(uint32_t targetSeconds);
+        /** 仅当当前在提醒界面时启动 3 秒退出定时器(供 LN_HTTP_SERVICE_CMD_AUDIO_STOP 使用,避免哄睡结束误触) */
+        void StartCountUpTimerForDialogueExitIfInSpeaking(void);
         void StopCountUpTimer(void);
         void StartFactoryResetTimer(uint32_t delaySeconds);
         void StopFactoryResetTimer(void);
index 151adf4..763a5c1 100644 (file)
@@ -352,6 +352,22 @@ extern "C" {
          
          WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Count up timer stopped");
      }
+     
+     // ---------------------- 仅当当前在提醒界面时启动 3 秒退出定时器(供 LN_HTTP_SERVICE_CMD_AUDIO_STOP 使用,避免哄睡结束误触) ----------------------
+     void ThunderBirdModel::StartCountUpTimerForDialogueExitIfInSpeaking(void)
+     {
+         ThunderBirdMainView *view = ThunderBirdMainView::GetInstance();
+         if (view == nullptr) return;
+         int16_t currentView = view->GetCurrentView();
+         int16_t currentSubView = view->GetCurrentSubView();
+         if(currentView == THUNDERBIRD_REMINDERVIEW &&
+              currentSubView == ThunderBirdReminderView::THUNDERBIRD_REMINDERVIEW_TASK_REMINDER) {
+             StartCountUpTimer(3);
+             WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "StartCountUpTimerForDialogueExitIfInSpeaking: 在对话说话/聆听界面,启动3秒退出定时器");
+         }
+         // 哄睡/提醒等其它界面不启动,避免误触
+     }
+
      int ThunderBirdModel::GetCountUpValue() const
      {
          return m_countUpValue;
index a4c60a4..51e4e26 100644 (file)
@@ -154,7 +154,7 @@ namespace OHOS
         case THUNDERBIRD_REMINDERVIEW_TASK_REMINDER:
         {
             ThunderBirdModel::GetInstance()->LowFrequence();
-            ThunderBirdModel::GetInstance()->StartCountUpTimer(10);
+            // ThunderBirdModel::GetInstance()->StartCountUpTimer(20);
             if (RemindIcon)
             {
                 // 图标位置:整体居中的左侧
index dccb58e..26beecc 100644 (file)
@@ -1408,6 +1408,8 @@ static void ln_http_server_send_task(void const *arg)
             printf("[LN_HTTP_SERVICE] LN_HTTP_SERVICE_CMD_AUDIO_STOP:停止音频播放并清理资源\n");
             // 清理 ln_audio_simple 的音频资源
             ln_audio_simple_stop();
+            // 播放结束后 3 秒退出对话(在 GUI 线程启动定时器)
+            ln_audio_stop_start_dialogue_exit_timer();
         }
         if (mail.data != NULL)
         {
index 2593e44..694ecbb 100644 (file)
@@ -65,6 +65,12 @@ void do_restore_factory_setting(void)
     OHOS::ThunderBirdModel::GetInstance()->restore_factory_settings();
 }
 
+// 音频 stop 时调用:仅当在对话说话/聆听界面时在 GUI 线程启动 3 秒退出定时器(哄睡/提醒结束不触发)
+void ln_audio_stop_start_dialogue_exit_timer(void)
+{
+     OHOS::ThunderBirdModel::GetInstance()->StartCountUpTimerForDialogueExitIfInSpeaking();
+}
+
 // 设置帧率
 void do_set_fps(uint32_t fps)
 {
index f1e407a..8bc8e44 100644 (file)
@@ -47,6 +47,9 @@ void push_ota_progress(int progress);
 //恢复出厂操作
 void do_restore_factory_setting(void);
 
+/** 音频 stop 时由 ln_api 调用:在 GUI 线程启动 3 秒退出对话定时器(播放结束后 3 秒退出) */
+void ln_audio_stop_start_dialogue_exit_timer(void);
+
 //帧率控制操作
 void do_set_fps(uint32_t fps);
 uint32_t do_get_fps(void);