From 945bd509ccc584ff89bcbce3e8f1e8e9acec0a4e Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E7=BD=97=E6=AD=A3?= <1732036298@qq.com> Date: Fri, 12 Jul 2024 11:19:25 +0000 Subject: [PATCH] Merge #516 into sdk602patch0626 from refs/changes/516/head MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Code review from 罗正 * refs/changes/516/head: (2 commits squashed) - Ai语音Model文件修改 - 更新AI字符串改为异步线程更新解决list闪屏问题 Signed-off-by: 罗正 <1732036298@qq.com> Reviewed-by: snickersun@163.com Merged-by: snickersun@163.com CR-link: https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230/change/516 --- .../nativeui/aivoice/include/AiVoiceModel.h | 15 +++++++++++---- .../nativeui/aivoice/src/AiVoiceModel.cpp | 17 ++++++++++------- .../nativeui/uiservice/include/ui_service.h | 7 ++++--- .../nativeui/uiservice/src/ui_service.cpp | 10 ++++++++++ 4 files changed, 35 insertions(+), 14 deletions(-) diff --git a/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AiVoiceModel.h b/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AiVoiceModel.h index 839e5e256..4bd90555b 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AiVoiceModel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AiVoiceModel.h @@ -2,7 +2,7 @@ * @Author: luozheng 1732036298@qq.com * @Date: 2024-06-20 15:14:43 * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-07-12 11:00:22 + * @LastEditTime: 2024-07-12 16:02:11 * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AiVoiceModel.h */ #ifndef AI_VOICE_MODEL_H @@ -13,8 +13,13 @@ #include "iostream" #include "string" #include "ChatContentItem.h" +#define AIAUDIO_TYPE_PCM 0 +#define AIAUDIO_TYPE_SBC 1 +#define AIAUDIO_TYPE_MSBC 2 + +// 设置当前使用的音频类型,0 表示 PCM,1 表示 SBC,2 表示 MSBC +#define CURRENT_AIAUDIO_TYPE AIAUDIO_TYPE_PCM -#define IS_AIAUDIO_TYPE_PCM 1 /*AI录音文件是否是pcm格式*/ namespace OHOS { @@ -74,10 +79,12 @@ namespace OHOS AiVoiceModel &operator=(const AiVoiceModel &) = delete; // 私有成员变量 -#if IS_AIAUDIO_TYPE_PCM +#if CURRENT_AIAUDIO_TYPE == AIAUDIO_TYPE_PCM std::string AIAIAudioPath = "/user/userdata/AiRecording/AIAudio.pcm"; // AI录音的文件路径 -#else +#elif CURRENT_AIAUDIO_TYPE == AIAUDIO_TYPE_SBC std::string AIAIAudioPath = "/user/userdata/AiRecording/AIAudio.sbc"; // AI录音的文件路径 +#elif CURRENT_AIAUDIO_TYPE == AIAUDIO_TYPE_MSBC + std::string AIAIAudioPath = "/user/userdata/AiRecording/AIAudio.msbc"; // AI录音的文件路径 #endif std::string userQuestionStr; // 用户提出的问题 std::string aiAnswerStr; // AI回答的问题 diff --git a/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AiVoiceModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AiVoiceModel.cpp index 6e9e881a1..0944b512d 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AiVoiceModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AiVoiceModel.cpp @@ -2,7 +2,7 @@ * @Author: luozheng 1732036298@qq.com * @Date: 2024-06-20 15:14:50 * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-07-12 10:59:18 + * @LastEditTime: 2024-07-12 19:01:19 * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AiVoiceModel.cpp */ #include "aivoice/include/AiVoiceModel.h" @@ -361,10 +361,11 @@ namespace OHOS /* -------------------------------------------------------------------------- */ aiAnswerStr += str; /* -------------------------------------------------------------------------- */ - if (!UpdateAiAnswerStr()) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoiceModel::UpdateAiAnswerStr fail!!"); - } + // if (!UpdateAiAnswerStr()) + // { + // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoiceModel::UpdateAiAnswerStr fail!!"); + // } + SendMsgToUIService(UI_UPDATE_AI_QUESTION_STR, 0, nullptr, 0); } /*清空上次用户问题和Ai回答字符串*/ @@ -412,10 +413,12 @@ namespace OHOS { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "uapi_delete_files fail!!"); } -#if IS_AIAUDIO_TYPE_PCM +#if CURRENT_AIAUDIO_TYPE == AIAUDIO_TYPE_PCM const char *defaultArgs[6] = {"01", "pcm", "16000", "1", "16", audioPath.c_str()}; -#else +#elif CURRENT_AIAUDIO_TYPE == AIAUDIO_TYPE_SBC const char *defaultArgs[6] = {"01", "sbc", "16000", "1", "16", audioPath.c_str()}; +#elif CURRENT_AIAUDIO_TYPE == AIAUDIO_TYPE_MSBC + const char *defaultArgs[6] = {"01", "msbc", "16000", "1", "16", audioPath.c_str()}; #endif AudioCaptureSample(6, (const char **)defaultArgs); } diff --git a/code/sdk/application/wearable/fd230app/nativeui/uiservice/include/ui_service.h b/code/sdk/application/wearable/fd230app/nativeui/uiservice/include/ui_service.h index 1e10287e5..c7e7eebc3 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/uiservice/include/ui_service.h +++ b/code/sdk/application/wearable/fd230app/nativeui/uiservice/include/ui_service.h @@ -2,7 +2,7 @@ * @Author: luozheng 1732036298@qq.com * @Date: 2024-06-12 11:44:04 * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-06-25 17:58:27 + * @LastEditTime: 2024-07-12 18:56:55 * @FilePath: /FD230/code/sdk/application/wearable/nativeapp/nativeui/uiservice/include/ui_service.h */ /* @@ -66,10 +66,11 @@ typedef enum { UI_UPDATE_SYSTEM_VOLUME, //更新系统音量 UI_UPDATE_CALL_VOLUME, //更新通话音量 UI_UPDATE_VIBRATION_MODE, //更新震动模式 - UI_UPDATE_SILENT_MODE, //更新静音模式 + UI_UPDATE_SILENT_MODE, //更新静音模式 UI_UPDATE_WEATHER_DATA, //天气数据更新 - UI_AI_RESPONSE_USERDATA, //跳转到返回结果视图 + UI_AI_RESPONSE_USERDATA, //跳转到返回结果视图 + UI_UPDATE_AI_QUESTION_STR, //更新AI答案的字符串 MAX_NUM_HANDLER, } UiServiceMsgId; diff --git a/code/sdk/application/wearable/fd230app/nativeui/uiservice/src/ui_service.cpp b/code/sdk/application/wearable/fd230app/nativeui/uiservice/src/ui_service.cpp index 8a12eaab0..1268b42bb 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/uiservice/src/ui_service.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/uiservice/src/ui_service.cpp @@ -103,6 +103,7 @@ static void HandleUpdateCallVolume(Request *request); static void HandleUpdateVibrationMode(Request *request); static void HandleUpdateSilentMode(Request *request); static void HandleAiResponseUserData(Request *request); +static void HandleUpdateAIQuestionStr(Request *request); // 消息处理程序项数组(每个消息类型对应一个处理函数,函数名以 Handle 开头) MsgHandlerEntry msgHandlers[] = { @@ -128,6 +129,7 @@ MsgHandlerEntry msgHandlers[] = { {UI_UPDATE_VIBRATION_MODE, HandleUpdateVibrationMode}, {UI_UPDATE_SILENT_MODE, HandleUpdateSilentMode}, {UI_AI_RESPONSE_USERDATA, HandleAiResponseUserData}, + {UI_UPDATE_AI_QUESTION_STR, HandleUpdateAIQuestionStr}, }; /* -------------------------------------------------------------------------- */ static void ScreenTurnOn(Request *request) @@ -519,6 +521,14 @@ void HandleAiResponseUserData(Request *request) GraphicService::GetInstance()->PostGraphicEvent( std::bind(&OHOS::AiVoiceModel::ChangeToReturnResultTextView, &OHOS::AiVoiceModel::GetInstance())); } + +//处理更新AI答案字符串 +void HandleUpdateAIQuestionStr(Request *request) +{ + WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleUpdateAIQuestionStr"); + GraphicService::GetInstance()->PostGraphicEvent( + std::bind(&OHOS::AiVoiceModel::UpdateAiAnswerStr, &OHOS::AiVoiceModel::GetInstance())); +} /* -------------------------------------------------------------------------- */ #ifdef __cplusplus } -- 2.17.1