From b995ec2aed2dcfbaa1ee2bea0c5179ddee47fc6e Mon Sep 17 00:00:00 2001 From: xue <2144439972@qq.com> Date: Thu, 30 Oct 2025 13:49:34 +0800 Subject: [PATCH] =?utf8?q?=E5=A2=9E=E5=8A=A0=E5=AF=B9=E8=AF=9D=E8=87=AA?= =?utf8?q?=E5=8A=A8=E5=BC=80=E5=90=AF=E5=BD=95=E9=9F=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../nativeui/include/uiservice/ui_service.h | 1 + .../thunderbird/include/ThunderBirdModel.h | 2 ++ .../thunderbird/src/ThunderBirdModel.cpp | 26 +++++++++++++++++++ .../nativeui/uiservice/src/ui_service.cpp | 9 +++++++ code/sdk/zhihui/leiniao/imsl_ln/ln_api.c | 5 ++++ .../leiniao/ln_api_cpp/ln_api_interface.cpp | 5 ++++ .../leiniao/ln_api_cpp/ln_api_interface.h | 2 ++ 7 files changed, 50 insertions(+) diff --git a/code/sdk/application/wearable/ln/nativeapp/nativeui/include/uiservice/ui_service.h b/code/sdk/application/wearable/ln/nativeapp/nativeui/include/uiservice/ui_service.h index 4c3fb31ca..a7ce3d1ba 100644 --- a/code/sdk/application/wearable/ln/nativeapp/nativeui/include/uiservice/ui_service.h +++ b/code/sdk/application/wearable/ln/nativeapp/nativeui/include/uiservice/ui_service.h @@ -68,6 +68,7 @@ typedef enum { HAND_DOWNLOAD_ETA_NOTIFY, // 下载ETA(剩余时间)通知,单位秒,-1表示未知 HAND_AUDIO_PLAYBACK_START_NOTIFY, // 音频播放开始通知 HAND_AUDIO_PLAYBACK_END_NOTIFY, // 音频播放结束通知 + HAND_AUDIO_RECORDING_START_NOTIFY, // 录音开始通知 HAND_AUDIO_RECORDING_END_NOTIFY, // 录音结束通知 HAND_NPC_EMOTION_CHANGE_NOTIFY, // npc表情变化通知 HAND_TIMELINE_STATUS_CHANGE_NOTIFY, // 时间线状态变化通知 diff --git a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/include/ThunderBirdModel.h b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/include/ThunderBirdModel.h index 30e1929a0..332d09f9a 100644 --- a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/include/ThunderBirdModel.h +++ b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/include/ThunderBirdModel.h @@ -229,6 +229,8 @@ namespace OHOS // NPC表情变化处理函数 void HandleNpcEmotionChange(const char* emotion); + // 录音开始处理函数 + void HandleAudioRecordingStart(); // 录音结束处理函数 void HandleAudioRecordingEnd(); 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 1d8212c3f..201ce33ac 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 @@ -2354,6 +2354,32 @@ } } + // 录音开始处理函数 + void ThunderBirdModel::HandleAudioRecordingStart() + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleAudioRecordingStart: 录音开始"); + + // 获取当前视图状态 + ThunderBirdMainView *view = ThunderBirdMainView::GetInstance(); + if (view) { + int16_t currentView = view->GetCurrentView(); + int16_t currentSubView = view->GetCurrentSubView(); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleAudioRecordingStart: currentView=%d, currentSubView=%d", currentView, currentSubView); + + // 如果当前在对话界面,且不在聆听状态,则跳转到聆听状态 + if (currentView == THUNDERBIRD_DIALOGUEVIEW && + currentSubView == ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_SPEAKING) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "录音开始,跳转到聆听状态"); + view->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_LISTENING); + ThunderBirdDialogueView::GetInstance()->UpdateDialogueText("超认真聆听中"); + } + // 如果当前在哄睡界面,且不在故事选择状态,则跳转到故事选择状态 + else { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleAudioRecordingStart: 不满足推送条件"); + } + } + } + // 录音结束处理函数 void ThunderBirdModel::HandleAudioRecordingEnd() { diff --git a/code/sdk/application/wearable/ln/nativeapp/nativeui/uiservice/src/ui_service.cpp b/code/sdk/application/wearable/ln/nativeapp/nativeui/uiservice/src/ui_service.cpp index 201e41214..5c1a04bde 100644 --- a/code/sdk/application/wearable/ln/nativeapp/nativeui/uiservice/src/ui_service.cpp +++ b/code/sdk/application/wearable/ln/nativeapp/nativeui/uiservice/src/ui_service.cpp @@ -104,6 +104,7 @@ static void HandDownloadProgressNotify(Request *request); static void HandDownloadEtaNotify(Request *request); static void HandAudioPlaybackStartNotify(Request *request); static void HandAudioPlaybackEndNotify(Request *request); +static void HandAudioRecordingStartNotify(Request *request); static void HandAudioRecordingEndNotify(Request *request); static void HandNpcEmotionChangeNotify(Request *request); static void HandTimelineStatusChangeNotify(Request *request); @@ -127,6 +128,7 @@ MsgHandlerEntry msgHandlers[] = { {HAND_DOWNLOAD_ETA_NOTIFY,HandDownloadEtaNotify}, {HAND_AUDIO_PLAYBACK_START_NOTIFY,HandAudioPlaybackStartNotify}, {HAND_AUDIO_PLAYBACK_END_NOTIFY,HandAudioPlaybackEndNotify}, + {HAND_AUDIO_RECORDING_START_NOTIFY,HandAudioRecordingStartNotify}, {HAND_AUDIO_RECORDING_END_NOTIFY,HandAudioRecordingEndNotify}, {HAND_NPC_EMOTION_CHANGE_NOTIFY,HandNpcEmotionChangeNotify}, {HAND_TIMELINE_STATUS_CHANGE_NOTIFY,HandTimelineStatusChangeNotify}, @@ -673,6 +675,13 @@ void HandAudioPlaybackEndNotify(Request *request) std::bind(&OHOS::ThunderBirdModel::HandleAudioPlaybackEnd,OHOS::ThunderBirdModel::GetInstance())); } +// 录音开始通知 +void HandAudioRecordingStartNotify(Request *request) +{ + WEARABLE_LOGE(WEARABLE_LOG_MODULE_UI_SERVICE, "HandAudioRecordingStartNotify msg_id = %d", request->msgId); + GraphicService::GetInstance()->PostGraphicEvent( + std::bind(&OHOS::ThunderBirdModel::HandleAudioRecordingStart,OHOS::ThunderBirdModel::GetInstance())); +} // 录音结束通知 void HandAudioRecordingEndNotify(Request *request) { diff --git a/code/sdk/zhihui/leiniao/imsl_ln/ln_api.c b/code/sdk/zhihui/leiniao/imsl_ln/ln_api.c index c4f586bae..3160d13e2 100644 --- a/code/sdk/zhihui/leiniao/imsl_ln/ln_api.c +++ b/code/sdk/zhihui/leiniao/imsl_ln/ln_api.c @@ -1012,6 +1012,11 @@ void ln_ws_process_message(const ws_data_msg_t *data_msg, ws_command_t type) push_audio_playback_start_notification(); break; } + case WS_CMD_AUDIO_RECORDING_START: + { + push_audio_recording_start_notification(); + break; + } case WS_CMD_AUDIO_RECORDING_END: { push_audio_recording_end_notification(); diff --git a/code/sdk/zhihui/leiniao/ln_api_cpp/ln_api_interface.cpp b/code/sdk/zhihui/leiniao/ln_api_cpp/ln_api_interface.cpp index cf8e931eb..727ee9974 100644 --- a/code/sdk/zhihui/leiniao/ln_api_cpp/ln_api_interface.cpp +++ b/code/sdk/zhihui/leiniao/ln_api_cpp/ln_api_interface.cpp @@ -272,6 +272,11 @@ void push_audio_playback_end_notification(void) { SendMsgToUIService(HAND_AUDIO_PLAYBACK_END_NOTIFY, 0, NULL, 0); } +//通知录音开始 +void push_audio_recording_start_notification(void) +{ + SendMsgToUIService(HAND_AUDIO_RECORDING_START_NOTIFY, 0, NULL, 0); +} //通知录音结束 void push_audio_recording_end_notification(void) { diff --git a/code/sdk/zhihui/leiniao/ln_api_cpp/ln_api_interface.h b/code/sdk/zhihui/leiniao/ln_api_cpp/ln_api_interface.h index 734d4a9bf..befc686fd 100644 --- a/code/sdk/zhihui/leiniao/ln_api_cpp/ln_api_interface.h +++ b/code/sdk/zhihui/leiniao/ln_api_cpp/ln_api_interface.h @@ -103,6 +103,8 @@ void push_download_eta_notification(int seconds); //通知音频播放结束了 void push_audio_playback_start_notification(void); void push_audio_playback_end_notification(void); +//通知录音开始 +void push_audio_recording_start_notification(void); //通知录音结束 void push_audio_recording_end_notification(void); //通知npc表情变化 -- 2.17.1