Merge #516 into sdk602patch0626 from refs/changes/516/head 513/target/2 517/target/1
author罗正 <1732036298@qq.com>
Fri, 12 Jul 2024 11:19:25 +0000 (11:19 +0000)
committersnickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
Fri, 12 Jul 2024 11:19:25 +0000 (11:19 +0000)
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 <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
Merged-by: snickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
link: https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230/change/516
code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AiVoiceModel.h
code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AiVoiceModel.cpp
code/sdk/application/wearable/fd230app/nativeui/uiservice/include/ui_service.h
code/sdk/application/wearable/fd230app/nativeui/uiservice/src/ui_service.cpp

index 839e5e2..4bd9055 100644 (file)
@@ -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
 #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回答的问题
index 6e9e881..0944b51 100644 (file)
@@ -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);
         }
index 1e10287..c7e7eeb 100644 (file)
@@ -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;
 
index 8a12eaa..1268b42 100644 (file)
@@ -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
 }