From: xue <2144439972@qq.com> Date: Thu, 30 Oct 2025 05:49:34 +0000 (+0800) Subject: 增加对话自动开启录音 X-Git-Tag: V1.0.9_20251128_194606_LN~56^2~33 X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=refs%2Fchanges%2F2639%2F1;p=mirrors%2FFD230.git 增加对话自动开启录音 --- 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表情变化