From: xue <2144439972@qq.com> Date: Thu, 16 Oct 2025 09:20:58 +0000 (+0800) Subject: 增加对话功耗优化,弹窗自动退出 X-Git-Tag: V1.0.9_20251128_194606_LN~222^2~4 X-Git-Url: http://git.snicker.com.cn/css/static/gitweb.css?a=commitdiff_plain;h=1684a0301ee429d31bfec7397527969857bd8898;p=mirrors%2FFD230.git 增加对话功耗优化,弹窗自动退出 --- diff --git a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdAdjustView.cpp b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdAdjustView.cpp index a45361bd7..ce4f6aeee 100644 --- a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdAdjustView.cpp +++ b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdAdjustView.cpp @@ -160,6 +160,7 @@ namespace OHOS { case THUNDERBIRD_ADJUSTVIEW_BIND_SUCCESS: { + ThunderBirdModel::GetInstance()->StartCountUpTimer(5); if (TextLabel) { TextLabel->SetPosition(142, 148, 120, 42); @@ -191,6 +192,7 @@ namespace OHOS uapi_set_screen_on_api(); // 亮屏 //振动提醒 custom_VibratorFunc_int(0); + ThunderBirdModel::GetInstance()->StartCountUpTimer(5); if (TextLabel) { TextLabel->SetPosition(112, 148, 248, 42); diff --git a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdDialogueView.cpp b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdDialogueView.cpp index 30f7f15fe..ccf2a1c24 100644 --- a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdDialogueView.cpp +++ b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdDialogueView.cpp @@ -122,7 +122,7 @@ namespace OHOS TextLabel_Y->SetStyle(STYLE_TEXT_COLOR, 0xff000000); TextLabel_Y->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); TextLabel_Y->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE); - TextLabel_Y->SetRollSpeed(55); + TextLabel_Y->SetRollSpeed(75); TextLabel_Y->SetVisible(false); group->Add(TextLabel_Y); } @@ -132,7 +132,7 @@ namespace OHOS TextLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); TextLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); TextLabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE); - TextLabel->SetRollSpeed(55); + TextLabel->SetRollSpeed(75); TextLabel->SetVisible(false); group->Add(TextLabel); } diff --git a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdLullabyView.cpp b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdLullabyView.cpp index 15368ba79..e73f2d21d 100644 --- a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdLullabyView.cpp +++ b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdLullabyView.cpp @@ -363,7 +363,7 @@ namespace OHOS { TextLabel->SetPosition(0, 64, 360, 42); TextLabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE); - TextLabel->SetRollSpeed(35); + TextLabel->SetRollSpeed(55); TextLabel->SetVisible(true); } if (TextLabel_Y) @@ -371,7 +371,7 @@ namespace OHOS TextLabel_Y->SetPosition(2, 66, 360, 42); TextLabel_Y->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE); TextLabel_Y->SetStyle(STYLE_TEXT_COLOR, 0xff000000); - TextLabel_Y->SetRollSpeed(35); + TextLabel_Y->SetRollSpeed(55); TextLabel_Y->SetVisible(true); } break; diff --git a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdModel.cpp b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdModel.cpp index 2ac2db9ff..0f55d87df 100644 --- a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdModel.cpp +++ b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdModel.cpp @@ -38,6 +38,7 @@ #include "ln_api.h" #include #include "vibrator_service.h" +#include "ai_media.h" #define JUHEPINGTAI 0 #if JUHEPINGTAI #include "websocket_server_manager.h" @@ -294,7 +295,6 @@ /*************************OTA升级*************************/ int ThunderBirdModel::ota_update_boot() { - do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_OTA_GET_TASK, nullptr, 0);//获取是否需要OTA升级 return -1; } @@ -310,10 +310,12 @@ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::UpdateOtaStatus: %d", status); m_otaStatus = status; // 更新状态检查 - if(status == 1 || status == 2 || status == 3)//OTA升级 + if(status == 1 || status == 2)//OTA升级 { SetViewModel(); //do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_WS_ENTER_SLEEP, NULL, 0); + AI_ForceInterrupt(); + ln_ws_send_voice_chat_interrupt("进入OTA"); NativeAbility::GetInstance().ChangeSlice(VIEW_OTA); WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "进入OTA"); } @@ -979,7 +981,8 @@ // 不入队,避免重复显示 } else { // 非第一个文本,加入队列等待音频开始播放时同步出队 - EnqueueAudioText(textId); + std::string textStr(textId); + EnqueueAudioText(textStr); WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "文本入队,等待音频开始播放: %s", textId); } } @@ -1319,6 +1322,8 @@ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "检测到夜间更新已启用,切换到OTA slice"); // 切换到OTA slice //do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_WS_ENTER_SLEEP, NULL, 0); + AI_ForceInterrupt(); + ln_ws_send_voice_chat_interrupt("切换slice"); NativeAbility::GetInstance().ChangeSlice(VIEW_OTA); } } @@ -1484,18 +1489,39 @@ m_countUpActive = false; WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Count up timer completed: %d/%d", m_countUpValue, m_countUpTarget); - // 检查是否是聆听界面超时,需要自动跳转到说话界面 + // 根据当前界面进行不同的处理 ThunderBirdMainView *view = ThunderBirdMainView::GetInstance(); if (view) { int16_t currentView = view->GetCurrentView(); int16_t currentSubView = view->GetCurrentSubView(); + // 检查是否是聆听界面超时,需要自动跳转到说话界面 if (currentView == THUNDERBIRD_DIALOGUEVIEW && currentSubView == ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_LISTENING) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "聆听界面超时,自动跳转到说话界面"); view->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_SPEAKING); ln_ws_end_audio_chat(); } + // 检查是否是绑定成功界面,需要跳转到对话界面 + else if (currentView == THUNDERBIRD_ADJUSTVIEW && + currentSubView == ThunderBirdAdjustView::THUNDERBIRD_ADJUSTVIEW_BIND_SUCCESS) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "绑定成功界面超时,跳转到对话界面"); + ThunderBirdModel::GetInstance()->ota_update_boot(); // 绑定成功后获取ota升级任务 + view->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_STATUS_SHOW); + } + // 检查是否是警告界面,需要返回原任务 + else if (currentView == THUNDERBIRD_ADJUSTVIEW && + currentSubView == ThunderBirdAdjustView::THUNDERBIRD_ADJUSTVIEW_WARNING) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "警告界面超时,返回原任务"); + view->GoBackToPreviousView(); + } + // 检查是否是任务提醒界面,需要返回原任务 + else if (currentView == THUNDERBIRD_REMINDERVIEW && + currentSubView == ThunderBirdReminderView::THUNDERBIRD_REMINDERVIEW_TASK_REMINDER) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "任务提醒界面超时,返回原任务"); + ThunderBirdModel::GetInstance()->HighFrequence(); + view->GoBackToPreviousView(); + } } } else { // 增加计数值 @@ -2139,6 +2165,9 @@ if (ThunderBirdMainView::GetInstance()) { int currentView = ThunderBirdMainView::GetInstance()->GetCurrentView(); //获取当前视图 ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_LULLABYVIEW, ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_4); + //清空文本队列 + ClearAudioTextQueue(); + ln_ws_audio_init();//功耗优化 } else { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdMainView instance is null, cannot start sleep mode"); } @@ -2149,6 +2178,7 @@ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleSleepModeEnd"); if (ThunderBirdMainView::GetInstance()) { int currentView = ThunderBirdMainView::GetInstance()->GetCurrentView(); //获取当前视图 + ln_ws_audio_deinit();//功耗优化 ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_LULLABYVIEW, ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_5); } else { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdMainView instance is null, cannot end sleep mode"); @@ -2205,12 +2235,14 @@ { int currentView = ThunderBirdMainView::GetInstance()->GetCurrentView(); int currentSubView = ThunderBirdMainView::GetInstance()->GetCurrentSubView(); - if(currentSubView != ThunderBirdAdjustView::THUNDERBIRD_ADJUSTVIEW_WARNING && currentSubView != ThunderBirdAdjustView::THUNDERBIRD_ADJUSTVIEW_NETWORK_CONNECTING) + if(currentSubView == ThunderBirdAdjustView::THUNDERBIRD_ADJUSTVIEW_WARNING && currentSubView == ThunderBirdAdjustView::THUNDERBIRD_ADJUSTVIEW_NETWORK_CONNECTING) + { + ThunderBirdAdjustView::GetInstance()->UpdateTaskReminderText(message); + } + else { ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_ADJUSTVIEW, ThunderBirdAdjustView::THUNDERBIRD_ADJUSTVIEW_WARNING); - if (ThunderBirdAdjustView::GetInstance()) { - ThunderBirdAdjustView::GetInstance()->UpdateTaskReminderText(message); - } + ThunderBirdAdjustView::GetInstance()->UpdateTaskReminderText(message); } } } @@ -2219,16 +2251,22 @@ { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleDownloadFile"); WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Download type: %d", type); - + if(ThunderBirdModel::GetOtaStatus() != 0) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleDownloadFile: OTA正在升级,跳过下载"); + return; + } // 根据下载类型进行不同的处理 switch (type) { case DOWNLOAD_FILE_TYPE_SCREEN_IMAGE: // 屏保下载 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleDownloadFile: Starting emoji download"); // 这里可以添加表情下载的具体逻辑 + do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_DOWNLOAD_SCREEN_IMAGE, NULL, 0); break; case DOWNLOAD_FILE_TYPE_EMOJI: // 表情下载 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleDownloadFile: Starting hair download"); // 这里可以添加发型下载的具体逻辑 + do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_DOWNLOAD_EMOJI, NULL, 0); break; default: WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleDownloadFile: Unknown download type: %d", type); @@ -2237,6 +2275,8 @@ //跳转到OTA下载界 downloadFileType = type; //do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_WS_ENTER_SLEEP, NULL, 0); + AI_ForceInterrupt(); + ln_ws_send_voice_chat_interrupt("开始下载"); NativeAbility::GetInstance().ChangeSlice(VIEW_OTA); } 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 ae8b3613d..7157c300f 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 @@ -564,6 +564,7 @@ namespace OHOS //通知界面-关闭通知 case ThunderBirdReminderView::THUNDERBIRD_REMINDERVIEW_TASK_REMINDER://事项提醒界面-关闭通知 //回原界面 + ThunderBirdModel::GetInstance()->StopCountUpTimer(); // 手动跳转时关闭定时器 ThunderBirdModel::GetInstance()->HighFrequence(); ThunderBirdMainView::GetInstance()->GoBackToPreviousView(); break; @@ -594,6 +595,7 @@ namespace OHOS { switch (currentSubView) { case ThunderBirdAdjustView::THUNDERBIRD_ADJUSTVIEW_BIND_SUCCESS: + ThunderBirdModel::GetInstance()->StopCountUpTimer(); // 手动跳转时关闭定时器 ThunderBirdModel::GetInstance()->ota_update_boot();//绑定成功后获取ota升级任务 ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_STATUS_SHOW); break; @@ -606,6 +608,7 @@ namespace OHOS { switch (currentSubView) { case ThunderBirdAdjustView::THUNDERBIRD_ADJUSTVIEW_WARNING://退出返回原任务 + ThunderBirdModel::GetInstance()->StopCountUpTimer(); // 手动跳转时关闭定时器 ThunderBirdMainView::GetInstance()->GoBackToPreviousView(); break; } @@ -658,6 +661,7 @@ namespace OHOS // 进入对话模式时记录当前表情 ThunderBirdModel::GetInstance()->OnEnterDialogueMode(); ln_ws_start_audio_chat(LN_AUDIO_CHAT_VOICE_CHAT_REQUEST);//开始对话 + ln_ws_audio_init();//功耗优化 } else if(currentView == THUNDERBIRD_DIALOGUEVIEW) { @@ -666,6 +670,7 @@ namespace OHOS // ai_media_play_stop(); // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ThunderBirdDialogueView::AudioPlaybackEnd: Stopped audio playback"); ln_ws_end_audio_chat();//结束对话 + ln_ws_audio_deinit();//功耗优化 // 退出对话模式时恢复表情 AI_ForceInterrupt(); ln_ws_send_voice_chat_interrupt("退出对话"); 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 59e8fcd8b..8ff2af773 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 @@ -149,6 +149,7 @@ namespace OHOS case THUNDERBIRD_REMINDERVIEW_TASK_REMINDER: { ThunderBirdModel::GetInstance()->LowFrequence(); + ThunderBirdModel::GetInstance()->StartCountUpTimer(10); if (RemindIcon) { // 图标位置:整体居中的左侧