From: xue <2144439972@qq.com> Date: Wed, 29 Oct 2025 07:19:34 +0000 (+0800) Subject: 优化对话流程 X-Git-Tag: V1.0.9_20251128_194606_LN~156 X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=refs%2Fchanges%2F2628%2Fhead;p=mirrors%2FFD230.git 优化对话流程 --- diff --git a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/include/ThunderBirdLullabyView.h b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/include/ThunderBirdLullabyView.h index 98bd2d24a..f64056ea2 100644 --- a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/include/ThunderBirdLullabyView.h +++ b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/include/ThunderBirdLullabyView.h @@ -14,7 +14,7 @@ namespace OHOS static constexpr int16_t TB_LISTEN_Y = 151; static constexpr int16_t TB_LISTEN_W = 36; static constexpr int16_t TB_LISTEN_H = 36; - static constexpr int16_t TB_LISTEN_FRAMES = 95; + static constexpr int16_t TB_LISTEN_FRAMES = 61; static constexpr int16_t TB_LISTEN_INTERVAL = 41; static constexpr const char *TB_LISTEN_PATH = "/user/res/animated_icon/listen/"; 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 530630515..73f169348 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 @@ -74,40 +74,6 @@ namespace OHOS TB_LISTEN_IMAGE_59, TB_LISTEN_IMAGE_60, TB_LISTEN_IMAGE_61, - TB_LISTEN_IMAGE_62, - TB_LISTEN_IMAGE_63, - TB_LISTEN_IMAGE_64, - TB_LISTEN_IMAGE_65, - TB_LISTEN_IMAGE_66, - TB_LISTEN_IMAGE_67, - TB_LISTEN_IMAGE_68, - TB_LISTEN_IMAGE_69, - TB_LISTEN_IMAGE_70, - TB_LISTEN_IMAGE_71, - TB_LISTEN_IMAGE_72, - TB_LISTEN_IMAGE_73, - TB_LISTEN_IMAGE_74, - TB_LISTEN_IMAGE_75, - TB_LISTEN_IMAGE_76, - TB_LISTEN_IMAGE_77, - TB_LISTEN_IMAGE_78, - TB_LISTEN_IMAGE_79, - TB_LISTEN_IMAGE_80, - TB_LISTEN_IMAGE_81, - TB_LISTEN_IMAGE_82, - TB_LISTEN_IMAGE_83, - TB_LISTEN_IMAGE_84, - TB_LISTEN_IMAGE_85, - TB_LISTEN_IMAGE_86, - TB_LISTEN_IMAGE_87, - TB_LISTEN_IMAGE_88, - TB_LISTEN_IMAGE_89, - TB_LISTEN_IMAGE_90, - TB_LISTEN_IMAGE_91, - TB_LISTEN_IMAGE_92, - TB_LISTEN_IMAGE_93, - TB_LISTEN_IMAGE_94, - TB_LISTEN_IMAGE_95, }; ThunderBirdLullabyView::ThunderBirdLullabyView() @@ -168,6 +134,7 @@ namespace OHOS { if (listenAnimator == nullptr) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdLullabyView::EnsureListenAnimator: 创建聆听动画"); listenPathsArray = TB_LULLABY_LISTEN_PATHS; listenAnimator = new UIImageAnimatorView(); if (listenAnimator == nullptr) @@ -187,12 +154,14 @@ namespace OHOS } listenAnimator->SetPosition(TB_LISTEN_X, TB_LISTEN_Y, TB_LISTEN_W, TB_LISTEN_H); listenAnimator->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff); - listenAnimator->SetStyle(STYLE_BACKGROUND_OPA, 0xff); + listenAnimator->SetStyle(STYLE_BACKGROUND_OPA, 0x00); listenAnimator->SetImageAnimatorSrc(listenImageInfo, TB_LISTEN_FRAMES, TB_LISTEN_INTERVAL); - listenAnimator->SetRepeat(false); + listenAnimator->SetRepeat(true); listenAnimator->SetRepeatTimes(1); listenAnimator->SetResizeMode(UIImageView::COVER); //listenAnimator->SetAnimatorStopListener(this); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdLullabyView::EnsureListenAnimator: 动画配置完成,位置=(%d,%d), 大小=(%d,%d), 帧数=%d", + TB_LISTEN_X, TB_LISTEN_Y, TB_LISTEN_W, TB_LISTEN_H, TB_LISTEN_FRAMES); } return true; } @@ -325,6 +294,7 @@ namespace OHOS } case THUNDERBIRD_LULLABYVIEW_3: { + ln_ws_start_audio_chat(LN_AUDIO_CHAT_CHOOSE_STORY_REQUEST); ThunderBirdMainView::GetInstance()->OpenBackGround(); if (TextLabel) { @@ -334,7 +304,13 @@ namespace OHOS TextLabel->SetRollSpeed(35); TextLabel->SetVisible(true); } - if (listenAnimator) { listenAnimator->SetVisible(true); } + if (listenAnimator) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdLullabyView::Show: 启动聆听动画"); + listenAnimator->SetVisible(true); + listenAnimator->Start(); + } else { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdLullabyView::Show: listenAnimator is null"); + } if (RemindLabel) { RemindLabel->SetPosition(80, 275, 200, 25); @@ -372,7 +348,7 @@ namespace OHOS ThunderBirdModel::GetInstance()->StopCountUpTimer(); // 停止AI语音播放 - ai_media_play_stop(); + // ai_media_play_stop(); WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ThunderBirdLullabyView::Show: Stopped AI audio playback"); // 结束音频聊天 @@ -396,7 +372,7 @@ namespace OHOS if (TextLabel) { TextLabel->SetPosition(35, 64, 300, 42); - TextLabel->SetText("");//设置为空 + TextLabel->SetText("正在准备故事...");//设置初始文字 TextLabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE); TextLabel->SetRollSpeed(55); TextLabel->SetVisible(true); @@ -404,6 +380,7 @@ namespace OHOS if (TextLabel_Y) { TextLabel_Y->SetPosition(37, 66, 300, 42); + TextLabel_Y->SetText("正在准备故事...");//设置初始文字 TextLabel_Y->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE); TextLabel_Y->SetStyle(STYLE_TEXT_COLOR, 0xff000000); TextLabel_Y->SetRollSpeed(55); @@ -469,17 +446,24 @@ namespace OHOS void ThunderBirdLullabyView::UpdateLullabyText(const char *text) { - // 先停止滚动,确保同步 - TextLabel->SetAnimState(Animator::STOP); - TextLabel_Y->SetAnimState(Animator::STOP); - - // 设置文本 - TextLabel->SetText(text); - TextLabel_Y->SetText(text); - - // 同时开始滚动,确保同步 - TextLabel->SetAnimState(Animator::START); - TextLabel_Y->SetAnimState(Animator::START); + if(!TextLabel || !TextLabel_Y) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdLullabyView::UpdateLullabyText: TextLabel or TextLabel_Y is null"); + return; + } + + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdLullabyView::UpdateLullabyText: 更新故事文字: %s", text ? text : "null"); + + // 先停止滚动,确保同步 + TextLabel->SetAnimState(Animator::STOP); + TextLabel_Y->SetAnimState(Animator::STOP); + + // 设置文本 + TextLabel->SetText(text); + TextLabel_Y->SetText(text); + + // 同时开始滚动,确保同步 + TextLabel->SetAnimState(Animator::START); + TextLabel_Y->SetAnimState(Animator::START); } } diff --git a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdMainView.cpp b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdMainView.cpp index 61d8955e8..8ffa3d4c7 100644 --- a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdMainView.cpp +++ b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdMainView.cpp @@ -608,7 +608,7 @@ namespace OHOS WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ThunderBirdMainView::ChangeView: 从常亮界面退出,关闭屏幕常亮,重新设置息屏时间"); ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON); // 关闭屏幕常亮 uapi_setScreenDuration(30000); // 重新设置30秒自动息屏 - ThunderBirdModel::GetInstance()->HighFrequence(); + //ThunderBirdModel::GetInstance()->HighFrequence(); } // OTA界面已独立为slice,不再需要此检查 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 7d90c1830..824131935 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 @@ -1516,7 +1516,7 @@ restore_factory_settings(); } else { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "普通警告界面超时,返回原任务"); - view->GoBackToPreviousView(); + ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_STATUS_SHOW); } } // 检查是否是任务提醒界面,需要返回原任务 @@ -1524,7 +1524,7 @@ currentSubView == ThunderBirdReminderView::THUNDERBIRD_REMINDERVIEW_TASK_REMINDER) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "任务提醒界面超时,返回原任务"); ThunderBirdModel::GetInstance()->HighFrequence(); - view->GoBackToPreviousView(); + ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_STATUS_SHOW); } } } else { @@ -2192,7 +2192,7 @@ //若为意图识别结果,则跳转到4,否则跳转到2 if(is_intention_result == 0) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleSleepModeStart: 意图识别结果,跳转到4"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleSleepModeStart: 非意图识别结果,跳转到4"); ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_LULLABYVIEW, ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_4); //清空文本队列 ClearAudioTextQueue(); @@ -2201,7 +2201,9 @@ } else//意图识别结果 { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleSleepModeStart: 非意图识别结果,跳转到2"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleSleepModeStart: 意图识别结果,跳转到2"); + //看后续是否需要 + ln_ws_end_audio_chat();//结束对话 ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_LULLABYVIEW, ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_2); } } else { @@ -2356,22 +2358,32 @@ if (view) { int16_t currentView = view->GetCurrentView(); int16_t currentSubView = view->GetCurrentSubView(); - + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleAudioRecordingEnd: currentView=%d, currentSubView=%d", currentView, currentSubView); // 如果当前在对话界面,且不是在状态显示界面(说明是正常录音结束,不是退出对话) if (currentView == THUNDERBIRD_DIALOGUEVIEW && - currentSubView != ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_STATUS_SHOW) { + 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 { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "录音结束,但当前在状态显示界面,跳过界面跳转(可能是退出对话模式)"); } - } + else + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleAudioRecordingEnd: 不满足推送条件 "); + } + } // 将英文表情映射到英文文件名 @@ -2669,6 +2681,11 @@ ThunderBirdLullabyView::GetInstance()->UpdateLullabyText(text.c_str()); WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "音频开始播放,显示哄睡文本: %s", text.c_str()); } + else + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::DequeueAndPushAudioText: 不满足推送条件 - ThunderBirdLullabyView::GetInstance()=%p, currentSubView=%d, THUNDERBIRD_LULLABYVIEW_4=%d", + ThunderBirdLullabyView::GetInstance(), currentSubView, ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_4); + } } // 检查队列中是否有文本 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 0045ae7fb..b661ff38b 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 @@ -281,6 +281,13 @@ namespace OHOS // 短按FUNC键(息屏状态下) if (keyState == InputDevice::STATE_PRESS && screenState == 0 ) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HandleFuncKey: KEY_TYPE_FUNC press"); + + // 在非对话模式下按下FUNC键时,预先初始化音频 + if (!isDialogueing && (currentView == THUNDERBIRD_DIALOGUEVIEW && currentSubView == ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_STATUS_SHOW)) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "非对话模式下FUNC键按下,预先初始化音频"); + do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_AUDIO_INIT, NULL, 0); + } + if(currentView == THUNDERBIRD_LULLABYVIEW && currentSubView == ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_3) { HandleLullabyFunction(currentView, currentSubView); @@ -296,6 +303,12 @@ namespace OHOS } } + // FUNC键松开时,如果没有进入对话模式则关闭音频初始化 + if (keyState == InputDevice::STATE_RELEASE && screenState == 0 && !isDialogueing && currentView != THUNDERBIRD_LULLABYVIEW) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FUNC键松开,未进入对话模式,关闭音频初始化"); + do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_AUDIO_DEINIT, NULL, 0); + } + return true; } @@ -507,7 +520,16 @@ namespace OHOS ThunderBirdMainView::GetInstance()->ChangeView(THUNDERBIRD_GUIDEVIEW, THUNDERBIRD_GUIDEVIEW, ThunderBirdGuideView::THUNDERBIRD_GUIDEVIEW_5); break; case ThunderBirdGuideView::THUNDERBIRD_GUIDEVIEW_5: - ThunderBirdMainView::GetInstance()->ChangeView(THUNDERBIRD_GUIDEVIEW, THUNDERBIRD_GUIDEVIEW, ThunderBirdGuideView::THUNDERBIRD_GUIDEVIEW_1); + // THUNDERBIRD_GUIDEVIEW_5 按音量+键跳转到对话界面并开启对话 + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "THUNDERBIRD_GUIDEVIEW_5: 进入对话模式"); + ThunderBirdMainView::GetInstance()->ChangeView(THUNDERBIRD_GUIDEVIEW, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_LISTENING); + isDialogueing = true; + // 进入对话模式时记录当前表情 + //ThunderBirdModel::GetInstance()->OnEnterDialogueMode(); + // 开始对话 + do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_AUDIO_INIT, NULL, 0); + ln_ws_start_audio_chat(LN_AUDIO_CHAT_VOICE_CHAT_REQUEST); + break; } } @@ -560,22 +582,36 @@ namespace OHOS { switch (currentSubView) { case ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_2: - ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_LULLABYVIEW, ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_4); + ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_LULLABYVIEW, ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_3); //清空文本队列 + ln_ws_end_audio_chat();//结束对话 + AI_ForceInterrupt(); + ln_ws_send_voice_chat_interrupt("进入哄睡"); ThunderBirdModel::GetInstance()->ClearAudioTextQueue(); - ln_ws_audio_init();//功耗优化 - ln_ws_send_random_story_request("随机故事"); + ln_ws_start_audio_chat(LN_AUDIO_CHAT_CHOOSE_STORY_REQUEST); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HandleLullabyViewNavigation: 选择故事"); + //ln_ws_send_random_story_request("随机故事"); break; case ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_3: ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_LULLABYVIEW, ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_4); + ln_ws_end_audio_chat();//结束对话 + AI_ForceInterrupt(); + ln_ws_send_voice_chat_interrupt("进入哄睡"); + ThunderBirdModel::GetInstance()->ClearAudioTextQueue(); + //ln_ws_start_audio_chat(LN_AUDIO_CHAT_CHOOSE_STORY_REQUEST); + ln_ws_send_random_story_request("随机故事"); break; case ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_4: ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_LULLABYVIEW, ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_5); break; case ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_5: + ln_ws_end_audio_chat();//结束对话 do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_STORY_FINISH, NULL, 0);//确认结束哄睡 + // 退出对话模式时恢复表情 AI_ForceInterrupt(); ln_ws_send_voice_chat_interrupt("退出哄睡"); + do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_AUDIO_DEINIT, NULL, 0); + ThunderBirdModel::GetInstance()->HighFrequence();//恢复视频帧率 ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_STATUS_SHOW); break; } @@ -583,8 +619,20 @@ namespace OHOS else if(keyType == KEY_TYPE_VENDOR_DOWN) { switch (currentSubView) { + case ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_2: + ln_ws_end_audio_chat();//结束对话 + AI_ForceInterrupt(); + ln_ws_send_voice_chat_interrupt("退出哄睡"); + ln_ws_start_audio_chat(LN_AUDIO_CHAT_VOICE_CHAT_REQUEST);//开始对话 + ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_SPEAKING); + + break; case ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_3: - ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_LULLABYVIEW, ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_4); + ln_ws_end_audio_chat();//结束对话 + AI_ForceInterrupt(); + ln_ws_send_voice_chat_interrupt("退出哄睡"); + ln_ws_start_audio_chat(LN_AUDIO_CHAT_VOICE_CHAT_REQUEST);//开始对话 + ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_SPEAKING); break; case ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_5: ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_LULLABYVIEW, ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_4); @@ -610,7 +658,8 @@ namespace OHOS //回原界面 ThunderBirdModel::GetInstance()->StopCountUpTimer(); // 手动跳转时关闭定时器 ThunderBirdModel::GetInstance()->HighFrequence(); - ThunderBirdMainView::GetInstance()->GoBackToPreviousView(); + ThunderBirdMainView::GetInstance()->ChangeView(THUNDERBIRD_ADJUSTVIEW, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_STATUS_SHOW); + break; case ThunderBirdReminderView::THUNDERBIRD_REMINDERVIEW_DIALOGUE_NOT_ENOUGH://提醒界面-对话不足 ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_STATUS_SHOW); @@ -653,7 +702,8 @@ namespace OHOS switch (currentSubView) { case ThunderBirdAdjustView::THUNDERBIRD_ADJUSTVIEW_WARNING://退出返回原任务 ThunderBirdModel::GetInstance()->StopCountUpTimer(); // 手动跳转时关闭定时器 - ThunderBirdMainView::GetInstance()->GoBackToPreviousView(); + ThunderBirdMainView::GetInstance()->ChangeView(THUNDERBIRD_ADJUSTVIEW, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_STATUS_SHOW); + break; } } @@ -704,17 +754,17 @@ namespace OHOS if((currentView == THUNDERBIRD_DIALOGUEVIEW && currentSubView == ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_STATUS_SHOW) || (currentView == THUNDERBIRD_GUIDEVIEW)) { + ThunderBirdModel::GetInstance()->LowFrequence();//减低视频帧率 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "进入对话模式"); ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_LISTENING); isDialogueing = true; // 进入对话模式时记录当前表情 ThunderBirdModel::GetInstance()->OnEnterDialogueMode(); - //ThunderBirdDialogueView::GetInstance()->UpdateDialogueText("点击开始对话"); - //DialogueingFlag = true; - //ln_ws_audio_init();//功耗优化 + // do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_AUDIO_INIT, NULL, 0); + // 音频已在按键按下时初始化,这里直接开始对话 ln_ws_start_audio_chat(LN_AUDIO_CHAT_VOICE_CHAT_REQUEST);//开始对话 - do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_AUDIO_INIT, NULL, 0); + } else if(currentView == THUNDERBIRD_DIALOGUEVIEW) { @@ -727,20 +777,25 @@ namespace OHOS } // 停止实际的音频播放 - ai_media_play_stop(); + // ai_media_play_stop(); WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ThunderBirdPresenter::HandleFuncKeyLongPress: Stopped AI audio playback"); ln_ws_end_audio_chat();//结束对话 // 退出对话模式时恢复表情 AI_ForceInterrupt(); ln_ws_send_voice_chat_interrupt("退出对话"); - - //ln_ws_audio_deinit();//功耗优化 - do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_AUDIO_DEINIT, NULL, 0); - isDialogueing = false; + isDialogueing = false; // DialogueingFlag = false; - ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_STATUS_SHOW); + + // 检查绑定状态,如果未绑定则跳转到 THUNDERBIRD_GUIDEVIEW_5 + if (!ThunderBirdModel::GetInstance()->getbind_status()) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "设备未绑定,跳转到 THUNDERBIRD_GUIDEVIEW_5"); + ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_GUIDEVIEW, ThunderBirdGuideView::THUNDERBIRD_GUIDEVIEW_5); + } else { + ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_STATUS_SHOW); + } + ThunderBirdModel::GetInstance()->HighFrequence();//恢复视频帧率 ThunderBirdModel::GetInstance()->OnExitDialogueMode(); } diff --git a/code/sdk/zhihui/leiniao/imsl_ln/ln_api_websocket.c b/code/sdk/zhihui/leiniao/imsl_ln/ln_api_websocket.c index 6e84e582a..3306f2a34 100644 --- a/code/sdk/zhihui/leiniao/imsl_ln/ln_api_websocket.c +++ b/code/sdk/zhihui/leiniao/imsl_ln/ln_api_websocket.c @@ -19,7 +19,7 @@ #define ENABLE_BINARY_DATA_INTERRUPT_CHECK 1 // 启用二进制数据间隔检查 // 主线程循环间隔时长(毫秒) -#define LN_WS_MAIN_THREAD_INTERVAL_MS 500 +#define LN_WS_MAIN_THREAD_INTERVAL_MS 200 // 心跳间隔(秒) #define LN_WS_HEARTBEAT_INTERVAL_SEC 30 //5分钟发送一次心跳,正常最大7分钟 @@ -816,10 +816,10 @@ static void ai_binary_message_handler(const uint8_t *raw_data, uint32_t timestam // 记录接收数据的时间 g_last_binary_data_tick = osKernelGetTickCount(); - // if (!is_chat_id_matched()) { - // LN_WS_WARN("Chat ID not matched\n"); - // return; - // } + if (!is_chat_id_matched()) { + LN_WS_WARN("Chat ID not matched\n"); + return; + } if (!raw_data || data_len == 0) { LN_WS_ERROR("Invalid binary data parameters\n");