From 9fadce332d1482c783d23a1eabae533384eb864a Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E7=BD=97=E6=AD=A3?= <1732036298@qq.com> Date: Wed, 26 Jun 2024 08:50:54 +0000 Subject: [PATCH] Merge #378 into sdk602patch0521 from refs/changes/378/head MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Code review from 罗正 * refs/changes/378/head: (7 commits squashed) - 添加app设置手表震动强度,手表能感受设置的强度 - AiVoice视图添加与修改 - Merge branch 'sdk602patch0521' of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into sdk602patch0521 - Merge branch 'sdk602patch0521' of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into sdk602patch0521 - Ai语音UI基本上完成,更细节的部分待优化 - Merge branch 'sdk602patch0521' of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into sdk602patch0521 - 闹钟界面添加按键监听 Signed-off-by: 罗正 <1732036298@qq.com> Commented-by: 罗正 <1732036298@qq.com> Commented-by: snickersun@163.com Reviewed-by: snickersun@163.com Merged-by: snickersun@163.com CR-link: https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230/change/378 --- .../wearable/fd230app/CMakeLists.txt | 8 +- .../nativelauncher/src/NativeLauncher.cpp | 4 +- .../include/AiVoiceBluetoothFailedStartView.h | 74 +++ .../nativeui/aivoice/include/AiVoiceModel.h | 23 +- .../aivoice/include/AiVoicePresenter.h | 3 +- .../nativeui/aivoice/include/AiVoiceView.h | 20 +- .../include/AivoiceConnectTimeoutView.h | 74 +++ .../aivoice/include/AivoiceListeningView.h | 88 ++++ .../AivoiceMobileDataFailedStartView.h | 74 +++ .../include/AivoiceReturnResultTextView.h | 86 ++++ .../aivoice/include/AivoiceThinkingView.h | 88 ++++ .../src/AiVoiceBluetoothFailedStartView.cpp | 265 ++++++++++ .../nativeui/aivoice/src/AiVoiceModel.cpp | 60 ++- .../nativeui/aivoice/src/AiVoicePresenter.cpp | 89 +++- .../nativeui/aivoice/src/AiVoiceView.cpp | 197 +++++++- .../aivoice/src/AivoiceConnectTimeoutView.cpp | 265 ++++++++++ .../aivoice/src/AivoiceListeningView.cpp | 305 ++++++++++++ .../src/AivoiceMobileDataFailedStartView.cpp | 265 ++++++++++ .../src/AivoiceReturnResultTextView.cpp | 465 ++++++++++++++++++ .../aivoice/src/AivoiceThinkingView.cpp | 306 ++++++++++++ .../nativeui/alarm/src/AlarmPresenter.cpp | 24 +- .../src/SoundAndVibrationPresenter.cpp | 4 +- .../nativeui/uiservice/include/ui_service.h | 3 +- .../nativeui/uiservice/src/ui_service.cpp | 11 + .../fd230/fs/user/res/AIVoice/AIRecBlack.bin | 3 - .../fd230/fs/user/res/AIVoice/AIRecGreen.bin | 3 - .../fd230/fs/user/res/AIVoice/AIUnion.bin | 3 - .../AIVoiceListening/Ai_Listening_1.bin | 3 + .../AIVoiceListening/Ai_Listening_10.bin | 3 + .../AIVoiceListening/Ai_Listening_11.bin | 3 + .../AIVoiceListening/Ai_Listening_12.bin | 3 + .../AIVoiceListening/Ai_Listening_13.bin | 3 + .../AIVoiceListening/Ai_Listening_14.bin | 3 + .../AIVoiceListening/Ai_Listening_15.bin | 3 + .../AIVoiceListening/Ai_Listening_16.bin | 3 + .../AIVoiceListening/Ai_Listening_17.bin | 3 + .../AIVoiceListening/Ai_Listening_18.bin | 3 + .../AIVoiceListening/Ai_Listening_19.bin | 3 + .../AIVoiceListening/Ai_Listening_2.bin | 3 + .../AIVoiceListening/Ai_Listening_20.bin | 3 + .../AIVoiceListening/Ai_Listening_3.bin | 3 + .../AIVoiceListening/Ai_Listening_4.bin | 3 + .../AIVoiceListening/Ai_Listening_5.bin | 3 + .../AIVoiceListening/Ai_Listening_6.bin | 3 + .../AIVoiceListening/Ai_Listening_7.bin | 3 + .../AIVoiceListening/Ai_Listening_8.bin | 3 + .../AIVoiceListening/Ai_Listening_9.bin | 3 + .../AIVoice/AIVoiceThinking/Ai_Thinking_1.bin | 3 + .../AIVoiceThinking/Ai_Thinking_10.bin | 3 + .../AIVoiceThinking/Ai_Thinking_11.bin | 3 + .../AIVoiceThinking/Ai_Thinking_12.bin | 3 + .../AIVoiceThinking/Ai_Thinking_13.bin | 3 + .../AIVoiceThinking/Ai_Thinking_14.bin | 3 + .../AIVoiceThinking/Ai_Thinking_15.bin | 3 + .../AIVoiceThinking/Ai_Thinking_16.bin | 3 + .../AIVoiceThinking/Ai_Thinking_17.bin | 3 + .../AIVoiceThinking/Ai_Thinking_18.bin | 3 + .../AIVoiceThinking/Ai_Thinking_19.bin | 3 + .../AIVoice/AIVoiceThinking/Ai_Thinking_2.bin | 3 + .../AIVoiceThinking/Ai_Thinking_20.bin | 3 + .../AIVoiceThinking/Ai_Thinking_21.bin | 3 + .../AIVoiceThinking/Ai_Thinking_22.bin | 3 + .../AIVoiceThinking/Ai_Thinking_23.bin | 3 + .../AIVoiceThinking/Ai_Thinking_24.bin | 3 + .../AIVoiceThinking/Ai_Thinking_25.bin | 3 + .../AIVoiceThinking/Ai_Thinking_26.bin | 3 + .../AIVoiceThinking/Ai_Thinking_27.bin | 3 + .../AIVoiceThinking/Ai_Thinking_28.bin | 3 + .../AIVoiceThinking/Ai_Thinking_29.bin | 3 + .../AIVoice/AIVoiceThinking/Ai_Thinking_3.bin | 3 + .../AIVoice/AIVoiceThinking/Ai_Thinking_4.bin | 3 + .../AIVoice/AIVoiceThinking/Ai_Thinking_5.bin | 3 + .../AIVoice/AIVoiceThinking/Ai_Thinking_6.bin | 3 + .../AIVoice/AIVoiceThinking/Ai_Thinking_7.bin | 3 + .../AIVoice/AIVoiceThinking/Ai_Thinking_8.bin | 3 + .../AIVoice/AIVoiceThinking/Ai_Thinking_9.bin | 3 + .../peripheral/config/src/ConfigModel.cpp | 1 + 77 files changed, 2906 insertions(+), 52 deletions(-) create mode 100644 code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AivoiceConnectTimeoutView.h create mode 100644 code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AivoiceListeningView.h create mode 100644 code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AivoiceMobileDataFailedStartView.h create mode 100644 code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AivoiceReturnResultTextView.h create mode 100644 code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AivoiceThinkingView.h create mode 100644 code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AivoiceConnectTimeoutView.cpp create mode 100644 code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AivoiceListeningView.cpp create mode 100644 code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AivoiceMobileDataFailedStartView.cpp create mode 100644 code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AivoiceReturnResultTextView.cpp create mode 100644 code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AivoiceThinkingView.cpp delete mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIRecBlack.bin delete mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIRecGreen.bin delete mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIUnion.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_1.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_10.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_11.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_12.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_13.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_14.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_15.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_16.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_17.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_18.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_19.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_2.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_20.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_3.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_4.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_5.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_6.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_7.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_8.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_9.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_1.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_10.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_11.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_12.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_13.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_14.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_15.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_16.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_17.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_18.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_19.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_2.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_20.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_21.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_22.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_23.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_24.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_25.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_26.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_27.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_28.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_29.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_3.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_4.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_5.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_6.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_7.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_8.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_9.bin diff --git a/code/sdk/application/wearable/fd230app/CMakeLists.txt b/code/sdk/application/wearable/fd230app/CMakeLists.txt index 33ca91d7b..cc4343ec9 100644 --- a/code/sdk/application/wearable/fd230app/CMakeLists.txt +++ b/code/sdk/application/wearable/fd230app/CMakeLists.txt @@ -385,7 +385,13 @@ set(SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/aivoice/src/AiVoiceModel.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/aivoice/src/AiVoicePresenter.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/aivoice/src/AiVoiceView.cpp - + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/aivoice/src/AiVoiceBluetoothFailedStartView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/aivoice/src/AivoiceMobileDataFailedStartView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/aivoice/src/AivoiceConnectTimeoutView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/aivoice/src/AivoiceListeningView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/aivoice/src/AivoiceThinkingView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/aivoice/src/AivoiceReturnResultTextView.cpp + #声音与震动 ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/soundandvibration/src/SoundAndVibrationPresenter.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/soundandvibration/src/SoundAndVibrationView.cpp diff --git a/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp b/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp index 17ffb62a8..49a8290e4 100644 --- a/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp +++ b/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp @@ -37,8 +37,8 @@ #include "MainCallingView.h" #include "MainCallingPresenter.h" #include "ActivityPresenter.h" -#include "MainAlarmView.h" -#include "AlarmPresenter.h" +#include "alarm/include/MainAlarmView.h" +#include "alarm/include/AlarmPresenter.h" #include "AlarmPopUpPresenter.h" #include "AlarmPopUpView.h" #include "MainBluetoothView.h" diff --git a/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AiVoiceBluetoothFailedStartView.h b/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AiVoiceBluetoothFailedStartView.h index e69de29bb..141f15b55 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AiVoiceBluetoothFailedStartView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AiVoiceBluetoothFailedStartView.h @@ -0,0 +1,74 @@ +/* + * @Author: luozheng 1732036298@qq.com + * @Date: 2024-06-21 17:07:07 + * @LastEditors: luozheng 1732036298@qq.com + * @LastEditTime: 2024-06-22 16:59:20 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AiVoiceBluetoothFailedStartView.h + */ + +#ifndef AI_VOICE_BLUETOOTH_FAILEDSTART_VIEW_H +#define AI_VOICE_BLUETOOTH_FAILEDSTART_VIEW_H + +#include "components/ui_scroll_view.h" +#include "components/ui_label_ext.h" +#include "components/ui_button.h" +#include "components/ui_image_view.h" + +namespace OHOS +{ + static constexpr const char *BLUETOOTHFAILEDSTART_ENSURE_BUTTON_VIEW_ID = "BluetoothFailedStartEnsureButton";//蓝牙未开启界面的确定按钮 + + class AiVoiceBluetoothFailedStartView + { + public: + struct LabelConfig + { + int16_t left; + int16_t top; + int16_t width; + int16_t height; + int16_t fontSize; + int16_t lineHeigh; + uint16_t textId; + uint8_t lineBreakMode; + }; + struct ButtonConfig + { + int16_t x; + int16_t y; + int16_t w; + int16_t h; + const char *ViewId; + }; + + struct ImageConfig + { + int16_t x; + int16_t y; + int16_t w; + int16_t h; + }; + + AiVoiceBluetoothFailedStartView(); + ~AiVoiceBluetoothFailedStartView(); + static AiVoiceBluetoothFailedStartView *GetInstance(void); + UIScrollView *CreateAiVoiceBluetoothFailedStartView(void); + + private: + void ClearAll(void); + UILabelExt *AiVoiceBluetoothFailedStartLabelInit(LabelConfig &labelconfig); + UIButton *AiVoiceBluetoothFailedStartButtonInit(ButtonConfig &buttonconfig); + UIImageView *AiVoiceBluetoothFailedStartImageInit(ImageConfig &imageconfig); + bool CreateAiVoiceBluetoothFailedStartLabel(void); + bool CreateAiVoiceBluetoothFailedStartButton(void); + bool CreateAiVoiceBluetoothFailedStartImage(void); + bool CreateAiVoiceBluetoothFailedStartScrollView(void); + UIScrollView *scrollView{nullptr}; + UILabelExt *title{nullptr}; + UIImageView *attentionImage{nullptr}; + UILabelExt *label[2]{nullptr}; + UILabelExt *ensure{nullptr}; + UIButton *ensureButton{nullptr}; + }; +} +#endif \ No newline at end of file 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 9c40b548a..d5c14a6d1 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AiVoiceModel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AiVoiceModel.h @@ -2,25 +2,44 @@ * @Author: luozheng 1732036298@qq.com * @Date: 2024-06-20 15:14:43 * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-06-20 20:13:47 + * @LastEditTime: 2024-06-25 17:50:45 * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AiVoiceModel.h */ #ifndef AI_VOICE_MODEL_H #define AI_VOICE_MODEL_H +#include "iostream" +#include "string" namespace OHOS { class AiVoiceModel { public: static AiVoiceModel &GetInstance(void); + bool ChangeToReturnResultTextView(void); + + bool GetBluetoothIsOpen(void); + bool GetMobileDataIsOpen(void); + bool GetAiVoiceConnectStatus(void); + + std::string GetUserQuestionStr(void); + void SetUserQuestionStr(std::string str); + + std::string GetAiAnswerStrStr(void); + void SetaiAnswerStrStr(std::string str); + + std::string GetAIAudioPath(void); private: AiVoiceModel(); ~AiVoiceModel(); AiVoiceModel(const AiVoiceModel &) = delete; AiVoiceModel &operator=(const AiVoiceModel &) = delete; + std::string AIAIAudioPath = "/user/userdata/AiRecording/AIAudio.pcm"; // ai录音的文件名 + + std::string userQuestionStr; // 存储用户提出的问题 + std::string aiAnswerStr; // 存储ai回答的问题 }; } -#endif \ No newline at end of file +#endif \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AiVoicePresenter.h b/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AiVoicePresenter.h index 615d7fdd6..bddff30b9 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AiVoicePresenter.h +++ b/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AiVoicePresenter.h @@ -2,7 +2,7 @@ * @Author: luozheng 1732036298@qq.com * @Date: 2024-06-20 14:44:22 * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-06-21 21:07:37 + * @LastEditTime: 2024-06-25 17:39:55 * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AiVoicePresenter.h */ #ifndef AI_VOICE_PRESENTER_H @@ -30,6 +30,7 @@ namespace OHOS void OnPause() override; void OnStop() override; + bool JumpToReturnResultTextView(void); private: bool OnClick(UIView &view, const ClickEvent &event) override; diff --git a/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AiVoiceView.h b/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AiVoiceView.h index 901588968..a8012c76b 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AiVoiceView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AiVoiceView.h @@ -2,7 +2,7 @@ * @Author: luozheng 1732036298@qq.com * @Date: 2024-06-08 09:36:01 * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-06-21 21:07:45 + * @LastEditTime: 2024-06-25 14:53:47 * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/respiratorytraining/include/AiVoiceView.h */ #ifndef AI_VOICE_VIEW_H @@ -14,6 +14,12 @@ #include "components/ui_button.h" #include "components/ui_scroll_view.h" #include "components/ui_image_view.h" +#include "aivoice/include/AiVoiceBluetoothFailedStartView.h" +#include "aivoice/include/AivoiceMobileDataFailedStartView.h" +#include "aivoice/include/AivoiceConnectTimeoutView.h" +#include "aivoice/include/AivoiceListeningView.h" +#include "aivoice/include/AivoiceThinkingView.h" +#include "aivoice/include/AivoiceReturnResultTextView.h" namespace OHOS { static constexpr const char *START_CHAT_BUTTON_VIEW_ID = "StartChatButton"; // 开始对话 @@ -67,6 +73,7 @@ namespace OHOS AiVoiceView(); ~AiVoiceView(); static AiVoiceView *GetInstance(void); + UIScrollView *GetAiVoiceScrollView(int16_t index); bool ClickFunc(int16_t interface); void ChangeView(int16_t hideView, int16_t showView); bool ChangeAiVoiceStartChatView(int16_t thisView); @@ -82,13 +89,22 @@ namespace OHOS void OnTearDownView() override; void OnStop() override; + private: + AiVoiceBluetoothFailedStartView *p_AiVoiceBluetoothFailedStartView{nullptr}; + AivoiceMobileDataFailedStartView *p_AivoiceMobileDataFailedStartView{nullptr}; + AivoiceConnectTimeoutView *p_AivoiceConnectTimeoutView{nullptr}; + AivoiceListeningView *p_AivoiceListeningView{nullptr}; + AivoiceThinkingView *p_AivoiceThinkingView{nullptr}; + AivoiceReturnResultTextView *p_AivoiceReturnResultTextView{nullptr}; + private: UILabelExt *AiVoiceViewLabelInit(LabelConfig &labelconfig); UIImageView *AiVoiceViewImageView(ImageConfig &imageconfig); - UIButton *AiVoiceViewLabelButtonInit(ButtonConfig &buttonconfig); + UIButton *AiVoiceViewButtonInit(ButtonConfig &buttonconfig); bool CreateAiVoiceViewLabel(void); bool CreateAiVoiceViewImageView(void); bool CreateAiVoiceViewButton(void); + bool CreateAiVoiceScrollView(void); void CreateAiVoiceView(void); void ClearAll(void); UILabelExt *title{nullptr}; diff --git a/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AivoiceConnectTimeoutView.h b/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AivoiceConnectTimeoutView.h new file mode 100644 index 000000000..25d25e4ff --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AivoiceConnectTimeoutView.h @@ -0,0 +1,74 @@ +/* + * @Author: luozheng 1732036298@qq.com + * @Date: 2024-06-22 16:46:26 + * @LastEditors: luozheng 1732036298@qq.com + * @LastEditTime: 2024-06-22 17:00:33 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AivoiceConnectTimeoutView.h + */ + +#ifndef AIVOICE_CONNECT_TIMEOUT_VIEW_H +#define AIVOICE_CONNECT_TIMEOUT_VIEW_H + +#include "components/ui_scroll_view.h" +#include "components/ui_label_ext.h" +#include "components/ui_button.h" +#include "components/ui_image_view.h" + +namespace OHOS +{ + static constexpr const char *AIVOICECONNECTTIMEOUT_ENSURE_BUTTON_VIEW_ID = "AivoiceConnectTimeoutEnsureButton"; // 连接超时界面确定按钮 + + class AivoiceConnectTimeoutView + { + public: + struct LabelConfig + { + int16_t left; + int16_t top; + int16_t width; + int16_t height; + int16_t fontSize; + int16_t lineHeigh; + uint16_t textId; + uint8_t lineBreakMode; + }; + struct ButtonConfig + { + int16_t x; + int16_t y; + int16_t w; + int16_t h; + const char *ViewId; + }; + + struct ImageConfig + { + int16_t x; + int16_t y; + int16_t w; + int16_t h; + }; + + AivoiceConnectTimeoutView(); + ~AivoiceConnectTimeoutView(); + static AivoiceConnectTimeoutView *GetInstance(void); + UIScrollView *CreateAivoiceConnectTimeoutView(void); + + private: + void ClearAll(void); + UILabelExt *AivoiceConnectTimeoutLabelInit(LabelConfig &labelconfig); + UIButton *AivoiceConnectTimeoutButtonInit(ButtonConfig &buttonconfig); + UIImageView *AivoiceConnectTimeoutImageInit(ImageConfig &imageconfig); + bool CreateAivoiceConnectTimeoutLabel(void); + bool CreateAivoiceConnectTimeoutButton(void); + bool CreateAivoiceConnectTimeoutImage(void); + bool CreateAivoiceConnectTimeoutScrollView(void); + UIScrollView *scrollView{nullptr}; + UILabelExt *title{nullptr}; + UIImageView *attentionImage{nullptr}; + UILabelExt *label[2]{nullptr}; + UILabelExt *ensure{nullptr}; + UIButton *ensureButton{nullptr}; + }; +} +#endif diff --git a/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AivoiceListeningView.h b/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AivoiceListeningView.h new file mode 100644 index 000000000..9b02ffdfd --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AivoiceListeningView.h @@ -0,0 +1,88 @@ +/* + * @Author: luozheng 1732036298@qq.com + * @Date: 2024-06-22 16:46:26 + * @LastEditors: luozheng 1732036298@qq.com + * @LastEditTime: 2024-06-25 15:39:07 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AivoiceListeningView.h + */ + +#ifndef AIVOICE_LISTENING_VIEW_H +#define AIVOICE_LISTENING_VIEW_H + +#include "components/ui_scroll_view.h" +#include "components/ui_label_ext.h" +#include "components/ui_button.h" +#include "components/ui_image_view.h" +#include "components/ui_image_animator.h" +namespace OHOS +{ + static constexpr const char *FINISH_SPEAKING_BUTTON_VIEW_ID = "FinishSpeakingButton"; // 聆听中界面说话完毕按钮 + + static constexpr int16_t AIVOICE_LISTENING_IMAGE_ANIMATOR_VIEW_X = 113; + static constexpr int16_t AIVOICE_LISTENING_IMAGE_ANIMATOR_VIEW_Y = 182; + static constexpr int16_t AIVOICE_LISTENING_IMAGE_ANIMATOR_VIEW_W = 240; + static constexpr int16_t AIVOICE_LISTENING_IMAGE_ANIMATOR_VIEW_H = 60; + static constexpr int16_t AIVOICE_LISTENING_IMAGE_ANIMATOR_VIEW_NUM_FRAMES = 20; // 图片帧数 + static constexpr int16_t AIVOICE_LISTENING_IMAGE_ANIMATOR_DELAY = 150; // 图片更新间隔 + static constexpr char *AIVoiceListeningImagePaths = "/user/res/AIVoice/AIVoiceListening/Ai_Listening_"; + class AivoiceListeningView + { + public: + struct LabelConfig + { + int16_t left; + int16_t top; + int16_t width; + int16_t height; + int16_t fontSize; + int16_t lineHeigh; + uint16_t textId; + uint8_t lineBreakMode; + }; + struct ButtonConfig + { + int16_t x; + int16_t y; + int16_t w; + int16_t h; + const char *ViewId; + }; + + struct ImageAnimatorConfig + { + int16_t x; + int16_t y; + int16_t width; + int16_t height; + ImageAnimatorInfo* imageInfoArray; + const char* const* pathsArray; + uint8_t numFrames; + int delay; + }; + + AivoiceListeningView(); + ~AivoiceListeningView(); + static AivoiceListeningView *GetInstance(void); + UIScrollView *CreateAivoiceListeningView(void); + + private: + void ClearAll(void); + const char **CreateImagePathsArray(const char *basePath, const int numImages, const char *fileExtension = "bin"); + void FreeImagePathsArray(const char **imagePaths, const int numImages); + UILabelExt *AivoiceListeningLabelInit(LabelConfig &labelconfig); + UIButton *AivoiceListeningButtonInit(ButtonConfig &buttonconfig); + UIImageAnimatorView *AivoiceListeningImageAnimatorInit(ImageAnimatorConfig &imageanimatorconfig); + bool CreateAivoiceListeningLabel(void); + bool CreateAivoiceListeningButton(void); + bool CreateAivoiceListeningImageAnimator(void); + bool CreateAivoiceListeningScrollView(void); + UIScrollView *scrollView{nullptr}; + UILabelExt *title{nullptr}; + UILabelExt *finishSpeak{nullptr}; + UIButton *finishSpeakButton{nullptr}; + UIImageAnimatorView *AiVoiceListeningImageAnimatorView{nullptr}; + ImageAnimatorInfo AiVoiceListeningImageInfo[AIVOICE_LISTENING_IMAGE_ANIMATOR_VIEW_NUM_FRAMES]; + const char **AiVoiceListeningPathsArray{nullptr}; + }; +} +#endif diff --git a/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AivoiceMobileDataFailedStartView.h b/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AivoiceMobileDataFailedStartView.h new file mode 100644 index 000000000..8a1c056aa --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AivoiceMobileDataFailedStartView.h @@ -0,0 +1,74 @@ +/* + * @Author: luozheng 1732036298@qq.com + * @Date: 2024-06-22 15:22:56 + * @LastEditors: luozheng 1732036298@qq.com + * @LastEditTime: 2024-06-22 16:59:59 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AivoiceMobileDataFailedStartView.h + */ + +#ifndef AIVOICE_MOBILEDATA_FAILEDSTART_VIEW_H +#define AIVOICE_MOBILEDATA_FAILEDSTART_VIEW_H + +#include "components/ui_scroll_view.h" +#include "components/ui_label_ext.h" +#include "components/ui_button.h" +#include "components/ui_image_view.h" + +namespace OHOS +{ + static constexpr const char *MOBILEDATAFAILEDSTART_ENSURE_BUTTON_VIEW_ID = "MobiledatafailedStartEnsureButton"; // 移动数据未开启界面的确定按钮 + + class AivoiceMobileDataFailedStartView + { + public: + struct LabelConfig + { + int16_t left; + int16_t top; + int16_t width; + int16_t height; + int16_t fontSize; + int16_t lineHeigh; + uint16_t textId; + uint8_t lineBreakMode; + }; + struct ButtonConfig + { + int16_t x; + int16_t y; + int16_t w; + int16_t h; + const char *ViewId; + }; + + struct ImageConfig + { + int16_t x; + int16_t y; + int16_t w; + int16_t h; + }; + + AivoiceMobileDataFailedStartView(); + ~AivoiceMobileDataFailedStartView(); + static AivoiceMobileDataFailedStartView *GetInstance(void); + UIScrollView *CreateAivoiceMobileDataFailedStartView(void); + + private: + void ClearAll(void); + UILabelExt *AivoiceMobileDataFailedStartLabelInit(LabelConfig &labelconfig); + UIButton *AivoiceMobileDataFailedStartButtonInit(ButtonConfig &buttonconfig); + UIImageView *AivoiceMobileDataFailedStartImageInit(ImageConfig &imageconfig); + bool CreateAivoiceMobileDataFailedStartLabel(void); + bool CreateAivoiceMobileDataFailedStartButton(void); + bool CreateAivoiceMobileDataFailedStartImage(void); + bool CreateAivoiceMobileDataFailedStartScrollView(void); + UIScrollView *scrollView{nullptr}; + UILabelExt *title{nullptr}; + UIImageView *attentionImage{nullptr}; + UILabelExt *label[2]{nullptr}; + UILabelExt *ensure{nullptr}; + UIButton *ensureButton{nullptr}; + }; +} +#endif \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AivoiceReturnResultTextView.h b/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AivoiceReturnResultTextView.h new file mode 100644 index 000000000..74fc328bc --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AivoiceReturnResultTextView.h @@ -0,0 +1,86 @@ +/* + * @Author: luozheng 1732036298@qq.com + * @Date: 2024-06-22 16:46:26 + * @LastEditors: luozheng 1732036298@qq.com + * @LastEditTime: 2024-06-25 17:40:57 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AivoiceReturnResultTextView.h + */ + +#ifndef AIVOICE_RETURN_RESULT_TEXT_VIEW_H +#define AIVOICE_RETURN_RESULT_TEXT_VIEW_H + +#include "components/ui_scroll_view.h" +#include "components/ui_label_ext.h" +#include "components/ui_button.h" +#include "components/ui_image_view.h" + +namespace OHOS +{ + static constexpr const char *AIVOICERETURNRESULTTEXT_RETURN_BUTTON_VIEW_ID = "AivoiceReturnResultTextReturnButton"; // 返回对话内容界面的返回按钮 + static constexpr const char *AIVOICERETURNRESULTTEXT_CONTINUECHAT_BUTTON_VIEW_ID = "AivoiceReturnResultTextContinueChatButton"; // 返回对话内容界面的继续对话按钮 + + class AivoiceReturnResultTextView + { + public: + struct LabelConfig + { + int16_t left; + int16_t top; + int16_t width; + int16_t height; + int16_t fontSize; + int16_t lineHeight; + uint16_t textId; + uint8_t lineBreakMode; + }; + struct ButtonConfig + { + int16_t x; + int16_t y; + int16_t w; + int16_t h; + const char *ViewId; + }; + struct ImageConfig + { + int16_t x; + int16_t y; + int16_t w; + int16_t h; + const char *src; + }; + + AivoiceReturnResultTextView(); + ~AivoiceReturnResultTextView(); + static AivoiceReturnResultTextView *GetInstance(void); + UIScrollView *CreateAivoiceReturnResultTextView(void); + + private: + void ClearAll(void); + UILabelExt *AivoiceReturnResultTextLabelInit(LabelConfig &labelconfig); + UIButton *AivoiceReturnResultTextButtonInit(ButtonConfig &buttonconfig); + UIImageView *AivoiceReturnResultTextImageInit(ImageConfig &imageconfig); + bool CreateAivoiceReturnResultTextLabel(void); + bool CreateAivoiceReturnResultTextUserQuestionLabel(void); + bool CreateAivoiceReturnResultTextAIAnswerLabel(void); + bool CreateAivoiceReturnResultTextLImage(void); + bool CreateAivoiceReturnResultTextButton(void); + bool CreateAivoiceReturnResultTextScrollView(void); + UIScrollView *scrollView{nullptr}; + UILabelExt *title{nullptr}; + + UILabelExt *question{nullptr}; // 提出的问题 + UIScrollView *questionScrollView{nullptr}; + UIImageView *recGreenImage{nullptr}; + + UILabelExt *answer{nullptr}; // AI回答的答案 + UIScrollView *answerScrollView{nullptr}; + UIImageView *recBlackImage{nullptr}; + + UIButton *returnButton{nullptr}; + + UIButton *continueChatButton{nullptr}; + UILabelExt *continueChat{nullptr}; + }; +} +#endif diff --git a/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AivoiceThinkingView.h b/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AivoiceThinkingView.h new file mode 100644 index 000000000..d225ed715 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AivoiceThinkingView.h @@ -0,0 +1,88 @@ +/* + * @Author: luozheng 1732036298@qq.com + * @Date: 2024-06-22 16:46:26 + * @LastEditors: luozheng 1732036298@qq.com + * @LastEditTime: 2024-06-24 16:18:51 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AivoiceThinkingView.h + */ + +#ifndef AIVOICE_THINKING_VIEW_H +#define AIVOICE_THINKING_VIEW_H + +#include "components/ui_scroll_view.h" +#include "components/ui_label_ext.h" +#include "components/ui_button.h" +#include "components/ui_image_view.h" +#include "components/ui_image_animator.h" +namespace OHOS +{ + static constexpr const char *CANCEL_THINKING_BUTTON_VIEW_ID = "CancelThinkingButton"; // 思考中界面说话完毕按钮 + + static constexpr int16_t AIVOICE_THINKING_IMAGE_ANIMATOR_VIEW_X = 153; + static constexpr int16_t AIVOICE_THINKING_IMAGE_ANIMATOR_VIEW_Y = 120; + static constexpr int16_t AIVOICE_THINKING_IMAGE_ANIMATOR_VIEW_W = 160; + static constexpr int16_t AIVOICE_THINKING_IMAGE_ANIMATOR_VIEW_H = 160; + static constexpr int16_t AIVOICE_THINKING_IMAGE_ANIMATOR_VIEW_NUM_FRAMES = 29; // 图片帧数 + static constexpr int16_t AIVOICE_THINKING_IMAGE_ANIMATOR_DELAY = 200; // 图片更新间隔 + static constexpr char *AIVoiceThinkingImagePaths = "/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_"; + class AivoiceThinkingView + { + public: + struct LabelConfig + { + int16_t left; + int16_t top; + int16_t width; + int16_t height; + int16_t fontSize; + int16_t lineHeigh; + uint16_t textId; + uint8_t lineBreakMode; + }; + struct ButtonConfig + { + int16_t x; + int16_t y; + int16_t w; + int16_t h; + const char *ViewId; + }; + + struct ImageAnimatorConfig + { + int16_t x; + int16_t y; + int16_t width; + int16_t height; + ImageAnimatorInfo *imageInfoArray; + const char *const *pathsArray; + uint8_t numFrames; + int delay; + }; + + AivoiceThinkingView(); + ~AivoiceThinkingView(); + static AivoiceThinkingView *GetInstance(void); + UIScrollView *CreateAivoiceThinkingView(void); + + private: + void ClearAll(void); + const char **CreateImagePathsArray(const char *basePath, const int numImages, const char *fileExtension = "bin"); + void FreeImagePathsArray(const char **imagePaths, const int numImages); + UILabelExt *AivoiceThinkingLabelInit(LabelConfig &labelconfig); + UIButton *AivoiceThinkingButtonInit(ButtonConfig &buttonconfig); + UIImageAnimatorView *AivoiceThinkingImageAnimatorInit(ImageAnimatorConfig &imageanimatorconfig); + bool CreateAivoiceThinkingLabel(void); + bool CreateAivoiceThinkingButton(void); + bool CreateAivoiceThinkingImageAnimator(void); + bool CreateAivoiceThinkingScrollView(void); + UIScrollView *scrollView{nullptr}; + UILabelExt *title{nullptr}; + UILabelExt *cancelThink{nullptr}; + UIButton *cancelThinkButton{nullptr}; + UIImageAnimatorView *AiVoiceThinkingImageAnimatorView{nullptr}; + ImageAnimatorInfo AiVoiceThinkingImageInfo[AIVOICE_THINKING_IMAGE_ANIMATOR_VIEW_NUM_FRAMES]; + const char **AiVoiceThinkingPathsArray{nullptr}; + }; +} +#endif diff --git a/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AiVoiceBluetoothFailedStartView.cpp b/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AiVoiceBluetoothFailedStartView.cpp index e69de29bb..25b5ae853 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AiVoiceBluetoothFailedStartView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AiVoiceBluetoothFailedStartView.cpp @@ -0,0 +1,265 @@ +/* + * @Author: luozheng 1732036298@qq.com + * @Date: 2024-05-07 11:25:58 + * @LastEditors: luozheng 1732036298@qq.com + * @LastEditTime: 2024-06-24 10:39:08 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/AiVoice/src/AiVoiceBluetoothFailedStartView.cpp + */ +#include "aivoice/include/AiVoicePresenter.h" +#include "aivoice/include/AiVoiceBluetoothFailedStartView.h" +#include "wearable_log.h" +#include "language/font/ui_resource_string.h" +#include +namespace OHOS +{ + + static AiVoiceBluetoothFailedStartView *g_pAiVoiceBluetoothFailedStartView{nullptr}; + + AiVoiceBluetoothFailedStartView::AiVoiceBluetoothFailedStartView() + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoiceBluetoothFailedStartView::AiVoiceBluetoothFailedStartView"); + g_pAiVoiceBluetoothFailedStartView = this; + } + + AiVoiceBluetoothFailedStartView::~AiVoiceBluetoothFailedStartView() + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoiceBluetoothFailedStartView::~AiVoiceBluetoothFailedStartView"); + ClearAll(); + g_pAiVoiceBluetoothFailedStartView = nullptr; + } + + AiVoiceBluetoothFailedStartView *AiVoiceBluetoothFailedStartView::GetInstance() + { + return g_pAiVoiceBluetoothFailedStartView; + } + + void AiVoiceBluetoothFailedStartView::ClearAll(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AiVoiceBluetoothFailedStartView::ClearAll"); + if (scrollView != nullptr) + { + scrollView->RemoveAll(); + + if (title != nullptr) + { + delete title; + title = nullptr; + } + + if (attentionImage != nullptr) + { + delete attentionImage; + attentionImage = nullptr; + } + + for (int i = 0; i < 2; i++) + { + if (label[i] != nullptr) + { + delete label[i]; + label[i]; + } + } + + if (ensure != nullptr) + { + delete ensure; + ensure = nullptr; + } + + if (ensureButton != nullptr) + { + delete ensureButton; + ensureButton = nullptr; + } + + delete scrollView; + scrollView = nullptr; + } + } + + UILabelExt *AiVoiceBluetoothFailedStartView::AiVoiceBluetoothFailedStartLabelInit(LabelConfig &labelconfig) + { + UILabelExt *label = new UILabelExt(); + if (label == nullptr) + { + return nullptr; + } + label->SetPosition(labelconfig.left, labelconfig.top, labelconfig.width, labelconfig.height); + label->SetStyle(STYLE_TEXT_FONT, labelconfig.fontSize); + label->SetStyle(STYLE_LINE_HEIGHT, labelconfig.lineHeigh); + label->SetTextId(labelconfig.textId); + label->SetLineBreakMode(labelconfig.lineBreakMode); + label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, labelconfig.fontSize); + return label; + } + + UIButton *AiVoiceBluetoothFailedStartView::AiVoiceBluetoothFailedStartButtonInit(ButtonConfig &buttonconfig) + { + UIButton *button = new UIButton(); + if (button == nullptr) + { + return nullptr; + } + button->SetPosition(buttonconfig.x, buttonconfig.y, buttonconfig.w, buttonconfig.h); + button->SetViewId(buttonconfig.ViewId); + button->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919); + button->SetStyle(STYLE_BACKGROUND_OPA, 0xff); + button->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff383838, UIButton::PRESSED); + + return button; + } + + UIImageView *AiVoiceBluetoothFailedStartView::AiVoiceBluetoothFailedStartImageInit(ImageConfig &imageconfig) + { + UIImageView *Image = new UIImageView(); + if (Image == nullptr) + { + return nullptr; + } + Image->SetPosition(imageconfig.x, imageconfig.y, imageconfig.w, imageconfig.h); + return Image; + } + + bool AiVoiceBluetoothFailedStartView::CreateAiVoiceBluetoothFailedStartScrollView(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AiVoiceBluetoothFailedStartView::CreateAiVoiceBluetoothFailedStartScrollView"); + scrollView = new UIScrollView(); + if (scrollView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoiceBluetoothFailedStartView::scrollView new fail!"); + return false; + } + scrollView->SetPosition(0, 0, 466, 466); + scrollView->SetTouchable(true); + scrollView->SetDraggable(true); + + return true; + } + + bool AiVoiceBluetoothFailedStartView::CreateAiVoiceBluetoothFailedStartLabel(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AiVoiceBluetoothFailedStartView::CreateAiVoiceBluetoothFailedStartLabel"); + LabelConfig labelconfig = { + .left = 83, + .top = 52, + .width = 300, + .height = 35, + .fontSize = 30, + .lineHeigh = 35, + .textId = STR_AI_INTELLIGENT_ASSISTANT, + .lineBreakMode = UILabel::LINE_BREAK_MARQUEE, + }; + title = AiVoiceBluetoothFailedStartLabelInit(labelconfig); + if (title == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoiceBluetoothFailedStartView::title is nullptr!"); + return false; + } + /* -------------------------------------------------------------------------- */ + labelconfig.left = 53; + labelconfig.width = 360; + int textId[] = {STR_BOOT_FAILED, STR_ENABLE_BLUETOOTH_FIRST}; + for (int i = 0; i < sizeof(textId) / sizeof(textId[0]); i++) + { + labelconfig.top = 222 + i * labelconfig.height; + labelconfig.textId = textId[i]; + label[i] = AiVoiceBluetoothFailedStartLabelInit(labelconfig); + if (label[i] == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoiceBluetoothFailedStartView::label[%d] is nullptr!", i); + return false; + } + } + /* -------------------------------------------------------------------------- */ + labelconfig = { + .left = 133, + .top = 368, + .width = 200, + .height = 35, + .fontSize = 30, + .lineHeigh = 35, + .textId = STR_OK, + .lineBreakMode = UILabel::LINE_BREAK_MARQUEE, + }; + ensure = AiVoiceBluetoothFailedStartLabelInit(labelconfig); + if (ensure == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoiceBluetoothFailedStartView::ensure is nullptr!"); + return false; + } + + return true; + } + + bool AiVoiceBluetoothFailedStartView::CreateAiVoiceBluetoothFailedStartButton(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AiVoiceBluetoothFailedStartView::CreateAiVoiceBluetoothFailedStartButton"); + ButtonConfig buttonconfig = { + .x = 93, + .y = 340, + .w = 280, + .h = 90, + .ViewId = BLUETOOTHFAILEDSTART_ENSURE_BUTTON_VIEW_ID, + }; + ensureButton = AiVoiceBluetoothFailedStartButtonInit(buttonconfig); + if (ensureButton == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ensureButton new fail!"); + return false; + } + UIView::OnClickListener *clickListener = static_cast(AiVoicePresenter::GetInstance()); + if (clickListener == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoiceBluetoothFailedStartView::draglistener can not be nullptr!"); + return false; + } + ensureButton->SetOnClickListener(clickListener); + + return true; + } + + bool AiVoiceBluetoothFailedStartView::CreateAiVoiceBluetoothFailedStartImage(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AiVoiceBluetoothFailedStartView::CreateAiVoiceBluetoothFailedStartImage"); + ImageConfig imageconfig = { + .x = 193, + .y = 120, + .w = 80, + .h = 80, + }; + attentionImage = AiVoiceBluetoothFailedStartImageInit(imageconfig); + if (attentionImage == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "attentionImage new fail!"); + return false; + } + attentionImage->SetStyle(STYLE_BORDER_RADIUS, 100); + attentionImage->SetSrc(PNG_ATTENTION_IMAGE); + + return true; + } + + UIScrollView *AiVoiceBluetoothFailedStartView::CreateAiVoiceBluetoothFailedStartView(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AiVoiceBluetoothFailedStartView::CreateAiVoiceBluetoothFailedStartView"); + if (scrollView == nullptr) + { + if (!CreateAiVoiceBluetoothFailedStartScrollView() || !CreateAiVoiceBluetoothFailedStartLabel() || + !CreateAiVoiceBluetoothFailedStartButton() || !CreateAiVoiceBluetoothFailedStartImage()) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoiceBluetoothFailedStartView::CreateAiVoiceBluetoothFailedStartView fail!!"); + return nullptr; + } + scrollView->Add(title); + scrollView->Add(attentionImage); + scrollView->Add(label[0]); + scrollView->Add(label[1]); + scrollView->Add(ensureButton); + scrollView->Add(ensure); + } + return scrollView; + } + +} \ No newline at end of file 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 7de4eb606..0a6cb1ff1 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AiVoiceModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AiVoiceModel.cpp @@ -2,10 +2,11 @@ * @Author: luozheng 1732036298@qq.com * @Date: 2024-06-20 15:14:50 * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-06-20 15:25:15 + * @LastEditTime: 2024-06-25 17:50:59 * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AiVoiceModel.cpp */ #include "aivoice/include/AiVoiceModel.h" +#include "aivoice/include/AiVoicePresenter.h" #include "wearable_log.h" namespace OHOS @@ -20,4 +21,61 @@ namespace OHOS return instance; } + bool AiVoiceModel::ChangeToReturnResultTextView(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AiVoiceModel::ChangeToReturnResultTextView"); + AiVoicePresenter *Aipresenter_ = AiVoicePresenter::GetInstance(); + if (Aipresenter_ == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoiceModel::ChangeToReturnResultTextView fail!!"); + return false; + } + Aipresenter_->JumpToReturnResultTextView(); + return true; + } + + // 获取蓝牙是否打开 + bool AiVoiceModel::GetBluetoothIsOpen(void) + { + return true; + } + + // 获取移动数据是否打开 + bool AiVoiceModel::GetMobileDataIsOpen(void) + { + return true; + } + + // 获取与AI模型的连接状态 + bool AiVoiceModel::GetAiVoiceConnectStatus(void) + { + return true; + } + + std::string AiVoiceModel::GetUserQuestionStr(void) + { + userQuestionStr = "写一篇100字文章"; + return userQuestionStr; + } + + void AiVoiceModel::SetUserQuestionStr(std::string str) + { + userQuestionStr = str; + } + + std::string AiVoiceModel::GetAiAnswerStrStr(void) + { + aiAnswerStr = "春风化雨,时光荏苒。百年之内,生命如白驹过隙,转瞬即逝。唯有心存善念,用爱化解芥蒂,用智慧建构未来,才是人生的真正意义。让我们携手共进,用每一分时光去关爱他人,用每一滴汗水去创造奇迹,用每一个眼神去传递温暖。让这个世界因我们的存在而变得更加美好。生命短暂,但只要我们怀着虔诚的心,坚韧前行,我们就一定能在有限的时光里留下无限的可能。"; + return aiAnswerStr; + } + + void AiVoiceModel::SetaiAnswerStrStr(std::string str) + { + aiAnswerStr = str; + } + + std::string AiVoiceModel::GetAIAudioPath(void) + { + return AIAIAudioPath; + } } diff --git a/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AiVoicePresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AiVoicePresenter.cpp index ec2634410..be7a87a66 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AiVoicePresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AiVoicePresenter.cpp @@ -2,7 +2,7 @@ * @Author: luozheng 1732036298@qq.com * @Date: 2024-06-20 15:11:17 * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-06-21 21:07:51 + * @LastEditTime: 2024-06-25 17:39:51 * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AiVoicePresenter.cpp */ #include "AppViewIDs.h" @@ -14,6 +14,8 @@ #include #include "UiConfig.h" #include "iostream" +#include // For std::string +#include // For std::unordered_map namespace OHOS { @@ -42,6 +44,7 @@ namespace OHOS { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AiVoicePresenter::OnStart"); Presenter::OnStart(); + ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON); } // 页面已经展示后的调用逻辑 @@ -67,6 +70,27 @@ namespace OHOS { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AiVoicePresenter::OnStop"); Presenter::OnStop(); + ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON); + } + + bool AiVoicePresenter::JumpToReturnResultTextView(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AiVoicePresenter::JumpToReturnResultTextView"); + if (view_ == nullptr) + { + return false; + } + if (view_->GetAiVoiceScrollView(AIVOICE_THINKING_VIEWID) != nullptr && view_->GetAiVoiceScrollView(AIVOICE_THINKING_VIEWID)->IsVisible()) + { + view_->ChangeView(AIVOICE_THINKING_VIEWID, AIVOICE_RETURN_RESULT_TEXT_VIEWID); // 思考中界面->返回结果 + } + else + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoicePresenter::JumpToReturnResultTextView fail"); + return false; + } + + return true; } bool AiVoicePresenter::OnClick(UIView &view, const ClickEvent &event) @@ -75,11 +99,51 @@ namespace OHOS WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AiVoicePresenter::OnClick"); std::string viewId = view.GetViewId(); - if (viewId == START_CHAT_BUTTON_VIEW_ID) + if (viewId == START_CHAT_BUTTON_VIEW_ID) // 如果点击的是开始对话按钮 { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoicePresenter::START_CHAT_BUTTON_VIEW_ID"); + if (model->GetMobileDataIsOpen() == false) // 判断移动数据是否开启 + { + view_->ChangeView(AIVOICE_STARTCHAT_VIEWID, AIVOICE_MOBILEDATA_FAILEDSTART_VIEWID); // 开始对话->移动数据未开启界面 + } + else + { + view_->ChangeView(AIVOICE_STARTCHAT_VIEWID, AIVOICE_LISTENING_VIEWID); // 开始对话->聆听中界面 + } + return true; } + if (viewId == FINISH_SPEAKING_BUTTON_VIEW_ID) // 如果点击的是说话完毕按钮 + { + if (model->GetAiVoiceConnectStatus() == false) // 判断与AI模型的连接状态 + { + view_->ChangeView(AIVOICE_LISTENING_VIEWID, AIVOICE_CONNECT_TIMEOUT_VIEWID); // 聆听中->连接超时界面 + } + else + { + view_->ChangeView(AIVOICE_LISTENING_VIEWID, AIVOICE_THINKING_VIEWID); // 聆听中->思考中界面 + } + return true; + } + + std::unordered_map> viewIdMap = { + {BLUETOOTHFAILEDSTART_ENSURE_BUTTON_VIEW_ID, {AIVOICE_BLUETOOTH_FAILEDSTART_VIEWID, AIVOICE_STARTCHAT_VIEWID}}, // 返回一级界面 + {MOBILEDATAFAILEDSTART_ENSURE_BUTTON_VIEW_ID, {AIVOICE_MOBILEDATA_FAILEDSTART_VIEWID, AIVOICE_STARTCHAT_VIEWID}}, // 返回一级界面 + {AIVOICECONNECTTIMEOUT_ENSURE_BUTTON_VIEW_ID, {AIVOICE_CONNECT_TIMEOUT_VIEWID, AIVOICE_LISTENING_VIEWID}}, // 返回继续聆听 + {CANCEL_THINKING_BUTTON_VIEW_ID, {AIVOICE_THINKING_VIEWID, AIVOICE_STARTCHAT_VIEWID}}, // 返回一级界面 + {AIVOICERETURNRESULTTEXT_RETURN_BUTTON_VIEW_ID, {AIVOICE_RETURN_RESULT_TEXT_VIEWID, AIVOICE_STARTCHAT_VIEWID}}, // 返回一级界面,并清除手表聊天记录 + {AIVOICERETURNRESULTTEXT_CONTINUECHAT_BUTTON_VIEW_ID, {AIVOICE_RETURN_RESULT_TEXT_VIEWID, AIVOICE_LISTENING_VIEWID}}, // 返回继续聆听,并清除手表聊天记录 + }; + auto it = viewIdMap.find(viewId); + if (it != viewIdMap.end()) + { + view_->ChangeView(it->second.first, it->second.second); + return true; + } + else + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Return false if viewId doesn't match any entry in the map"); + return false; + } return true; } @@ -98,9 +162,26 @@ namespace OHOS { UNUSED(view); WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AiVoicePresenter::OnDragEnd"); + UIScrollView *scrollView = dynamic_cast(&view); + if (scrollView == nullptr) + { + return false; + } + if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && AiVoicePresenter::X_DRAG_FLAG) { - NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS); + if (scrollView == view_->GetAiVoiceScrollView(AIVOICE_STARTCHAT_VIEWID)) + { + NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS); + } + else if (scrollView == view_->GetAiVoiceScrollView(AIVOICE_LISTENING_VIEWID)) + { + view_->ChangeView(AIVOICE_LISTENING_VIEWID, AIVOICE_STARTCHAT_VIEWID); // 聆听中->开始对话界面 + } + else if (scrollView == view_->GetAiVoiceScrollView(AIVOICE_THINKING_VIEWID)) + { + view_->ChangeView(AIVOICE_THINKING_VIEWID, AIVOICE_STARTCHAT_VIEWID); // 思考中->开始对话界面 + } AiVoicePresenter::X_DRAG_FLAG = false; } return true; diff --git a/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AiVoiceView.cpp b/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AiVoiceView.cpp index c224ea9cc..f1e0843fa 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AiVoiceView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AiVoiceView.cpp @@ -2,7 +2,7 @@ * @Author: luozheng 1732036298@qq.com * @Date: 2024-05-07 11:25:58 * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-06-21 21:07:56 + * @LastEditTime: 2024-06-25 17:43:03 * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/AiVoice/src/AiVoiceView.cpp */ #include "aivoice/include/AiVoicePresenter.h" @@ -42,6 +42,62 @@ namespace OHOS delete container_; container_ = nullptr; } + + if (AiVoiceScrollView[AIVOICE_STARTCHAT_VIEWID] != nullptr) + { + AiVoiceScrollView[AIVOICE_STARTCHAT_VIEWID]->RemoveAll(); + + delete title; + title = nullptr; + + delete startChatImage; + startChatImage = nullptr; + + delete startChatButton; + startChatButton = nullptr; + + delete startChatLabel; + startChatLabel = nullptr; + + delete AiVoiceScrollView[AIVOICE_STARTCHAT_VIEWID]; + AiVoiceScrollView[AIVOICE_STARTCHAT_VIEWID] = nullptr; + } + + if (p_AiVoiceBluetoothFailedStartView != nullptr) + { + delete p_AiVoiceBluetoothFailedStartView; + p_AiVoiceBluetoothFailedStartView = nullptr; + } + + if (p_AivoiceMobileDataFailedStartView != nullptr) + { + delete p_AivoiceMobileDataFailedStartView; + p_AivoiceMobileDataFailedStartView = nullptr; + } + + if (p_AivoiceConnectTimeoutView != nullptr) + { + delete p_AivoiceConnectTimeoutView; + p_AivoiceConnectTimeoutView = nullptr; + } + + if (p_AivoiceListeningView != nullptr) + { + delete p_AivoiceListeningView; + p_AivoiceListeningView = nullptr; + } + + if (p_AivoiceThinkingView != nullptr) + { + delete p_AivoiceThinkingView; + p_AivoiceThinkingView = nullptr; + } + + if (p_AivoiceReturnResultTextView != nullptr) + { + delete p_AivoiceReturnResultTextView; + p_AivoiceReturnResultTextView = nullptr; + } } } @@ -73,7 +129,7 @@ namespace OHOS return Image; } - UIButton *AiVoiceView::AiVoiceViewLabelButtonInit(ButtonConfig &buttonconfig) + UIButton *AiVoiceView::AiVoiceViewButtonInit(ButtonConfig &buttonconfig) { UIButton *button = new UIButton(); if (button == nullptr) @@ -84,7 +140,7 @@ namespace OHOS button->SetViewId(buttonconfig.ViewId); button->SetStyle(STYLE_BACKGROUND_COLOR, 0xff4fc34c); button->SetStyle(STYLE_BACKGROUND_OPA, 0xff); - button->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff191919, UIButton::PRESSED); + button->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff383838, UIButton::PRESSED); button->SetOnClickListener(presenter_); return button; @@ -92,6 +148,7 @@ namespace OHOS bool AiVoiceView::CreateAiVoiceViewLabel(void) { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AiVoiceView::CreateAiVoiceViewLabel"); LabelConfig labelConfig = { .left = 83, .top = 52, @@ -131,6 +188,7 @@ namespace OHOS bool AiVoiceView::CreateAiVoiceViewImageView(void) { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AiVoiceView::CreateAiVoiceViewImageView"); ImageConfig imagecinfig = { .x = 207, .y = 182, @@ -152,6 +210,7 @@ namespace OHOS bool AiVoiceView::CreateAiVoiceViewButton(void) { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AiVoiceView::CreateAiVoiceViewButton"); ButtonConfig buttonconfig = { .x = 93, .y = 340, @@ -159,7 +218,7 @@ namespace OHOS .h = 90, .ViewId = START_CHAT_BUTTON_VIEW_ID, }; - startChatButton = AiVoiceViewLabelButtonInit(buttonconfig); + startChatButton = AiVoiceViewButtonInit(buttonconfig); if (startChatButton == nullptr) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "startChatButton new fail!"); @@ -169,18 +228,37 @@ namespace OHOS return true; } + bool AiVoiceView::CreateAiVoiceScrollView(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AiVoiceView::CreateAiVoiceScrollView"); + AiVoiceScrollView[AIVOICE_STARTCHAT_VIEWID] = new UIScrollView(); + if (AiVoiceScrollView[AIVOICE_STARTCHAT_VIEWID] == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoiceView::CreateAiVoiceScrollView[AIVOICE_STARTCHAT_VIEWID] new fail!"); + return false; + } + AiVoiceScrollView[AIVOICE_STARTCHAT_VIEWID]->SetPosition(0, 0, 466, 466); + AiVoiceScrollView[AIVOICE_STARTCHAT_VIEWID]->SetTouchable(true); + AiVoiceScrollView[AIVOICE_STARTCHAT_VIEWID]->SetDraggable(true); + AiVoiceScrollView[AIVOICE_STARTCHAT_VIEWID]->SetOnDragListener(presenter_); + container_->Add(AiVoiceScrollView[AIVOICE_STARTCHAT_VIEWID]); + + return true; + } + void AiVoiceView::CreateAiVoiceView(void) { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AiVoiceView::CreateAiVoiceView"); - if (!CreateAiVoiceViewLabel() || !CreateAiVoiceViewImageView() || !CreateAiVoiceViewButton()) + if (!CreateAiVoiceScrollView() || !CreateAiVoiceViewLabel() || + !CreateAiVoiceViewImageView() || !CreateAiVoiceViewButton()) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoiceView::CreateAiVoiceView fail!"); return; } - container_->Add(title); - container_->Add(startChatImage); - container_->Add(startChatButton); - container_->Add(startChatLabel); + AiVoiceScrollView[AIVOICE_STARTCHAT_VIEWID]->Add(title); + AiVoiceScrollView[AIVOICE_STARTCHAT_VIEWID]->Add(startChatImage); + AiVoiceScrollView[AIVOICE_STARTCHAT_VIEWID]->Add(startChatButton); + AiVoiceScrollView[AIVOICE_STARTCHAT_VIEWID]->Add(startChatLabel); } void AiVoiceView::OnStart() @@ -194,7 +272,6 @@ namespace OHOS return; } container_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight()); - container_->SetOnDragListener(presenter_); container_->SetTouchable(true); container_->SetDraggable(true); @@ -247,7 +324,17 @@ namespace OHOS bool AiVoiceView::ChangeAiVoiceBluetoothFailedStartView(int16_t thisView) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoiceView::ChangeAiVoiceBluetoothFailedStartView"); - + if (AiVoiceScrollView[thisView] == nullptr) + { + p_AiVoiceBluetoothFailedStartView = new AiVoiceBluetoothFailedStartView(); + if (p_AiVoiceBluetoothFailedStartView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "new AiVoiceScrollView[%d] fail", thisView); + return false; + } + AiVoiceScrollView[thisView] = p_AiVoiceBluetoothFailedStartView->CreateAiVoiceBluetoothFailedStartView(); + container_->Add(AiVoiceScrollView[thisView]); + } return true; } @@ -255,7 +342,17 @@ namespace OHOS bool AiVoiceView::ChangeAiVoiceMobileDataFailedStartView(int16_t thisView) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoiceView::ChangeAiVoiceMobileDataFailedStartView"); - + if (AiVoiceScrollView[thisView] == nullptr) + { + p_AivoiceMobileDataFailedStartView = new AivoiceMobileDataFailedStartView(); + if (p_AivoiceMobileDataFailedStartView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "new AiVoiceScrollView[%d] fail", thisView); + return false; + } + AiVoiceScrollView[thisView] = p_AivoiceMobileDataFailedStartView->CreateAivoiceMobileDataFailedStartView(); + container_->Add(AiVoiceScrollView[thisView]); + } return true; } @@ -263,6 +360,17 @@ namespace OHOS bool AiVoiceView::ChangeAiVoicConnectTimeoutView(int16_t thisView) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoiceView::ChangeAiVoicConnectTimeoutView"); + if (AiVoiceScrollView[thisView] == nullptr) + { + p_AivoiceConnectTimeoutView = new AivoiceConnectTimeoutView(); + if (p_AivoiceConnectTimeoutView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "new AiVoiceScrollView[%d] fail", thisView); + return false; + } + AiVoiceScrollView[thisView] = p_AivoiceConnectTimeoutView->CreateAivoiceConnectTimeoutView(); + container_->Add(AiVoiceScrollView[thisView]); + } return true; } @@ -271,7 +379,17 @@ namespace OHOS bool AiVoiceView::ChangeAiVoicListeningView(int16_t thisView) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoiceView::ChangeAiVoicListeningView"); - + if (AiVoiceScrollView[thisView] == nullptr) + { + p_AivoiceListeningView = new AivoiceListeningView(); + if (p_AivoiceListeningView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "new AiVoiceScrollView[%d] fail", thisView); + return false; + } + AiVoiceScrollView[thisView] = p_AivoiceListeningView->CreateAivoiceListeningView(); + container_->Add(AiVoiceScrollView[thisView]); + } return true; } @@ -279,7 +397,17 @@ namespace OHOS bool AiVoiceView::ChangeAiVoicThinkingView(int16_t thisView) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoiceView::ChangeAiVoicThinkingView"); - + if (AiVoiceScrollView[thisView] == nullptr) + { + p_AivoiceThinkingView = new AivoiceThinkingView(); + if (p_AivoiceThinkingView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "new AiVoiceScrollView[%d] fail", thisView); + return false; + } + AiVoiceScrollView[thisView] = p_AivoiceThinkingView->CreateAivoiceThinkingView(); + container_->Add(AiVoiceScrollView[thisView]); + } return true; } @@ -287,7 +415,32 @@ namespace OHOS bool AiVoiceView::ChangeAiVoicReturnResultTextView(int16_t thisView) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoiceView::ChangeAiVoicReturnResultTextView"); - + if (AiVoiceScrollView[thisView] == nullptr) + { + p_AivoiceReturnResultTextView = new AivoiceReturnResultTextView(); + if (p_AivoiceReturnResultTextView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "new AiVoiceScrollView[%d] fail", thisView); + return false; + } + AiVoiceScrollView[thisView] = p_AivoiceReturnResultTextView->CreateAivoiceReturnResultTextView(); + container_->Add(AiVoiceScrollView[thisView]); + } + else + { + container_->Remove(AiVoiceScrollView[thisView]); + delete p_AivoiceReturnResultTextView; + p_AivoiceReturnResultTextView = nullptr; + + p_AivoiceReturnResultTextView = new AivoiceReturnResultTextView(); + if (p_AivoiceReturnResultTextView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "new AiVoiceScrollView[%d] fail", thisView); + return false; + } + AiVoiceScrollView[thisView] = p_AivoiceReturnResultTextView->CreateAivoiceReturnResultTextView(); + container_->Add(AiVoiceScrollView[thisView]); + } return true; } @@ -339,4 +492,18 @@ namespace OHOS AiVoiceScrollView[showView]->SetVisible(true); Draw(); } + + UIScrollView *AiVoiceView::GetAiVoiceScrollView(int16_t index) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AiVoiceView::GetAiVoiceScrollView"); + if (AIVOICE_STARTCHAT_VIEWID <= index < MAX_AIVOICE_VIEWID) + { + return AiVoiceScrollView[index]; + } + else + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Overstep ones bounds"); + return nullptr; + } + } } \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AivoiceConnectTimeoutView.cpp b/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AivoiceConnectTimeoutView.cpp new file mode 100644 index 000000000..9dbf0126b --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AivoiceConnectTimeoutView.cpp @@ -0,0 +1,265 @@ +/* + * @Author: luozheng 1732036298@qq.com + * @Date: 2024-05-07 11:25:58 + * @LastEditors: luozheng 1732036298@qq.com + * @LastEditTime: 2024-06-24 10:38:42 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/AiVoice/src/AivoiceConnectTimeoutView.cpp + */ +#include "aivoice/include/AiVoicePresenter.h" +#include "aivoice/include/AivoiceConnectTimeoutView.h" +#include "wearable_log.h" +#include "language/font/ui_resource_string.h" +#include +namespace OHOS +{ + + static AivoiceConnectTimeoutView *g_pAivoiceConnectTimeoutView{nullptr}; + + AivoiceConnectTimeoutView::AivoiceConnectTimeoutView() + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceConnectTimeoutView::AivoiceConnectTimeoutView"); + g_pAivoiceConnectTimeoutView = this; + } + + AivoiceConnectTimeoutView::~AivoiceConnectTimeoutView() + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceConnectTimeoutView::~AivoiceConnectTimeoutView"); + ClearAll(); + g_pAivoiceConnectTimeoutView = nullptr; + } + + AivoiceConnectTimeoutView *AivoiceConnectTimeoutView::GetInstance() + { + return g_pAivoiceConnectTimeoutView; + } + + void AivoiceConnectTimeoutView::ClearAll(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceConnectTimeoutView::ClearAll"); + if (scrollView != nullptr) + { + scrollView->RemoveAll(); + + if (title != nullptr) + { + delete title; + title = nullptr; + } + + if (attentionImage != nullptr) + { + delete attentionImage; + attentionImage = nullptr; + } + + for (int i = 0; i < 2; i++) + { + if (label[i] != nullptr) + { + delete label[i]; + label[i]; + } + } + + if (ensure != nullptr) + { + delete ensure; + ensure = nullptr; + } + + if (ensureButton != nullptr) + { + delete ensureButton; + ensureButton = nullptr; + } + + delete scrollView; + scrollView = nullptr; + } + } + + UILabelExt *AivoiceConnectTimeoutView::AivoiceConnectTimeoutLabelInit(LabelConfig &labelconfig) + { + UILabelExt *label = new UILabelExt(); + if (label == nullptr) + { + return nullptr; + } + label->SetPosition(labelconfig.left, labelconfig.top, labelconfig.width, labelconfig.height); + label->SetStyle(STYLE_TEXT_FONT, labelconfig.fontSize); + label->SetStyle(STYLE_LINE_HEIGHT, labelconfig.lineHeigh); + label->SetTextId(labelconfig.textId); + label->SetLineBreakMode(labelconfig.lineBreakMode); + label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, labelconfig.fontSize); + return label; + } + + UIButton *AivoiceConnectTimeoutView::AivoiceConnectTimeoutButtonInit(ButtonConfig &buttonconfig) + { + UIButton *button = new UIButton(); + if (button == nullptr) + { + return nullptr; + } + button->SetPosition(buttonconfig.x, buttonconfig.y, buttonconfig.w, buttonconfig.h); + button->SetViewId(buttonconfig.ViewId); + button->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919); + button->SetStyle(STYLE_BACKGROUND_OPA, 0xff); + button->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff383838, UIButton::PRESSED); + + return button; + } + + UIImageView *AivoiceConnectTimeoutView::AivoiceConnectTimeoutImageInit(ImageConfig &imageconfig) + { + UIImageView *Image = new UIImageView(); + if (Image == nullptr) + { + return nullptr; + } + Image->SetPosition(imageconfig.x, imageconfig.y, imageconfig.w, imageconfig.h); + return Image; + } + + bool AivoiceConnectTimeoutView::CreateAivoiceConnectTimeoutScrollView(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceConnectTimeoutView::CreateAivoiceConnectTimeoutScrollView"); + scrollView = new UIScrollView(); + if (scrollView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceConnectTimeoutView::scrollView new fail!"); + return false; + } + scrollView->SetPosition(0, 0, 466, 466); + scrollView->SetTouchable(true); + scrollView->SetDraggable(true); + + return true; + } + + bool AivoiceConnectTimeoutView::CreateAivoiceConnectTimeoutLabel(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceConnectTimeoutView::CreateAivoiceConnectTimeoutLabel"); + LabelConfig labelconfig = { + .left = 83, + .top = 52, + .width = 300, + .height = 35, + .fontSize = 30, + .lineHeigh = 35, + .textId = STR_AI_INTELLIGENT_ASSISTANT, + .lineBreakMode = UILabel::LINE_BREAK_MARQUEE, + }; + title = AivoiceConnectTimeoutLabelInit(labelconfig); + if (title == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceConnectTimeoutView::title is nullptr!"); + return false; + } + /* -------------------------------------------------------------------------- */ + labelconfig.left = 53; + labelconfig.width = 360; + int textId[] = {STR_CONNECT_TIMEOUT, STR_PLEASE_RESTART_CHAT}; + for (int i = 0; i < sizeof(textId) / sizeof(textId[0]); i++) + { + labelconfig.top = 222 + i * labelconfig.height; + labelconfig.textId = textId[i]; + label[i] = AivoiceConnectTimeoutLabelInit(labelconfig); + if (label[i] == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceConnectTimeoutView::label[%d] is nullptr!", i); + return false; + } + } + /* -------------------------------------------------------------------------- */ + labelconfig = { + .left = 133, + .top = 368, + .width = 200, + .height = 35, + .fontSize = 30, + .lineHeigh = 35, + .textId = STR_OK, + .lineBreakMode = UILabel::LINE_BREAK_MARQUEE, + }; + ensure = AivoiceConnectTimeoutLabelInit(labelconfig); + if (ensure == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceConnectTimeoutView::ensure is nullptr!"); + return false; + } + + return true; + } + + bool AivoiceConnectTimeoutView::CreateAivoiceConnectTimeoutButton(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceConnectTimeoutView::CreateAivoiceConnectTimeoutButton"); + ButtonConfig buttonconfig = { + .x = 93, + .y = 340, + .w = 280, + .h = 90, + .ViewId = AIVOICECONNECTTIMEOUT_ENSURE_BUTTON_VIEW_ID, + }; + ensureButton = AivoiceConnectTimeoutButtonInit(buttonconfig); + if (ensureButton == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ensureButton new fail!"); + return false; + } + UIView::OnClickListener *clickListener = static_cast(AiVoicePresenter::GetInstance()); + if (clickListener == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceConnectTimeoutView::draglistener can not be nullptr!"); + return false; + } + ensureButton->SetOnClickListener(clickListener); + + return true; + } + + bool AivoiceConnectTimeoutView::CreateAivoiceConnectTimeoutImage(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceConnectTimeoutView::CreateAivoiceConnectTimeoutImage"); + ImageConfig imageconfig = { + .x = 193, + .y = 120, + .w = 80, + .h = 80, + }; + attentionImage = AivoiceConnectTimeoutImageInit(imageconfig); + if (attentionImage == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "attentionImage new fail!"); + return false; + } + attentionImage->SetStyle(STYLE_BORDER_RADIUS, 100); + attentionImage->SetSrc(PNG_ATTENTION_IMAGE); + + return true; + } + + UIScrollView *AivoiceConnectTimeoutView::CreateAivoiceConnectTimeoutView(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceConnectTimeoutView::CreateAivoiceConnectTimeoutView"); + if (scrollView == nullptr) + { + if (!CreateAivoiceConnectTimeoutScrollView() || !CreateAivoiceConnectTimeoutLabel() || + !CreateAivoiceConnectTimeoutButton() || !CreateAivoiceConnectTimeoutImage()) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceConnectTimeoutView::CreateAivoiceConnectTimeoutView fail!!"); + return nullptr; + } + scrollView->Add(title); + scrollView->Add(attentionImage); + scrollView->Add(label[0]); + scrollView->Add(label[1]); + scrollView->Add(ensureButton); + scrollView->Add(ensure); + } + return scrollView; + } + +} \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AivoiceListeningView.cpp b/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AivoiceListeningView.cpp new file mode 100644 index 000000000..010ff291d --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AivoiceListeningView.cpp @@ -0,0 +1,305 @@ +/* + * @Author: luozheng 1732036298@qq.com + * @Date: 2024-05-07 11:25:58 + * @LastEditors: luozheng 1732036298@qq.com + * @LastEditTime: 2024-06-24 16:39:51 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/AiVoice/src/AivoiceListeningView.cpp + */ +#include "aivoice/include/AiVoicePresenter.h" +#include "aivoice/include/AivoiceListeningView.h" +#include "wearable_log.h" +#include "language/font/ui_resource_string.h" +#include +// #include "common/image_cache_manager.h" +namespace OHOS +{ + + static AivoiceListeningView *g_pAivoiceListeningView{nullptr}; + + AivoiceListeningView::AivoiceListeningView() + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceListeningView::AivoiceListeningView"); + g_pAivoiceListeningView = this; + } + + AivoiceListeningView::~AivoiceListeningView() + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceListeningView::~AivoiceListeningView"); + ClearAll(); + g_pAivoiceListeningView = nullptr; + } + + AivoiceListeningView *AivoiceListeningView::GetInstance() + { + return g_pAivoiceListeningView; + } + + void AivoiceListeningView::ClearAll(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceListeningView::ClearAll"); + if (scrollView != nullptr) + { + scrollView->RemoveAll(); + + if (title != nullptr) + { + delete title; + title = nullptr; + } + + if (AiVoiceListeningImageAnimatorView != nullptr) + { + AiVoiceListeningImageAnimatorView->Stop(); + delete AiVoiceListeningImageAnimatorView; + AiVoiceListeningImageAnimatorView = nullptr; + + FreeImagePathsArray(AiVoiceListeningPathsArray, AIVOICE_LISTENING_IMAGE_ANIMATOR_VIEW_NUM_FRAMES); + } + + if (finishSpeak != nullptr) + { + delete finishSpeak; + finishSpeak = nullptr; + } + + if (finishSpeakButton != nullptr) + { + delete finishSpeakButton; + finishSpeakButton = nullptr; + } + + delete scrollView; + scrollView = nullptr; + } + } + + const char **AivoiceListeningView::CreateImagePathsArray(const char *basePath, const int numImages, const char *fileExtension) + { + const char **imagePaths = new const char *[numImages]; + if (imagePaths == nullptr) + { + return nullptr; + } + + char buffer[256]; + for (int i = 0; i < numImages; i++) + { + snprintf(buffer, sizeof(buffer), "%s%d.%s", basePath, i + 1, fileExtension); + imagePaths[i] = strdup(buffer); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, " imagePaths[%d] = %s", i, imagePaths[i]); + } + return imagePaths; + } + + void AivoiceListeningView::FreeImagePathsArray(const char **imagePaths, const int numImages) + { + for (int i = 0; i < numImages; i++) + { + // ImageCacheManager::GetInstance().UnloadSingleRes(imagePaths[i]); + delete imagePaths[i]; + imagePaths[i] = nullptr; + } + } + + UILabelExt *AivoiceListeningView::AivoiceListeningLabelInit(LabelConfig &labelconfig) + { + UILabelExt *label = new UILabelExt(); + if (label == nullptr) + { + return nullptr; + } + label->SetPosition(labelconfig.left, labelconfig.top, labelconfig.width, labelconfig.height); + label->SetStyle(STYLE_TEXT_FONT, labelconfig.fontSize); + label->SetStyle(STYLE_LINE_HEIGHT, labelconfig.lineHeigh); + label->SetTextId(labelconfig.textId); + label->SetLineBreakMode(labelconfig.lineBreakMode); + label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, labelconfig.fontSize); + return label; + } + + UIButton *AivoiceListeningView::AivoiceListeningButtonInit(ButtonConfig &buttonconfig) + { + UIButton *button = new UIButton(); + if (button == nullptr) + { + return nullptr; + } + button->SetPosition(buttonconfig.x, buttonconfig.y, buttonconfig.w, buttonconfig.h); + button->SetViewId(buttonconfig.ViewId); + button->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919); + button->SetStyle(STYLE_BACKGROUND_OPA, 0xff); + button->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff383838, UIButton::PRESSED); + + return button; + } + + UIImageAnimatorView *AivoiceListeningView::AivoiceListeningImageAnimatorInit(ImageAnimatorConfig &imageanimatorconfig) + { + UIImageAnimatorView *animatorView = new UIImageAnimatorView(); + if (animatorView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoiceListeningImageAnimatorView::AiVoiceListeningImageAnimatorView new fail"); + return nullptr; + } + + for (uint8_t i = 0; i < imageanimatorconfig.numFrames; i++) + { + // imageanimatorconfig.imageInfoArray[i].imageInfo = ImageCacheManager::GetInstance().LoadSingleRes(imageanimatorconfig.pathsArray[i]); + imageanimatorconfig.imageInfoArray[i].imagePath = (imageanimatorconfig.pathsArray[i]); + imageanimatorconfig.imageInfoArray[i].imageType = IMG_SRC_FILE_PATH; + imageanimatorconfig.imageInfoArray[i].pos.x = imageanimatorconfig.x; + imageanimatorconfig.imageInfoArray[i].pos.y = imageanimatorconfig.y; + imageanimatorconfig.imageInfoArray[i].width = imageanimatorconfig.width; + imageanimatorconfig.imageInfoArray[i].height = imageanimatorconfig.height; + } + + animatorView->SetPosition(imageanimatorconfig.x, imageanimatorconfig.y, imageanimatorconfig.width, imageanimatorconfig.height); + animatorView->SetImageAnimatorSrc(imageanimatorconfig.imageInfoArray, imageanimatorconfig.numFrames, imageanimatorconfig.delay); + animatorView->SetRepeat(true); + animatorView->SetAutoEnable(false); + animatorView->SetResizeMode(UIImageAnimatorView::FILL); + animatorView->Start(); + + return animatorView; + } + + bool AivoiceListeningView::CreateAivoiceListeningScrollView(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceListeningView::CreateAivoiceListeningScrollView"); + scrollView = new UIScrollView(); + if (scrollView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceListeningView::scrollView new fail!"); + return false; + } + scrollView->SetPosition(0, 0, 466, 466); + UIView::OnDragListener *dragListener = static_cast(AiVoicePresenter::GetInstance()); + if (dragListener == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceListeningView::dragListener new fail!"); + return false; + } + scrollView->SetOnDragListener(dragListener); + scrollView->SetTouchable(true); + scrollView->SetDraggable(true); + + return true; + } + + bool AivoiceListeningView::CreateAivoiceListeningLabel(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceListeningView::CreateAivoiceListeningLabel"); + LabelConfig labelconfig = { + .left = 83, + .top = 52, + .width = 300, + .height = 35, + .fontSize = 30, + .lineHeigh = 35, + .textId = STR_LISTENING, + .lineBreakMode = UILabel::LINE_BREAK_MARQUEE, + }; + title = AivoiceListeningLabelInit(labelconfig); + if (title == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceListeningView::title is nullptr!"); + return false; + } + /* -------------------------------------------------------------------------- */ + labelconfig = { + .left = 133, + .top = 368, + .width = 200, + .height = 35, + .fontSize = 30, + .lineHeigh = 35, + .textId = STR_FINISH_SPEAKING, + .lineBreakMode = UILabel::LINE_BREAK_MARQUEE, + }; + finishSpeak = AivoiceListeningLabelInit(labelconfig); + if (finishSpeak == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceListeningView::finishSpeak is nullptr!"); + return false; + } + + return true; + } + + bool AivoiceListeningView::CreateAivoiceListeningButton(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceListeningView::CreateAivoiceListeningButton"); + ButtonConfig buttonconfig = { + .x = 93, + .y = 340, + .w = 280, + .h = 90, + .ViewId = FINISH_SPEAKING_BUTTON_VIEW_ID, + }; + finishSpeakButton = AivoiceListeningButtonInit(buttonconfig); + if (finishSpeakButton == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "finishSpeakButton new fail!"); + return false; + } + UIView::OnClickListener *clickListener = static_cast(AiVoicePresenter::GetInstance()); + if (clickListener == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceListeningView::draglistener can not be nullptr!"); + return false; + } + finishSpeakButton->SetOnClickListener(clickListener); + + return true; + } + + bool AivoiceListeningView::CreateAivoiceListeningImageAnimator(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceListeningView::CreateAivoiceListeningImageAnimator"); + AiVoiceListeningPathsArray = CreateImagePathsArray(AIVoiceListeningImagePaths, AIVOICE_LISTENING_IMAGE_ANIMATOR_VIEW_NUM_FRAMES); + if (AiVoiceListeningPathsArray == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceListeningView::AiVoiceListeningPathsArray is nullptr!!"); + return false; + } + + ImageAnimatorConfig imageanimatorconfig = { + .x = AIVOICE_LISTENING_IMAGE_ANIMATOR_VIEW_X, + .y = AIVOICE_LISTENING_IMAGE_ANIMATOR_VIEW_Y, + .width = AIVOICE_LISTENING_IMAGE_ANIMATOR_VIEW_W, + .height = AIVOICE_LISTENING_IMAGE_ANIMATOR_VIEW_H, + .imageInfoArray = AiVoiceListeningImageInfo, + .pathsArray = AiVoiceListeningPathsArray, + .numFrames = AIVOICE_LISTENING_IMAGE_ANIMATOR_VIEW_NUM_FRAMES, + .delay = AIVOICE_LISTENING_IMAGE_ANIMATOR_DELAY, + }; + AiVoiceListeningImageAnimatorView = AivoiceListeningImageAnimatorInit(imageanimatorconfig); + if (AiVoiceListeningImageAnimatorView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoiceListeningImageAnimatorView::AiVoiceListeningImageAnimatorView new fail"); + return false; + } + + return true; + } + + UIScrollView *AivoiceListeningView::CreateAivoiceListeningView(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceListeningView::CreateAivoiceListeningView"); + if (scrollView == nullptr) + { + if (!CreateAivoiceListeningScrollView() || !CreateAivoiceListeningLabel() || + !CreateAivoiceListeningButton() || !CreateAivoiceListeningImageAnimator()) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceListeningView::CreateAivoiceListeningView fail!!"); + return nullptr; + } + scrollView->Add(title); + scrollView->Add(AiVoiceListeningImageAnimatorView); + scrollView->Add(finishSpeakButton); + scrollView->Add(finishSpeak); + } + return scrollView; + } +} \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AivoiceMobileDataFailedStartView.cpp b/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AivoiceMobileDataFailedStartView.cpp new file mode 100644 index 000000000..b76f9e6af --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AivoiceMobileDataFailedStartView.cpp @@ -0,0 +1,265 @@ +/* + * @Author: luozheng 1732036298@qq.com + * @Date: 2024-05-07 11:25:58 + * @LastEditors: luozheng 1732036298@qq.com + * @LastEditTime: 2024-06-24 10:39:26 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/AiVoice/src/AivoiceMobileDataFailedStartView.cpp + */ +#include "aivoice/include/AiVoicePresenter.h" +#include "aivoice/include/AivoiceMobileDataFailedStartView.h" +#include "wearable_log.h" +#include "language/font/ui_resource_string.h" +#include +namespace OHOS +{ + + static AivoiceMobileDataFailedStartView *g_pAivoiceMobileDataFailedStartView{nullptr}; + + AivoiceMobileDataFailedStartView::AivoiceMobileDataFailedStartView() + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceMobileDataFailedStartView::AivoiceMobileDataFailedStartView"); + g_pAivoiceMobileDataFailedStartView = this; + } + + AivoiceMobileDataFailedStartView::~AivoiceMobileDataFailedStartView() + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceMobileDataFailedStartView::~AivoiceMobileDataFailedStartView"); + ClearAll(); + g_pAivoiceMobileDataFailedStartView = nullptr; + } + + AivoiceMobileDataFailedStartView *AivoiceMobileDataFailedStartView::GetInstance() + { + return g_pAivoiceMobileDataFailedStartView; + } + + void AivoiceMobileDataFailedStartView::ClearAll(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceMobileDataFailedStartView::ClearAll"); + if (scrollView != nullptr) + { + scrollView->RemoveAll(); + + if (title != nullptr) + { + delete title; + title = nullptr; + } + + if (attentionImage != nullptr) + { + delete attentionImage; + attentionImage = nullptr; + } + + for (int i = 0; i < 2; i++) + { + if (label[i] != nullptr) + { + delete label[i]; + label[i]; + } + } + + if (ensure != nullptr) + { + delete ensure; + ensure = nullptr; + } + + if (ensureButton != nullptr) + { + delete ensureButton; + ensureButton = nullptr; + } + + delete scrollView; + scrollView = nullptr; + } + } + + UILabelExt *AivoiceMobileDataFailedStartView::AivoiceMobileDataFailedStartLabelInit(LabelConfig &labelconfig) + { + UILabelExt *label = new UILabelExt(); + if (label == nullptr) + { + return nullptr; + } + label->SetPosition(labelconfig.left, labelconfig.top, labelconfig.width, labelconfig.height); + label->SetStyle(STYLE_TEXT_FONT, labelconfig.fontSize); + label->SetStyle(STYLE_LINE_HEIGHT, labelconfig.lineHeigh); + label->SetTextId(labelconfig.textId); + label->SetLineBreakMode(labelconfig.lineBreakMode); + label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, labelconfig.fontSize); + return label; + } + + UIButton *AivoiceMobileDataFailedStartView::AivoiceMobileDataFailedStartButtonInit(ButtonConfig &buttonconfig) + { + UIButton *button = new UIButton(); + if (button == nullptr) + { + return nullptr; + } + button->SetPosition(buttonconfig.x, buttonconfig.y, buttonconfig.w, buttonconfig.h); + button->SetViewId(buttonconfig.ViewId); + button->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919); + button->SetStyle(STYLE_BACKGROUND_OPA, 0xff); + button->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff383838, UIButton::PRESSED); + + return button; + } + + UIImageView *AivoiceMobileDataFailedStartView::AivoiceMobileDataFailedStartImageInit(ImageConfig &imageconfig) + { + UIImageView *Image = new UIImageView(); + if (Image == nullptr) + { + return nullptr; + } + Image->SetPosition(imageconfig.x, imageconfig.y, imageconfig.w, imageconfig.h); + return Image; + } + + bool AivoiceMobileDataFailedStartView::CreateAivoiceMobileDataFailedStartScrollView(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceMobileDataFailedStartView::CreateAivoiceMobileDataFailedStartScrollView"); + scrollView = new UIScrollView(); + if (scrollView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceMobileDataFailedStartView::scrollView new fail!"); + return false; + } + scrollView->SetPosition(0, 0, 466, 466); + scrollView->SetTouchable(true); + scrollView->SetDraggable(true); + + return true; + } + + bool AivoiceMobileDataFailedStartView::CreateAivoiceMobileDataFailedStartLabel(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceMobileDataFailedStartView::CreateAivoiceMobileDataFailedStartLabel"); + LabelConfig labelconfig = { + .left = 83, + .top = 52, + .width = 300, + .height = 35, + .fontSize = 30, + .lineHeigh = 35, + .textId = STR_AI_INTELLIGENT_ASSISTANT, + .lineBreakMode = UILabel::LINE_BREAK_MARQUEE, + }; + title = AivoiceMobileDataFailedStartLabelInit(labelconfig); + if (title == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceMobileDataFailedStartView::title is nullptr!"); + return false; + } + /* -------------------------------------------------------------------------- */ + labelconfig.left = 53; + labelconfig.width = 360; + int textId[] = {STR_BOOT_FAILED, STR_ENABLE_MOBILE_DATA_FIRST}; + for (int i = 0; i < sizeof(textId) / sizeof(textId[0]); i++) + { + labelconfig.top = 222 + i * labelconfig.height; + labelconfig.textId = textId[i]; + label[i] = AivoiceMobileDataFailedStartLabelInit(labelconfig); + if (label[i] == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceMobileDataFailedStartView::label[%d] is nullptr!", i); + return false; + } + } + /* -------------------------------------------------------------------------- */ + labelconfig = { + .left = 133, + .top = 368, + .width = 200, + .height = 35, + .fontSize = 30, + .lineHeigh = 35, + .textId = STR_OK, + .lineBreakMode = UILabel::LINE_BREAK_MARQUEE, + }; + ensure = AivoiceMobileDataFailedStartLabelInit(labelconfig); + if (ensure == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceMobileDataFailedStartView::ensure is nullptr!"); + return false; + } + + return true; + } + + bool AivoiceMobileDataFailedStartView::CreateAivoiceMobileDataFailedStartButton(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceMobileDataFailedStartView::CreateAivoiceMobileDataFailedStartButton"); + ButtonConfig buttonconfig = { + .x = 93, + .y = 340, + .w = 280, + .h = 90, + .ViewId = MOBILEDATAFAILEDSTART_ENSURE_BUTTON_VIEW_ID, + }; + ensureButton = AivoiceMobileDataFailedStartButtonInit(buttonconfig); + if (ensureButton == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ensureButton new fail!"); + return false; + } + UIView::OnClickListener *clickListener = static_cast(AiVoicePresenter::GetInstance()); + if (clickListener == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceMobileDataFailedStartView::draglistener can not be nullptr!"); + return false; + } + ensureButton->SetOnClickListener(clickListener); + + return true; + } + + bool AivoiceMobileDataFailedStartView::CreateAivoiceMobileDataFailedStartImage(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceMobileDataFailedStartView::CreateAivoiceMobileDataFailedStartImage"); + ImageConfig imageconfig = { + .x = 193, + .y = 120, + .w = 80, + .h = 80, + }; + attentionImage = AivoiceMobileDataFailedStartImageInit(imageconfig); + if (attentionImage == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "attentionImage new fail!"); + return false; + } + attentionImage->SetStyle(STYLE_BORDER_RADIUS, 100); + attentionImage->SetSrc(PNG_ATTENTION_IMAGE); + + return true; + } + + UIScrollView *AivoiceMobileDataFailedStartView::CreateAivoiceMobileDataFailedStartView(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceMobileDataFailedStartView::CreateAivoiceMobileDataFailedStartView"); + if (scrollView == nullptr) + { + if (!CreateAivoiceMobileDataFailedStartScrollView() || !CreateAivoiceMobileDataFailedStartLabel() || + !CreateAivoiceMobileDataFailedStartButton() || !CreateAivoiceMobileDataFailedStartImage()) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceMobileDataFailedStartView::CreateAivoiceMobileDataFailedStartView fail!!"); + return nullptr; + } + scrollView->Add(title); + scrollView->Add(attentionImage); + scrollView->Add(label[0]); + scrollView->Add(label[1]); + scrollView->Add(ensureButton); + scrollView->Add(ensure); + } + return scrollView; + } + +} \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AivoiceReturnResultTextView.cpp b/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AivoiceReturnResultTextView.cpp new file mode 100644 index 000000000..1e6c1124b --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AivoiceReturnResultTextView.cpp @@ -0,0 +1,465 @@ +/* + * @Author: luozheng 1732036298@qq.com + * @Date: 2024-05-07 11:25:58 + * @LastEditors: luozheng 1732036298@qq.com + * @LastEditTime: 2024-06-25 17:45:39 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/AiVoice/src/AivoiceReturnResultTextView.cpp + */ +#include "aivoice/include/AiVoicePresenter.h" +#include "aivoice/include/AivoiceReturnResultTextView.h" +#include "wearable_log.h" +#include "language/font/ui_resource_string.h" +#include "aivoice/include/AiVoiceModel.h" +#include +#include +#include "string" + +namespace OHOS +{ + + /* -------------------------------------------------------------------------- */ + static constexpr const int16_t QUESTION_SCROLLVIEW_X = 112; + static constexpr const int16_t QUESTION_SCROLLVIEW_Y = 120; + static constexpr const int16_t QUESTION_SCROLLVIEW_W = 280; + static constexpr const int16_t QUESTION_SCROLLVIEW_H = 80; + static constexpr const int64_t QUESTION_BACKGROUND_COLOR = 0xff4fc34c; + + static constexpr const int16_t QUESTION_LABEL_W = 200; + static constexpr const int16_t QUESTION_LABEL_H = 30; + static constexpr const int16_t QUESTION_LABEL_FONTSIZE = 26; + static constexpr const int16_t QUESTION_LABEL_LINEHEIGHT = 30; + /* -------------------------------------------------------------------------- */ + + static constexpr const int16_t ANSWER_SCROLLVIEW_X = 53; + static constexpr const int16_t ANSWER_SCROLLVIEW_Y = QUESTION_SCROLLVIEW_Y + QUESTION_SCROLLVIEW_H + 30; + static constexpr const int16_t ANSWER_SCROLLVIEW_W = 360; + static constexpr const int16_t ANSWER_SCROLLVIEW_H = 250; + static constexpr const int64_t ANSWER_BACKGROUND_COLOR = 0xff191919; + + static constexpr const int16_t ANSWER_LABEL_W = 270; + static constexpr const int16_t ANSWER_LABEL_H = 194; + static constexpr const int16_t ANSWER_LABEL_FONTSIZE = 26; + static constexpr const int16_t ANSWER_LABEL_LINEHEIGHT = 30; + + /* -------------------------------------------------------------------------- */ + static constexpr const int16_t RECGREEN_IMAGE_X = 342; + static constexpr const int16_t RECGREEN_IMAGE_Y = QUESTION_SCROLLVIEW_Y; + static constexpr const int16_t RECGREEN_IMAGE_W = 70; + static constexpr const int16_t RECGREEN_IMAGE_H = 30; + static constexpr const char *RECGREEN_IMAGE_PATH = "/user/res/AIVoice/AI_RecGreen.bin"; + + static constexpr const int16_t RECBLACK_IMAGE_X = 32; + static constexpr const int16_t RECBLACK_IMAGE_Y = ANSWER_SCROLLVIEW_Y; + static constexpr const int16_t RECBLACK_IMAGE_W = 70; + static constexpr const int16_t RECBLACK_IMAGE_H = 30; + static constexpr const char *RECBLACK_IMAGE_PATH = "/user/res/AIVoice/AI_RecBlack.bin"; + /* -------------------------------------------------------------------------- */ + static constexpr const int16_t RETURN_BUTTON_X = 73; + static constexpr const int16_t RETURN_BUTTON_Y = ANSWER_SCROLLVIEW_Y + ANSWER_SCROLLVIEW_H + 20; + static constexpr const int16_t RETURN_BUTTON_W = 100; + static constexpr const int16_t RETURN_BUTTON_H = 100; + static constexpr const char *RETURN_BUTTON_PATH = "/user/res/AIVoice/AI_Union.bin"; + + static constexpr const int16_t CONTINUECHAT_BUTTON_X = 183; + static constexpr const int16_t CONTINUECHAT_BUTTON_Y = ANSWER_SCROLLVIEW_Y + ANSWER_SCROLLVIEW_H + 20; + static constexpr const int16_t CONTINUECHAT_BUTTON_W = 210; + static constexpr const int16_t CONTINUECHAT_BUTTON_H = 100; + /* -------------------------------------------------------------------------- */ + static constexpr const int16_t CONTINUECHAT_X = CONTINUECHAT_BUTTON_X + 45; + static constexpr const int16_t CONTINUECHAT_Y = CONTINUECHAT_BUTTON_Y + 33; + static constexpr const int16_t CONTINUECHAT_W = 120; + static constexpr const int16_t CONTINUECHAT_H = 35; + + static constexpr const int16_t ONE_HALF_NUM = 2; + + static AivoiceReturnResultTextView *g_pAivoiceReturnResultTextView{nullptr}; + + AivoiceReturnResultTextView::AivoiceReturnResultTextView() + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceReturnResultTextView::AivoiceReturnResultTextView"); + g_pAivoiceReturnResultTextView = this; + } + + AivoiceReturnResultTextView::~AivoiceReturnResultTextView() + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceReturnResultTextView::~AivoiceReturnResultTextView"); + ClearAll(); + g_pAivoiceReturnResultTextView = nullptr; + } + + AivoiceReturnResultTextView *AivoiceReturnResultTextView::GetInstance() + { + return g_pAivoiceReturnResultTextView; + } + + void AivoiceReturnResultTextView::ClearAll(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceReturnResultTextView::ClearAll"); + if (scrollView != nullptr) + { + scrollView->RemoveAll(); + + if (title != nullptr) + { + delete title; + title = nullptr; + } + + if (questionScrollView != nullptr) + { + questionScrollView->Remove(question); + if (question != nullptr) + { + delete question; + question = nullptr; + } + delete questionScrollView; + questionScrollView = nullptr; + } + + if (recGreenImage != nullptr) + { + delete recGreenImage; + recGreenImage = nullptr; + } + + if (answerScrollView != nullptr) + { + answerScrollView->Remove(answer); + if (answer != nullptr) + { + delete answer; + answer = nullptr; + } + delete answerScrollView; + answerScrollView = nullptr; + } + + if (recBlackImage != nullptr) + { + delete recBlackImage; + recBlackImage = nullptr; + } + + if (returnButton != nullptr) + { + delete returnButton; + returnButton = nullptr; + } + + if (continueChatButton != nullptr) + { + delete continueChatButton; + continueChatButton = nullptr; + } + + if (continueChat != nullptr) + { + delete continueChat; + continueChat = nullptr; + } + + delete scrollView; + scrollView = nullptr; + } + } + + UILabelExt *AivoiceReturnResultTextView::AivoiceReturnResultTextLabelInit(LabelConfig &labelconfig) + { + UILabelExt *label = new UILabelExt(); + if (label == nullptr) + { + return nullptr; + } + label->SetPosition(labelconfig.left, labelconfig.top, labelconfig.width, labelconfig.height); + label->SetStyle(STYLE_TEXT_FONT, labelconfig.fontSize); + label->SetStyle(STYLE_LINE_HEIGHT, labelconfig.lineHeight); + label->SetTextId(labelconfig.textId); + label->SetLineBreakMode(labelconfig.lineBreakMode); + label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, labelconfig.fontSize); + return label; + } + + UIButton *AivoiceReturnResultTextView::AivoiceReturnResultTextButtonInit(ButtonConfig &buttonconfig) + { + UIButton *button = new UIButton(); + if (button == nullptr) + { + return nullptr; + } + button->SetPosition(buttonconfig.x, buttonconfig.y, buttonconfig.w, buttonconfig.h); + button->SetViewId(buttonconfig.ViewId); + button->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919); + button->SetStyle(STYLE_BACKGROUND_OPA, 0xff); + button->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff383838, UIButton::PRESSED); + + return button; + } + + UIImageView *AivoiceReturnResultTextView::AivoiceReturnResultTextImageInit(ImageConfig &imageconfig) + { + UIImageView *Image = new UIImageView(); + if (Image == nullptr) + { + return nullptr; + } + Image->SetPosition(imageconfig.x, imageconfig.y, imageconfig.w, imageconfig.h); + Image->SetSrc(imageconfig.src); + return Image; + } + + bool AivoiceReturnResultTextView::CreateAivoiceReturnResultTextScrollView(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceReturnResultTextView::CreateAivoiceReturnResultTextScrollView"); + scrollView = new UIScrollView(); + if (scrollView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceReturnResultTextView::scrollView new fail!"); + return false; + } + scrollView->SetPosition(0, 0, 466, 466); + scrollView->SetTouchable(true); + scrollView->SetDraggable(true); + scrollView->SetReboundSize(40); + scrollView->SetScrollBlankSize(70); + scrollView->SetThrowDrag(true); + scrollView->SetMaxScrollDistance(1000); + scrollView->SetDirection(UIScrollView::VERTICAL); + + return true; + } + + bool AivoiceReturnResultTextView::CreateAivoiceReturnResultTextUserQuestionLabel(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceReturnResultTextView::CreateAivoiceReturnResultTextUserQuestionLabel"); + if (questionScrollView == nullptr) + { + questionScrollView = new UIScrollView(); + if (questionScrollView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceReturnResultTextView::questionScrollView is nullptr!"); + return false; + } + questionScrollView->SetPosition(QUESTION_SCROLLVIEW_X, QUESTION_SCROLLVIEW_Y, QUESTION_SCROLLVIEW_W, QUESTION_SCROLLVIEW_H); + questionScrollView->SetStyle(STYLE_BACKGROUND_COLOR, QUESTION_BACKGROUND_COLOR); + questionScrollView->SetStyle(STYLE_BACKGROUND_OPA, 0xff); + questionScrollView->SetStyle(STYLE_BORDER_RADIUS, 20); + } + /* -------------------------------------------------------------------------- */ + int16_t QUESTION_LABEL_X = (questionScrollView->GetWidth() - QUESTION_LABEL_W) / ONE_HALF_NUM; + int16_t QUESTION_LABEL_Y = (questionScrollView->GetHeight() - QUESTION_LABEL_H) / ONE_HALF_NUM; + if (question == nullptr) + { + question = new UILabelExt(); + if (question == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceReturnResultTextView::question is nullptr!"); + return false; + } + + question->SetPosition(QUESTION_LABEL_X, QUESTION_LABEL_Y, QUESTION_LABEL_W, QUESTION_LABEL_H); + question->SetStyle(STYLE_TEXT_FONT, QUESTION_LABEL_FONTSIZE); + question->SetStyle(STYLE_LINE_HEIGHT, QUESTION_LABEL_LINEHEIGHT); + std::string questionStr = AiVoiceModel::GetInstance().GetUserQuestionStr(); + question->SetText(questionStr.c_str()); + question->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0xcc)); + question->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE); + question->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + question->SetFont(DEFAULT_VECTOR_FONT_FILENAME, QUESTION_LABEL_FONTSIZE); + + questionScrollView->Add(question); + } + return true; + } + + bool AivoiceReturnResultTextView::CreateAivoiceReturnResultTextAIAnswerLabel(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceReturnResultTextView::CreateAivoiceReturnResultTextAIAnswerLabel"); + if (answerScrollView == nullptr) + { + answerScrollView = new UIScrollView(); + if (answerScrollView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceReturnResultTextView::answerScrollView is nullptr!"); + return false; + } + answerScrollView->SetPosition(ANSWER_SCROLLVIEW_X, ANSWER_SCROLLVIEW_Y, ANSWER_SCROLLVIEW_W, ANSWER_SCROLLVIEW_H); + answerScrollView->SetStyle(STYLE_BACKGROUND_COLOR, ANSWER_BACKGROUND_COLOR); + answerScrollView->SetStyle(STYLE_BACKGROUND_OPA, 0xff); + answerScrollView->SetStyle(STYLE_BORDER_RADIUS, 20); + /* -------------------------------------------------------------------------- */ + int16_t ANSWER_LABEL_X = (answerScrollView->GetWidth() - ANSWER_LABEL_W) / ONE_HALF_NUM; + int16_t ANSWER_LABEL_Y = (answerScrollView->GetHeight() - ANSWER_LABEL_H) / ONE_HALF_NUM; + if (answer == nullptr) + { + answer = new UILabelExt(); + if (answer == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceReturnResultTextView::answer is nullptr!"); + return false; + } + + answer->SetPosition(ANSWER_LABEL_X, ANSWER_LABEL_Y, ANSWER_LABEL_W, ANSWER_LABEL_H); + answer->SetStyle(STYLE_TEXT_FONT, ANSWER_LABEL_FONTSIZE); + answer->SetStyle(STYLE_LINE_HEIGHT, ANSWER_LABEL_LINEHEIGHT); + std::string answerStr = AiVoiceModel::GetInstance().GetAiAnswerStrStr(); + answer->SetText(answerStr.c_str()); + answer->SetTextColor(Color::GetColorFromRGBA(0x99, 0x99, 0x99, 0xff)); + answer->SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS); + answer->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER); + answer->SetFont(DEFAULT_VECTOR_FONT_FILENAME, QUESTION_LABEL_FONTSIZE); + + answerScrollView->Add(answer); + } + } + return true; + } + + bool AivoiceReturnResultTextView::CreateAivoiceReturnResultTextLabel(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceReturnResultTextView::CreateAivoiceReturnResultTextLabel"); + LabelConfig labelconfig = { + .left = 83, + .top = 52, + .width = 300, + .height = 35, + .fontSize = 30, + .lineHeight = 35, + .textId = STR_AI_INTELLIGENT_ASSISTANT, + .lineBreakMode = UILabel::LINE_BREAK_MARQUEE, + }; + title = AivoiceReturnResultTextLabelInit(labelconfig); + if (title == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceReturnResultTextView::title is nullptr!"); + return false; + } + /* -------------------------------------------------------------------------- */ + if (!CreateAivoiceReturnResultTextUserQuestionLabel() || !CreateAivoiceReturnResultTextAIAnswerLabel()) + { + return false; + } + /* -------------------------------------------------------------------------- */ + labelconfig = { + .left = CONTINUECHAT_X, + .top = CONTINUECHAT_Y, + .width = CONTINUECHAT_W, + .height = CONTINUECHAT_H, + .fontSize = 30, + .lineHeight = 35, + .textId = STR_CONTINUE_CHAT, + .lineBreakMode = UILabel::LINE_BREAK_MARQUEE, + }; + continueChat = AivoiceReturnResultTextLabelInit(labelconfig); + if (continueChat == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceReturnResultTextView::continueChat is nullptr!"); + return false; + } + + return true; + } + + bool AivoiceReturnResultTextView::CreateAivoiceReturnResultTextLImage(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceReturnResultTextView::CreateAivoiceReturnResultTextLImage"); + ImageConfig imageconfig = { + .x = RECGREEN_IMAGE_X, + .y = RECGREEN_IMAGE_Y, + .w = RECGREEN_IMAGE_W, + .h = RECGREEN_IMAGE_H, + .src = RECGREEN_IMAGE_PATH, + }; + recGreenImage = AivoiceReturnResultTextImageInit(imageconfig); + if (recGreenImage == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceReturnResultTextView::recGreenImage is nullptr!"); + return false; + } + /* -------------------------------------------------------------------------- */ + imageconfig = { + .x = RECBLACK_IMAGE_X, + .y = RECBLACK_IMAGE_Y, + .w = RECBLACK_IMAGE_W, + .h = RECBLACK_IMAGE_H, + .src = RECBLACK_IMAGE_PATH, + }; + recBlackImage = AivoiceReturnResultTextImageInit(imageconfig); + if (recBlackImage == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceReturnResultTextView::recBlackImage is nullptr!"); + return false; + } + + return true; + } + + bool AivoiceReturnResultTextView::CreateAivoiceReturnResultTextButton(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceReturnResultTextView::CreateAivoiceReturnResultTextButton"); + ButtonConfig buttonconfig = { + .x = RETURN_BUTTON_X, + .y = RETURN_BUTTON_Y, + .w = RETURN_BUTTON_W, + .h = RETURN_BUTTON_H, + .ViewId = AIVOICERETURNRESULTTEXT_RETURN_BUTTON_VIEW_ID, + }; + returnButton = AivoiceReturnResultTextButtonInit(buttonconfig); + if (returnButton == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "returnButton new fail!"); + return false; + } + returnButton->SetImagePosition(39, 39); + returnButton->SetImageSrc(RETURN_BUTTON_PATH, RETURN_BUTTON_PATH); + UIView::OnClickListener *clickListener = static_cast(AiVoicePresenter::GetInstance()); + if (clickListener == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceReturnResultTextView::draglistener can not be nullptr!"); + return false; + } + returnButton->SetOnClickListener(clickListener); + /* -------------------------------------------------------------------------- */ + buttonconfig = { + .x = CONTINUECHAT_BUTTON_X, + .y = CONTINUECHAT_BUTTON_Y, + .w = CONTINUECHAT_BUTTON_W, + .h = CONTINUECHAT_BUTTON_H, + .ViewId = AIVOICERETURNRESULTTEXT_CONTINUECHAT_BUTTON_VIEW_ID, + }; + continueChatButton = AivoiceReturnResultTextButtonInit(buttonconfig); + if (continueChatButton == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "continueChatButton new fail!"); + return false; + } + continueChatButton->SetOnClickListener(clickListener); + + return true; + } + + UIScrollView *AivoiceReturnResultTextView::CreateAivoiceReturnResultTextView(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceReturnResultTextView::CreateAivoiceReturnResultTextView"); + if (scrollView == nullptr) + { + if (!CreateAivoiceReturnResultTextScrollView() || !CreateAivoiceReturnResultTextLabel() || + !CreateAivoiceReturnResultTextLImage() || !CreateAivoiceReturnResultTextButton()) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceReturnResultTextView::CreateAivoiceReturnResultTextView fail!!"); + return nullptr; + } + /* ----------------------------------- Add ---------------------------------- */ + scrollView->Add(title); + scrollView->Add(questionScrollView); + scrollView->Add(recGreenImage); + scrollView->Add(answerScrollView); + scrollView->Add(recBlackImage); + scrollView->Add(returnButton); + scrollView->Add(continueChatButton); + scrollView->Add(continueChat); + } + return scrollView; + } +} \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AivoiceThinkingView.cpp b/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AivoiceThinkingView.cpp new file mode 100644 index 000000000..10298adf7 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AivoiceThinkingView.cpp @@ -0,0 +1,306 @@ +/* + * @Author: luozheng 1732036298@qq.com + * @Date: 2024-05-07 11:25:58 + * @LastEditors: luozheng 1732036298@qq.com + * @LastEditTime: 2024-06-24 16:39:53 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/AiVoice/src/AivoiceThinkingView.cpp + */ +#include "aivoice/include/AiVoicePresenter.h" +#include "aivoice/include/AivoiceThinkingView.h" +#include "wearable_log.h" +#include "language/font/ui_resource_string.h" +#include +// #include "common/image_cache_manager.h" +namespace OHOS +{ + + static AivoiceThinkingView *g_pAivoiceThinkingView{nullptr}; + + AivoiceThinkingView::AivoiceThinkingView() + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceThinkingView::AivoiceThinkingView"); + g_pAivoiceThinkingView = this; + } + + AivoiceThinkingView::~AivoiceThinkingView() + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceThinkingView::~AivoiceThinkingView"); + ClearAll(); + g_pAivoiceThinkingView = nullptr; + } + + AivoiceThinkingView *AivoiceThinkingView::GetInstance() + { + return g_pAivoiceThinkingView; + } + + void AivoiceThinkingView::ClearAll(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceThinkingView::ClearAll"); + if (scrollView != nullptr) + { + scrollView->RemoveAll(); + + if (title != nullptr) + { + delete title; + title = nullptr; + } + + if (AiVoiceThinkingImageAnimatorView != nullptr) + { + AiVoiceThinkingImageAnimatorView->Stop(); + delete AiVoiceThinkingImageAnimatorView; + AiVoiceThinkingImageAnimatorView = nullptr; + + FreeImagePathsArray(AiVoiceThinkingPathsArray, AIVOICE_THINKING_IMAGE_ANIMATOR_VIEW_NUM_FRAMES); + } + + if (cancelThink != nullptr) + { + delete cancelThink; + cancelThink = nullptr; + } + + if (cancelThinkButton != nullptr) + { + delete cancelThinkButton; + cancelThinkButton = nullptr; + } + + delete scrollView; + scrollView = nullptr; + } + } + + const char **AivoiceThinkingView::CreateImagePathsArray(const char *basePath, const int numImages, const char *fileExtension) + { + const char **imagePaths = new const char *[numImages]; + if (imagePaths == nullptr) + { + return nullptr; + } + + char buffer[256]; + for (int i = 0; i < numImages; i++) + { + snprintf(buffer, sizeof(buffer), "%s%d.%s", basePath, i + 1, fileExtension); + imagePaths[i] = strdup(buffer); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, " imagePaths[%d] = %s", i, imagePaths[i]); + } + return imagePaths; + } + + void AivoiceThinkingView::FreeImagePathsArray(const char **imagePaths, const int numImages) + { + for (int i = 0; i < numImages; i++) + { + // ImageCacheManager::GetInstance().UnloadSingleRes(imagePaths[i]); + delete imagePaths[i]; + imagePaths[i] = nullptr; + } + } + + UILabelExt *AivoiceThinkingView::AivoiceThinkingLabelInit(LabelConfig &labelconfig) + { + UILabelExt *label = new UILabelExt(); + if (label == nullptr) + { + return nullptr; + } + label->SetPosition(labelconfig.left, labelconfig.top, labelconfig.width, labelconfig.height); + label->SetStyle(STYLE_TEXT_FONT, labelconfig.fontSize); + label->SetStyle(STYLE_LINE_HEIGHT, labelconfig.lineHeigh); + label->SetTextId(labelconfig.textId); + label->SetLineBreakMode(labelconfig.lineBreakMode); + label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, labelconfig.fontSize); + return label; + } + + UIButton *AivoiceThinkingView::AivoiceThinkingButtonInit(ButtonConfig &buttonconfig) + { + UIButton *button = new UIButton(); + if (button == nullptr) + { + return nullptr; + } + button->SetPosition(buttonconfig.x, buttonconfig.y, buttonconfig.w, buttonconfig.h); + button->SetViewId(buttonconfig.ViewId); + button->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919); + button->SetStyle(STYLE_BACKGROUND_OPA, 0xff); + button->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff383838, UIButton::PRESSED); + + return button; + } + + UIImageAnimatorView *AivoiceThinkingView::AivoiceThinkingImageAnimatorInit(ImageAnimatorConfig &imageanimatorconfig) + { + UIImageAnimatorView *animatorView = new UIImageAnimatorView(); + if (animatorView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoiceThinkingImageAnimatorView::AiVoiceThinkingImageAnimatorView new fail"); + return nullptr; + } + + for (uint8_t i = 0; i < imageanimatorconfig.numFrames; i++) + { + // imageanimatorconfig.imageInfoArray[i].imageInfo = ImageCacheManager::GetInstance().LoadSingleRes(imageanimatorconfig.pathsArray[i]); + imageanimatorconfig.imageInfoArray[i].imagePath = (imageanimatorconfig.pathsArray[i]); + imageanimatorconfig.imageInfoArray[i].imageType = IMG_SRC_FILE_PATH; + imageanimatorconfig.imageInfoArray[i].pos.x = imageanimatorconfig.x; + imageanimatorconfig.imageInfoArray[i].pos.y = imageanimatorconfig.y; + imageanimatorconfig.imageInfoArray[i].width = imageanimatorconfig.width; + imageanimatorconfig.imageInfoArray[i].height = imageanimatorconfig.height; + } + + animatorView->SetPosition(imageanimatorconfig.x, imageanimatorconfig.y, imageanimatorconfig.width, imageanimatorconfig.height); + animatorView->SetImageAnimatorSrc(imageanimatorconfig.imageInfoArray, imageanimatorconfig.numFrames, imageanimatorconfig.delay); + animatorView->SetRepeat(true); + animatorView->SetAutoEnable(false); + animatorView->SetResizeMode(UIImageAnimatorView::FILL); + animatorView->Start(); + + return animatorView; + } + + bool AivoiceThinkingView::CreateAivoiceThinkingScrollView(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceThinkingView::CreateAivoiceThinkingScrollView"); + scrollView = new UIScrollView(); + if (scrollView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceThinkingView::scrollView new fail!"); + return false; + } + scrollView->SetPosition(0, 0, 466, 466); + UIView::OnDragListener *dragListener = static_cast(AiVoicePresenter::GetInstance()); + if (dragListener == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceThinkingView::dragListener new fail!"); + return false; + } + scrollView->SetOnDragListener(dragListener); + scrollView->SetTouchable(true); + scrollView->SetDraggable(true); + + return true; + } + + bool AivoiceThinkingView::CreateAivoiceThinkingLabel(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceThinkingView::CreateAivoiceThinkingLabel"); + LabelConfig labelconfig = { + .left = 83, + .top = 52, + .width = 300, + .height = 35, + .fontSize = 30, + .lineHeigh = 35, + .textId = STR_THINKING, + .lineBreakMode = UILabel::LINE_BREAK_MARQUEE, + }; + title = AivoiceThinkingLabelInit(labelconfig); + if (title == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceThinkingView::title is nullptr!"); + return false; + } + /* -------------------------------------------------------------------------- */ + labelconfig = { + .left = 133, + .top = 368, + .width = 200, + .height = 35, + .fontSize = 30, + .lineHeigh = 35, + .textId = STR_CANCEL, + .lineBreakMode = UILabel::LINE_BREAK_MARQUEE, + }; + cancelThink = AivoiceThinkingLabelInit(labelconfig); + if (cancelThink == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceThinkingView::cancelThink is nullptr!"); + return false; + } + cancelThink->SetTextColor(Color::GetColorFromRGBA(0xfd, 0x52, 0x03, 0xff)); + + return true; + } + + bool AivoiceThinkingView::CreateAivoiceThinkingButton(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceThinkingView::CreateAivoiceThinkingButton"); + ButtonConfig buttonconfig = { + .x = 93, + .y = 340, + .w = 280, + .h = 90, + .ViewId = CANCEL_THINKING_BUTTON_VIEW_ID, + }; + cancelThinkButton = AivoiceThinkingButtonInit(buttonconfig); + if (cancelThinkButton == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "cancelThinkButton new fail!"); + return false; + } + UIView::OnClickListener *clickListener = static_cast(AiVoicePresenter::GetInstance()); + if (clickListener == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceThinkingView::draglistener can not be nullptr!"); + return false; + } + cancelThinkButton->SetOnClickListener(clickListener); + + return true; + } + + bool AivoiceThinkingView::CreateAivoiceThinkingImageAnimator(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceThinkingView::CreateAivoiceThinkingImageAnimator"); + AiVoiceThinkingPathsArray = CreateImagePathsArray(AIVoiceThinkingImagePaths, AIVOICE_THINKING_IMAGE_ANIMATOR_VIEW_NUM_FRAMES); + if (AiVoiceThinkingPathsArray == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceThinkingView::AiVoiceThinkingPathsArray is nullptr!!"); + return false; + } + + ImageAnimatorConfig imageanimatorconfig = { + .x = AIVOICE_THINKING_IMAGE_ANIMATOR_VIEW_X, + .y = AIVOICE_THINKING_IMAGE_ANIMATOR_VIEW_Y, + .width = AIVOICE_THINKING_IMAGE_ANIMATOR_VIEW_W, + .height = AIVOICE_THINKING_IMAGE_ANIMATOR_VIEW_H, + .imageInfoArray = AiVoiceThinkingImageInfo, + .pathsArray = AiVoiceThinkingPathsArray, + .numFrames = AIVOICE_THINKING_IMAGE_ANIMATOR_VIEW_NUM_FRAMES, + .delay = AIVOICE_THINKING_IMAGE_ANIMATOR_DELAY, + }; + AiVoiceThinkingImageAnimatorView = AivoiceThinkingImageAnimatorInit(imageanimatorconfig); + if (AiVoiceThinkingImageAnimatorView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoiceThinkingImageAnimatorView::AiVoiceThinkingImageAnimatorView new fail"); + return false; + } + + return true; + } + + UIScrollView *AivoiceThinkingView::CreateAivoiceThinkingView(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceThinkingView::CreateAivoiceThinkingView"); + if (scrollView == nullptr) + { + if (!CreateAivoiceThinkingScrollView() || !CreateAivoiceThinkingLabel() || + !CreateAivoiceThinkingButton() || !CreateAivoiceThinkingImageAnimator()) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceThinkingView::CreateAivoiceThinkingView fail!!"); + return nullptr; + } + scrollView->Add(title); + scrollView->Add(AiVoiceThinkingImageAnimatorView); + scrollView->Add(cancelThinkButton); + scrollView->Add(cancelThink); + } + return scrollView; + } +} \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/alarm/src/AlarmPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/alarm/src/AlarmPresenter.cpp index 5a2bb94bb..186a213ce 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/alarm/src/AlarmPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/alarm/src/AlarmPresenter.cpp @@ -5,12 +5,13 @@ * Create: 2021-09-11 */ -#include "AlarmPresenter.h" -#include "MainAlarmView.h" +#include "alarm/include/AlarmPresenter.h" +#include "alarm/include/MainAlarmView.h" #include "ChangeSliceListener.h" #include "string" #include "iostream" #include "sstream" +#include namespace OHOS { @@ -431,16 +432,15 @@ bool AlarmPresenter::ClickFuncView(UIView &view) bool AlarmPresenter::OnKeyAct(UIView &view, const KeyEvent &event) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::OnKeyAct"); -#if 0 -uint16 keyID = event.GetKeyId(); -// 如果是power键就返回上一级 -if (keyID == static_cast(ZliteKeyCode::ZLITE_KEY_POWER)) -{ - uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId(); - NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST); -} -#endif + UNUSED(view); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::OnKeyAct"); + uint16_t keyID = event.GetKeyId(); + uint16_t keyState = event.GetState(); + // 如果是power键,且是亮屏状态,按键释放就返回上一级 + if (keyID == static_cast(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 0 && uapi_get_screen_state() == 0) + { + NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS); + } return true; } diff --git a/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/src/SoundAndVibrationPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/src/SoundAndVibrationPresenter.cpp index 9ead7f835..a6a0971cf 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/src/SoundAndVibrationPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/src/SoundAndVibrationPresenter.cpp @@ -2,7 +2,7 @@ * @Author: luozheng 1732036298@qq.com * @Date: 2024-02-19 10:39:11 * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-06-20 18:02:46 + * @LastEditTime: 2024-06-22 18:24:34 * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/src/SoundAndVibrationPresenter.cpp */ @@ -136,7 +136,7 @@ namespace OHOS { int VibrationMode = view_->GetVibrationModeView()->GetVibrationModePicker()->GetSelected(); WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VibrationMode = %d", VibrationMode); - VibationModeSet(VibrationMode); + // VibationModeSet(VibrationMode); SoundAndVibrationModel::GetInstance()->SetVibrationReminderToggleButtonStaus(VibrationMode); view_->ChangeView(VIBRATIONMODEVIEW, SOUNDANDVIBRATIONVIEW); } 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 ffab351f5..1e10287e5 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-19 19:06:47 + * @LastEditTime: 2024-06-25 17:58:27 * @FilePath: /FD230/code/sdk/application/wearable/nativeapp/nativeui/uiservice/include/ui_service.h */ /* @@ -69,6 +69,7 @@ typedef enum { UI_UPDATE_SILENT_MODE, //更新静音模式 UI_UPDATE_WEATHER_DATA, //天气数据更新 + UI_AI_RESPONSE_USERDATA, //跳转到返回结果视图 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 968407092..06b501c5d 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 @@ -18,6 +18,7 @@ #include #include "displaybrightness/include/DisplayBrightnessModel.h" #include "soundandvibration/include/SoundAndVibrationModel.h" +#include "aivoice/include/AiVoiceModel.h" #include "weather/include/WeatherModel.h" #include "uiservice/include/ui_service.h" #include "wearable_log.h" @@ -101,6 +102,7 @@ static void HandleUpdateSystemVolume(Request *request); static void HandleUpdateCallVolume(Request *request); static void HandleUpdateVibrationMode(Request *request); static void HandleUpdateSilentMode(Request *request); +static void HandleAiResponseUserData(Request *request); // 消息处理程序项数组(每个消息类型对应一个处理函数,函数名以 Handle 开头) MsgHandlerEntry msgHandlers[] = { @@ -125,6 +127,7 @@ MsgHandlerEntry msgHandlers[] = { {UI_UPDATE_CALL_VOLUME, HandleUpdateCallVolume}, {UI_UPDATE_VIBRATION_MODE, HandleUpdateVibrationMode}, {UI_UPDATE_SILENT_MODE, HandleUpdateSilentMode}, + {UI_AI_RESPONSE_USERDATA, HandleAiResponseUserData}, }; /* -------------------------------------------------------------------------- */ static void ScreenTurnOn(Request *request) @@ -497,6 +500,14 @@ void HandleUpdateSilentMode(Request *request) GraphicService::GetInstance()->PostGraphicEvent( std::bind(&OHOS::SoundAndVibrationModel::UpdateSilentModeSwitch, OHOS::SoundAndVibrationModel::GetInstance())); } + +//处理Ai回应的用户数据 +void HandleAiResponseUserData(Request *request) +{ + WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleAiResponseUserData"); + GraphicService::GetInstance()->PostGraphicEvent( + std::bind(&OHOS::AiVoiceModel::ChangeToReturnResultTextView, &OHOS::AiVoiceModel::GetInstance())); +} /* -------------------------------------------------------------------------- */ #ifdef __cplusplus } diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIRecBlack.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIRecBlack.bin deleted file mode 100644 index e73db6e10..000000000 --- a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIRecBlack.bin +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fd2acea8d7166abd98536687c9a59a37e66dcadf5dc0152bb6185e04ce9fa13d -size 1560 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIRecGreen.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIRecGreen.bin deleted file mode 100644 index c216e1bfd..000000000 --- a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIRecGreen.bin +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:96e2af6c30df028b9c9c0e032325f1e45d8b872aaffe8712215d3d2262ea9c0e -size 1560 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIUnion.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIUnion.bin deleted file mode 100644 index 4507f4219..000000000 --- a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIUnion.bin +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:72c650a3bf3f61a231a466b92b72c75322b158da9bb966dd72d37619fb79830f -size 408 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_1.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_1.bin new file mode 100644 index 000000000..c13e18abf --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_1.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60f5f967ae239a0bc79113e86c21174c3cfee1ca1ec68f0eb810340a2817e4e7 +size 1144 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_10.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_10.bin new file mode 100644 index 000000000..b3c0e17e4 --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_10.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9025ed7a813dc9d52a53e4603b103f2642dd4a698cb92d09fa15574c0d471cb4 +size 1144 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_11.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_11.bin new file mode 100644 index 000000000..9cff70192 --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_11.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dab8b1368f70a87eb4b1c74e35b76ec0135f39c476d9b9f9065a1d21cf721a33 +size 1144 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_12.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_12.bin new file mode 100644 index 000000000..1e21dad30 --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_12.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:55cc3ac3d4fc8d879b4b728d74fdd3c0a01000a7270c225f9150834db8b3d8b9 +size 1144 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_13.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_13.bin new file mode 100644 index 000000000..288f91bdf --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_13.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d893daaceb55ab00827506ac94e85120baa96f9cc0234dee50309217b9317e81 +size 1144 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_14.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_14.bin new file mode 100644 index 000000000..54896b90d --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_14.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:63c2392c12f976943dfaeab521520c803e7d4ca497e6885d074b39d5fcb4f15e +size 1144 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_15.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_15.bin new file mode 100644 index 000000000..f44a57b9b --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_15.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:efd97a61466e116c8ef43a7dcef507ff331a08d5c4445aa8f1bf9ec8f87ef7ae +size 1144 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_16.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_16.bin new file mode 100644 index 000000000..9d2775a71 --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_16.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb9f31a34145a42bbdec1e349b5bcefa9d7f4411f09f5d19e7d6ac13cc8525a6 +size 1144 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_17.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_17.bin new file mode 100644 index 000000000..cbd9a5296 --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_17.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d5e5934627dc73f80f3dbee84edeaab7963ec9e4d9bada606b24a03840542ad8 +size 1144 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_18.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_18.bin new file mode 100644 index 000000000..f432ceeff --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_18.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cb8be16fae0dff99ec5ca21761d1dc6992fa19af92469664dab93cae6e4aee34 +size 1144 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_19.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_19.bin new file mode 100644 index 000000000..08395ad11 --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_19.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:02b75c43a76f184ca9e0ecefcf50e24520d301185d2880e26c681a51ba31eead +size 1144 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_2.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_2.bin new file mode 100644 index 000000000..8a7f73f74 --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_2.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54a003553b6edf8ece7202e3fa551a03a37bcd0dd88e84b2152a3ad3b6e549c6 +size 1144 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_20.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_20.bin new file mode 100644 index 000000000..deba71321 --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_20.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:926e23232177b8b4a99a3bebaf850f7b1ac9ff2d444a60879e100ff598f303ca +size 1144 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_3.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_3.bin new file mode 100644 index 000000000..dc2c6bb9e --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_3.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f41f7f219f95d69bede446830a544aaecff2b28d9c4eaf39a0ca5fa5831ef0bf +size 1144 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_4.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_4.bin new file mode 100644 index 000000000..87a6a9fb5 --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_4.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8af5a5f7ba0c1d6a5aaea08c0f082a574bcb96cc54312a6f96e4cfc762691091 +size 1144 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_5.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_5.bin new file mode 100644 index 000000000..9be0839b2 --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_5.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:34b6f38611695eb90ec6d2135a7000b27c94961b1c0042ca1cfc2891c7410f63 +size 1144 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_6.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_6.bin new file mode 100644 index 000000000..ba9af536d --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_6.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:544413cf24c02a5f6ac1aee8b153154b3e7988d56b54c831189d7edd1cc41a2a +size 1144 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_7.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_7.bin new file mode 100644 index 000000000..1f314b3e4 --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_7.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c9c9c4f2ec1e1b074ebf2eb291233f97c6be30df7569e8478a71a14cd5b59c32 +size 1144 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_8.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_8.bin new file mode 100644 index 000000000..1f4a16be9 --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_8.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54d7039fc3f0e92eb97de9098a425e6f043dc48ba1e6f462bd6b979eb23b2038 +size 1144 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_9.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_9.bin new file mode 100644 index 000000000..03e7aef09 --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceListening/Ai_Listening_9.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e5bbe8140adda885479b6778c37e50ebe8c7be8366010e00953d440e2e2e8d1 +size 1144 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_1.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_1.bin new file mode 100644 index 000000000..2bf8d75c8 --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_1.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:14d6cf8fbeecf0a35111b830053fafd80a9fe66071728401edb479b551f2ab1d +size 3016 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_10.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_10.bin new file mode 100644 index 000000000..8533b7fa7 --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_10.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c16d58ec48b67eb99240c7d2a1fd0b09770eaae011c05671d1b1b0916f6a192c +size 3016 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_11.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_11.bin new file mode 100644 index 000000000..659e4e7ae --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_11.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0323f667dda9690b8e48cc8da86359141314ba57f90e22cc427806efd48a9c99 +size 3016 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_12.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_12.bin new file mode 100644 index 000000000..cef16fcfa --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_12.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ba59661c2d6a939ac785a826c4e9747efb06bea84a31bc4916c432ae9d83562 +size 3016 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_13.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_13.bin new file mode 100644 index 000000000..4fa503b95 --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_13.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6cb490686998507f00a6f980f9cdf33a80212eca547346c9924ef5d00ad3de4c +size 3016 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_14.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_14.bin new file mode 100644 index 000000000..f3b17da8f --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_14.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:754deb6d264a84f13aa655dd22b7f0030131a8738a3bed79affb0cd8911719ab +size 3016 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_15.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_15.bin new file mode 100644 index 000000000..64e44bb54 --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_15.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b21c6bd275f47643a56426869837da73a62b34e845c32f9c92d2291a5e100a1 +size 3016 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_16.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_16.bin new file mode 100644 index 000000000..f3e4a253b --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_16.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:90767c9549c7ee8edfe1f7b17945a95bf077a93494d25c2edf660c8cc78a3ed5 +size 3016 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_17.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_17.bin new file mode 100644 index 000000000..8b5a60f1b --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_17.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b11221e0574d0fe43ef8593a35e77c637a32c8735b3e8c50e7cea135ca194bfa +size 3016 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_18.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_18.bin new file mode 100644 index 000000000..6a514ee75 --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_18.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32b655a351836a864879173503bdda4bd32452c0a458c0d836eac14e4526fecb +size 3016 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_19.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_19.bin new file mode 100644 index 000000000..c3ca09d3c --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_19.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48d07db5bc8deb6f414cf2c9b76f9a8bd26f6d234a11a9e2761e7b89bec5977a +size 3016 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_2.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_2.bin new file mode 100644 index 000000000..e32fea269 --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_2.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:34e6509cd43d584a3f2ef9f497172cceb0eda651ae2cfa1cc79bfe1296728454 +size 3016 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_20.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_20.bin new file mode 100644 index 000000000..4f24cf178 --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_20.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a4b04745f294852ad6cf4703337d0954e907a50d40791c92d625b4c7e61e63c +size 3016 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_21.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_21.bin new file mode 100644 index 000000000..a576d747a --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_21.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe38cdc0d9a082493d9e19356445e70366b7bc4a45ff0a9225a69c79b8df6b38 +size 3016 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_22.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_22.bin new file mode 100644 index 000000000..ca7964018 --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_22.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f841f40e39a2904faa47546a52f341795af77045c2684aaffa9d27c3056cdfeb +size 3016 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_23.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_23.bin new file mode 100644 index 000000000..264906b84 --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_23.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ac652e98736a69e8f92a540ee662d4ee83f5947f7074fc0df73cf0035acd680f +size 3016 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_24.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_24.bin new file mode 100644 index 000000000..f10b14691 --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_24.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b7e555f1f737288f8237f2e7c5ab97a6db31981b8318d80d0571652ca37aa4d +size 3016 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_25.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_25.bin new file mode 100644 index 000000000..6f36c2694 --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_25.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f3a739d70dd7013e1147cb878cb831e449f6f19dff84fd51e4c8c9fba4e229ed +size 3016 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_26.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_26.bin new file mode 100644 index 000000000..3fe3ae31c --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_26.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6cf1933121ac6f854840240e46e260f773c8139bc61007b835e15ceedbb734cc +size 3016 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_27.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_27.bin new file mode 100644 index 000000000..9e3063525 --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_27.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f474fa8a88687f9876d6d01d2c052c3c2c436b737461789247063ef209ae41b +size 3016 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_28.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_28.bin new file mode 100644 index 000000000..6c58809c0 --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_28.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54131df27e631a54c5063a9d86f8bdfce3d902bf955c1a5fac1a283f18a4330c +size 3016 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_29.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_29.bin new file mode 100644 index 000000000..b084969ee --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_29.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01be5f743eabacdf5b175154bd7d6d9c42f9bf2cb7da8cccf9f98c318371fc77 +size 3016 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_3.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_3.bin new file mode 100644 index 000000000..207414e5e --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_3.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4001d19087061e82e3ca0f45ba29ec14d576ee531a30a9e2f8aacb94dba67bec +size 3016 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_4.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_4.bin new file mode 100644 index 000000000..c2254e497 --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_4.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc656d102a75ffd3d4698cf516ec5b2a1e827d8c9270b1a2275c86acbb0ed917 +size 3016 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_5.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_5.bin new file mode 100644 index 000000000..cd063e9ae --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_5.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:712650a3e3ce3f5cfe325282c6813e3aef81a90fd69605883746de02f63e4f04 +size 3016 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_6.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_6.bin new file mode 100644 index 000000000..3debc238b --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_6.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ebcbb6581eaff40f7bcd72c14c204631a8c3f3b9fe9cbbe31d0ba53bc8f8cf96 +size 3016 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_7.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_7.bin new file mode 100644 index 000000000..5021c2eb5 --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_7.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dbf660b9e8a0ea265285d16a9f69d42b8adf3a4477c047e44439955d843575a1 +size 3016 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_8.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_8.bin new file mode 100644 index 000000000..6af504ac0 --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_8.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b145b87dd060cfdf7c470a1fa2b23f4486aa2ac294d9d6da3f60d3f4344d4d53 +size 3016 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_9.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_9.bin new file mode 100644 index 000000000..1588fa02f --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/AIVoice/AIVoiceThinking/Ai_Thinking_9.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a73320662cc00b7ea0065e43e80e05c6104a428baf0455791a6ad4316cbc5da8 +size 3016 diff --git a/code/sdk/drivers/peripheral/config/src/ConfigModel.cpp b/code/sdk/drivers/peripheral/config/src/ConfigModel.cpp index bac562194..6dfe4ba99 100644 --- a/code/sdk/drivers/peripheral/config/src/ConfigModel.cpp +++ b/code/sdk/drivers/peripheral/config/src/ConfigModel.cpp @@ -1047,6 +1047,7 @@ namespace OHOS { uapi_dev_runtime_set_vibmod(state); set_condigData_Int(CONFIGMODEL_ITEM_VIBRATOR_SWITCH,state); + uapi_vibrationModeSet(state); } /*获取震动模式强度*/ -- 2.17.1