From bb944921c0a235f09dd85517a3a0cf785dbaac11 Mon Sep 17 00:00:00 2001 From: xue <2144439972@qq.com> Date: Fri, 5 Dec 2025 18:05:53 +0800 Subject: [PATCH] =?utf8?q?=E4=BF=AE=E5=A4=8D=E6=8F=90=E9=86=92=E9=94=99?= =?utf8?q?=E8=AF=AFbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../thunderbird/src/ThunderBirdPresenter.cpp | 73 ++++++++++++++++--- .../src/ThunderBirdReminderView.cpp | 3 +- 2 files changed, 63 insertions(+), 13 deletions(-) diff --git a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdPresenter.cpp b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdPresenter.cpp index b87525a6f..fe5351de1 100644 --- a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdPresenter.cpp +++ b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdPresenter.cpp @@ -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(); + } } } diff --git a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdReminderView.cpp b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdReminderView.cpp index b4b4902ea..73e7936b7 100644 --- a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdReminderView.cpp +++ b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdReminderView.cpp @@ -6,6 +6,7 @@ #include "audio_manager.h" #include "thunderbird/include/ThunderBirdModel.h" #include "ln_api.h" +#include 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) { -- 2.17.1