修复提醒错误bug 2872/1 2872/head 2873/target/1 2874/target/1
authorxue <2144439972@qq.com>
Fri, 5 Dec 2025 10:05:53 +0000 (18:05 +0800)
committerxue <2144439972@qq.com>
Fri, 5 Dec 2025 10:05:53 +0000 (18:05 +0800)
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdPresenter.cpp
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdReminderView.cpp

index b87525a..fe5351d 100644 (file)
@@ -578,6 +578,14 @@ namespace OHOS
                     //跳转到故事界面
                     // 进入哄睡模式时切换为眨眼表情
                     ThunderBirdModel::GetInstance()->OnEnterLullabyMode();
+                    // 进入故事模式时关闭VAD
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "进入故事模式,关闭VAD");
+                    int vad_ret = ln_ws_disable_vad_server();
+                    if (vad_ret == 0) {
+                        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VAD已成功关闭");
+                    } else {
+                        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "关闭VAD失败: %d", vad_ret);
+                    }
                     ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_LULLABYVIEW, ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_4);
                     return;
                 }
@@ -711,9 +719,9 @@ namespace OHOS
                         } else {
                             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdReminderView::GetInstance() returned NULL");
                         }
-                        return; // 不满足条件,不进入对话模式
+                        return true; // 不满足条件,不进入对话模式
                     }
-                    
+
                     ThunderBirdMainView::GetInstance()->ChangeView(THUNDERBIRD_GUIDEVIEW, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_LISTENING);
                     isDialogueing = true;
                     //未绑定状态,联网隐藏网络断开提醒
@@ -786,13 +794,24 @@ namespace OHOS
                 //ln_ws_send_random_story_request("随机故事");
                 break;
             case ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_3:
+            {
                 // 进入哄睡模式时切换为眨眼表情
+                ln_ws_audio_init();//功耗优化
                 ThunderBirdModel::GetInstance()->OnEnterLullabyMode();
                 ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_LULLABYVIEW, ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_4);
                 // ln_ws_start_audio_chat(LN_AUDIO_CHAT_CHOOSE_STORY_REQUEST);
-                ln_ws_audio_init();//功耗优化
+                
+                // 进入故事模式时立即关闭VAD,防止ln_ws_audio_init()自动启用VAD
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "进入故事模式,关闭VAD");
+                int vad_ret = ln_ws_disable_vad_server();
+                if (vad_ret == 0) {
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VAD已成功关闭");
+                } else {
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "关闭VAD失败: %d", vad_ret);
+                }
                 ln_ws_send_random_story_request("随机故事");
                 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HandleLullabyViewNavigation: 随机故事");
+                }
                 break;
             case ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_4:
                 ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_LULLABYVIEW, ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_5);
@@ -938,24 +957,46 @@ namespace OHOS
                     ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_BLUEVIEW, ThunderBirdBlueView::THUNDERBIRD_BULEVIEW_SREACHING);
                     break;
                 case ThunderBirdBlueView::THUNDERBIRD_BULEVIEW_DISCONNECT_SUCCESS: 
-                    //重新发送连接操作
+                    // 前台处理:立即切换UI,不等待耗时操作
                     ThunderBirdBlueView::GetInstance()->OnConnectFailed();
-                    // ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_BLUEVIEW, ThunderBirdBlueView::THUNDERBIRD_BULEVIEW_DEVICE_LIST);
+                    ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_BLUEVIEW, ThunderBirdBlueView::THUNDERBIRD_BULEVIEW_DEVICE_LIST);
+                    
+                    // 后台处理:异步执行耗时操作(断开连接、刷新列表、发起连接)
+                    GraphicService::GetInstance()->PostGraphicEvent([]() {
+                        ThunderBirdBlueView *blueView = ThunderBirdBlueView::GetInstance();
+                        if (blueView != nullptr) {
+                            blueView->OnConnectFailedAsync();
+                        }
+                    });
                     break;
                 case ThunderBirdBlueView::THUNDERBIRD_BULEVIEW_DEVICE_LIST:
-                    // ThunderBirdBlueView::GetInstance()->OnKeyUp();// 音量+键:选择上一个设备
+                     ThunderBirdBlueView::GetInstance()->OnKeyUp();// 音量+键:选择上一个设备
                     //重新搜索设备
-                    ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_BLUEVIEW, ThunderBirdBlueView::THUNDERBIRD_BULEVIEW_SREACHING);
+                    // ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_BLUEVIEW, ThunderBirdBlueView::THUNDERBIRD_BULEVIEW_SREACHING);
                     break;
                 case ThunderBirdBlueView::THUNDERBIRD_BULEVIEW_CONNECT_FAILED:
-                    //重新发送连接操作
+                {
+                    // 前台处理:立即切换UI,不等待耗时操作
                     ThunderBirdBlueView::GetInstance()->OnConnectFailed();
-                    // ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_BLUEVIEW, ThunderBirdBlueView::THUNDERBIRD_BULEVIEW_DEVICE_LIST);
+                    ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_BLUEVIEW, ThunderBirdBlueView::THUNDERBIRD_BULEVIEW_DEVICE_LIST);
+                    
+                    // 后台处理:异步执行耗时操作(断开连接、刷新列表、发起连接)
+                    GraphicService::GetInstance()->PostGraphicEvent([]() {
+                        ThunderBirdBlueView *blueView = ThunderBirdBlueView::GetInstance();
+                        if (blueView != nullptr) {
+                            blueView->OnConnectFailedAsync();
+                        }
+                    });
+                }
                     break;
                 case ThunderBirdBlueView::THUNDERBIRD_BULEVIEW_DISCONNECT_SUCCESS_NEW:
                     //解绑成功,返回主界面,提示用户解绑成功
                     ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_STATUS_SHOW);
                     break;
+                case ThunderBirdBlueView::THUNDERBIRD_BULEVIEW_EXIT_OR_RETRY:
+                    //退出配对或重新搜索
+                    ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_BLUEVIEW, ThunderBirdBlueView::THUNDERBIRD_BULEVIEW_SREACHING);
+                    break;
             }
         }
         else if(keyType == KEY_TYPE_VENDOR_DOWN)
@@ -984,6 +1025,10 @@ namespace OHOS
                 case ThunderBirdBlueView::THUNDERBIRD_BULEVIEW_DEVICE_LIST:
                     ThunderBirdBlueView::GetInstance()->OnKeyDown();// 音量-键:选择下一个设备
                     break;
+                case ThunderBirdBlueView::THUNDERBIRD_BULEVIEW_EXIT_OR_RETRY:
+                    //退出配对或重新搜索
+                    ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_BLUEVIEW, ThunderBirdBlueView::THUNDERBIRD_BULEVIEW_DEVICE_LIST);
+                    break;
             }
         }
         else if(keyType == KEY_TYPE_FUNC)
@@ -1198,19 +1243,23 @@ namespace OHOS
                     case ThunderBirdBlueView::THUNDERBIRD_BULEVIEW_SREACHING: 
                     case ThunderBirdBlueView::THUNDERBIRD_BULEVIEW_SREACHING_FAILED:
                     case ThunderBirdBlueView::THUNDERBIRD_BULEVIEW_CONNECT_FAILED:
-                    case ThunderBirdBlueView::THUNDERBIRD_BULEVIEW_DEVICE_LIST:
                     case ThunderBirdBlueView::THUNDERBIRD_BULEVIEW_CONNECT_SUCCESS:
                     case ThunderBirdBlueView::THUNDERBIRD_BULEVIEW_DISCONNECT_CONFIRM:
                     case ThunderBirdBlueView::THUNDERBIRD_BULEVIEW_DISCONNECT_FAILED:
+                    case ThunderBirdBlueView::THUNDERBIRD_BULEVIEW_EXIT_OR_RETRY:
                     //搜索中页面长按对话按键退出到主页面
                     ThunderBirdMainView::GetInstance()->ChangeView(
                         currentView, 
                         THUNDERBIRD_DIALOGUEVIEW, 
                         ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_STATUS_SHOW);
+                        ln_bt_scan_stop();
+                        ln_bt_report_earphone_connection_status();
+                    break;
+                    case ThunderBirdBlueView::THUNDERBIRD_BULEVIEW_DEVICE_LIST:
+                    ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_BLUEVIEW, ThunderBirdBlueView::THUNDERBIRD_BULEVIEW_EXIT_OR_RETRY);
                     break;
                 }
-                ln_bt_scan_stop();
-                ln_bt_report_earphone_connection_status();
+
             }
         }
     }
index b4b4902..73e7936 100644 (file)
@@ -6,6 +6,7 @@
 #include "audio_manager.h"
 #include "thunderbird/include/ThunderBirdModel.h"
 #include "ln_api.h"
+#include <string.h>
 namespace OHOS
 {
     static ThunderBirdReminderView *g_pThunderBirdReminderView{nullptr};
@@ -612,7 +613,7 @@ namespace OHOS
 
     void ThunderBirdReminderView::scheduleName_task_reminder(const char* scheduleName)
     {
-        if(scheduleName == "提醒设置成功")
+        if(scheduleName != nullptr && strcmp(scheduleName, "提醒设置成功") == 0)
         {
             if (RemindButton)
             {