From 26655f3e3cced0ac1027c684cfbbb364211eba05 Mon Sep 17 00:00:00 2001 From: luozheng <1732036298@qq.com> Date: Sat, 16 Aug 2025 11:57:33 +0800 Subject: [PATCH] =?utf8?q?=E8=81=86=E5=90=AC=E4=B8=AD=E5=92=8C=E6=80=9D?= =?utf8?q?=E8=80=83=E4=B8=AD=E5=8A=A8=E7=94=BB=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../aivoice/include/AivoiceListeningView.h | 1 - .../aivoice/include/AivoiceThinkingView.h | 1 - .../aivoice/src/AivoiceListeningView.cpp | 84 ++++++++++++----- .../aivoice/src/AivoiceThinkingView.cpp | 89 ++++++++++++++----- 4 files changed, 131 insertions(+), 44 deletions(-) diff --git a/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AivoiceListeningView.h b/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AivoiceListeningView.h index 8c35c3b11..c620e77a4 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AivoiceListeningView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AivoiceListeningView.h @@ -88,7 +88,6 @@ namespace OHOS UIButton *finishSpeakButton{nullptr}; UIImageAnimatorView *AiVoiceListeningImageAnimatorView{nullptr}; ImageAnimatorInfo AiVoiceListeningImageInfo[AIVOICE_LISTENING_IMAGE_ANIMATOR_VIEW_NUM_FRAMES]; - const ImageInfo **AiVoiceListeningPathsArray{nullptr}; UILabelExt *showtimeout{nullptr}; }; } diff --git a/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AivoiceThinkingView.h b/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AivoiceThinkingView.h index 9f4bbd920..9bfdd7815 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AivoiceThinkingView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AivoiceThinkingView.h @@ -81,7 +81,6 @@ namespace OHOS UIButton *cancelThinkButton{nullptr}; UIImageAnimatorView *AiVoiceThinkingImageAnimatorView{nullptr}; ImageAnimatorInfo AiVoiceThinkingImageInfo[AIVOICE_THINKING_IMAGE_ANIMATOR_VIEW_NUM_FRAMES]; - const ImageInfo **AiVoiceThinkingPathsArray{nullptr}; }; } #endif diff --git a/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AivoiceListeningView.cpp b/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AivoiceListeningView.cpp index 0e9186d2c..41e1b2b0a 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AivoiceListeningView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AivoiceListeningView.cpp @@ -14,6 +14,48 @@ // #include "common/image_cache_manager.h" namespace OHOS { + const char *listening_path_array[] = { + "/user/res/AIVoice/AIVoiceListening/1.bin", + "/user/res/AIVoice/AIVoiceListening/2.bin", + "/user/res/AIVoice/AIVoiceListening/3.bin", + "/user/res/AIVoice/AIVoiceListening/4.bin", + "/user/res/AIVoice/AIVoiceListening/5.bin", + "/user/res/AIVoice/AIVoiceListening/6.bin", + "/user/res/AIVoice/AIVoiceListening/7.bin", + "/user/res/AIVoice/AIVoiceListening/8.bin", + "/user/res/AIVoice/AIVoiceListening/9.bin", + "/user/res/AIVoice/AIVoiceListening/10.bin", + "/user/res/AIVoice/AIVoiceListening/11.bin", + "/user/res/AIVoice/AIVoiceListening/12.bin", + "/user/res/AIVoice/AIVoiceListening/13.bin", + "/user/res/AIVoice/AIVoiceListening/14.bin", + "/user/res/AIVoice/AIVoiceListening/15.bin", + "/user/res/AIVoice/AIVoiceListening/16.bin", + "/user/res/AIVoice/AIVoiceListening/17.bin", + "/user/res/AIVoice/AIVoiceListening/18.bin", + "/user/res/AIVoice/AIVoiceListening/19.bin", + "/user/res/AIVoice/AIVoiceListening/20.bin", + "/user/res/AIVoice/AIVoiceListening/21.bin", + "/user/res/AIVoice/AIVoiceListening/22.bin", + "/user/res/AIVoice/AIVoiceListening/23.bin", + "/user/res/AIVoice/AIVoiceListening/24.bin", + "/user/res/AIVoice/AIVoiceListening/25.bin", + "/user/res/AIVoice/AIVoiceListening/26.bin", + "/user/res/AIVoice/AIVoiceListening/27.bin", + "/user/res/AIVoice/AIVoiceListening/28.bin", + "/user/res/AIVoice/AIVoiceListening/29.bin", + "/user/res/AIVoice/AIVoiceListening/30.bin", + "/user/res/AIVoice/AIVoiceListening/31.bin", + "/user/res/AIVoice/AIVoiceListening/32.bin", + "/user/res/AIVoice/AIVoiceListening/33.bin", + "/user/res/AIVoice/AIVoiceListening/34.bin", + "/user/res/AIVoice/AIVoiceListening/35.bin", + "/user/res/AIVoice/AIVoiceListening/36.bin", + "/user/res/AIVoice/AIVoiceListening/37.bin", + "/user/res/AIVoice/AIVoiceListening/38.bin", + "/user/res/AIVoice/AIVoiceListening/39.bin", + "/user/res/AIVoice/AIVoiceListening/40.bin", + }; static AivoiceListeningView *g_pAivoiceListeningView{nullptr}; @@ -53,8 +95,10 @@ namespace OHOS AiVoiceListeningImageAnimatorView->Stop(); delete AiVoiceListeningImageAnimatorView; AiVoiceListeningImageAnimatorView = nullptr; - - FreeImageInfoArray(AiVoiceListeningPathsArray, AIVoiceListeningImagePaths, AIVOICE_LISTENING_IMAGE_ANIMATOR_VIEW_NUM_FRAMES); + for (int i = 0; i < AIVOICE_LISTENING_IMAGE_ANIMATOR_VIEW_NUM_FRAMES; i++) + { + ImageCacheManager::GetInstance().UnloadSingleRes(listening_path_array[i]); + } } if (showtimeout != nullptr) @@ -252,32 +296,30 @@ namespace OHOS bool AivoiceListeningView::CreateAivoiceListeningImageAnimator(void) { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceListeningView::CreateAivoiceListeningImageAnimator"); - AiVoiceListeningPathsArray = CreateImageInfoArray(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, - }; if (AiVoiceListeningImageAnimatorView == nullptr) { - AiVoiceListeningImageAnimatorView = AivoiceListeningImageAnimatorInit(imageanimatorconfig); + AiVoiceListeningImageAnimatorView = new UIImageAnimatorView(); if (AiVoiceListeningImageAnimatorView == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoiceListeningImageAnimatorView::AiVoiceListeningImageAnimatorView new fail"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayBindAni::AlipayInitImageAni new AI4GImageAni fail"); return false; } } + for (uint8_t i = 0; i < AIVOICE_LISTENING_IMAGE_ANIMATOR_VIEW_NUM_FRAMES; i++) + { + AiVoiceListeningImageInfo[i].imageInfo = ImageCacheManager::GetInstance().LoadSingleRes(listening_path_array[i]); + AiVoiceListeningImageInfo[i].imageType = IMG_SRC_IMAGE_INFO; + AiVoiceListeningImageInfo[i].pos.x = AIVOICE_LISTENING_IMAGE_ANIMATOR_VIEW_X; + AiVoiceListeningImageInfo[i].pos.y = AIVOICE_LISTENING_IMAGE_ANIMATOR_VIEW_Y; + AiVoiceListeningImageInfo[i].width = AIVOICE_LISTENING_IMAGE_ANIMATOR_VIEW_W; + AiVoiceListeningImageInfo[i].height = AIVOICE_LISTENING_IMAGE_ANIMATOR_VIEW_H; + } + AiVoiceListeningImageAnimatorView->SetPosition(AIVOICE_LISTENING_IMAGE_ANIMATOR_VIEW_X, AIVOICE_LISTENING_IMAGE_ANIMATOR_VIEW_Y, + AIVOICE_LISTENING_IMAGE_ANIMATOR_VIEW_W, AIVOICE_LISTENING_IMAGE_ANIMATOR_VIEW_H); + AiVoiceListeningImageAnimatorView->SetImageAnimatorSrc(AiVoiceListeningImageInfo, AIVOICE_LISTENING_IMAGE_ANIMATOR_VIEW_NUM_FRAMES, AIVOICE_LISTENING_IMAGE_ANIMATOR_DELAY); + AiVoiceListeningImageAnimatorView->SetRepeat(true); + AiVoiceListeningImageAnimatorView->SetAutoEnable(false); + AiVoiceListeningImageAnimatorView->SetResizeMode(UIImageView::FILL); return true; } diff --git a/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AivoiceThinkingView.cpp b/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AivoiceThinkingView.cpp index a9c6021c3..c16e893df 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AivoiceThinkingView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AivoiceThinkingView.cpp @@ -15,6 +15,49 @@ namespace OHOS { + const char *thinking_path_array[] = { + "/user/res/AIVoice/AIVoiceThinking/1.bin", + "/user/res/AIVoice/AIVoiceThinking/2.bin", + "/user/res/AIVoice/AIVoiceThinking/3.bin", + "/user/res/AIVoice/AIVoiceThinking/4.bin", + "/user/res/AIVoice/AIVoiceThinking/5.bin", + "/user/res/AIVoice/AIVoiceThinking/6.bin", + "/user/res/AIVoice/AIVoiceThinking/7.bin", + "/user/res/AIVoice/AIVoiceThinking/8.bin", + "/user/res/AIVoice/AIVoiceThinking/9.bin", + "/user/res/AIVoice/AIVoiceThinking/10.bin", + "/user/res/AIVoice/AIVoiceThinking/11.bin", + "/user/res/AIVoice/AIVoiceThinking/12.bin", + "/user/res/AIVoice/AIVoiceThinking/13.bin", + "/user/res/AIVoice/AIVoiceThinking/14.bin", + "/user/res/AIVoice/AIVoiceThinking/15.bin", + "/user/res/AIVoice/AIVoiceThinking/16.bin", + "/user/res/AIVoice/AIVoiceThinking/17.bin", + "/user/res/AIVoice/AIVoiceThinking/18.bin", + "/user/res/AIVoice/AIVoiceThinking/19.bin", + "/user/res/AIVoice/AIVoiceThinking/20.bin", + "/user/res/AIVoice/AIVoiceThinking/21.bin", + "/user/res/AIVoice/AIVoiceThinking/22.bin", + "/user/res/AIVoice/AIVoiceThinking/23.bin", + "/user/res/AIVoice/AIVoiceThinking/24.bin", + "/user/res/AIVoice/AIVoiceThinking/25.bin", + "/user/res/AIVoice/AIVoiceThinking/26.bin", + "/user/res/AIVoice/AIVoiceThinking/27.bin", + "/user/res/AIVoice/AIVoiceThinking/28.bin", + "/user/res/AIVoice/AIVoiceThinking/29.bin", + "/user/res/AIVoice/AIVoiceThinking/30.bin", + "/user/res/AIVoice/AIVoiceThinking/31.bin", + "/user/res/AIVoice/AIVoiceThinking/32.bin", + "/user/res/AIVoice/AIVoiceThinking/33.bin", + "/user/res/AIVoice/AIVoiceThinking/34.bin", + "/user/res/AIVoice/AIVoiceThinking/35.bin", + "/user/res/AIVoice/AIVoiceThinking/36.bin", + "/user/res/AIVoice/AIVoiceThinking/37.bin", + "/user/res/AIVoice/AIVoiceThinking/38.bin", + "/user/res/AIVoice/AIVoiceThinking/39.bin", + "/user/res/AIVoice/AIVoiceThinking/40.bin", + }; + static AivoiceThinkingView *g_pAivoiceThinkingView{nullptr}; AivoiceThinkingView::AivoiceThinkingView() @@ -54,8 +97,11 @@ namespace OHOS delete AiVoiceThinkingImageAnimatorView; AiVoiceThinkingImageAnimatorView = nullptr; - // FreeImagePathsArray(AiVoiceThinkingPathsArray, AIVOICE_THINKING_IMAGE_ANIMATOR_VIEW_NUM_FRAMES); - FreeImageInfoArray(AiVoiceThinkingPathsArray, AIVoiceThinkingImagePaths, AIVOICE_THINKING_IMAGE_ANIMATOR_VIEW_NUM_FRAMES); + for (int i = 0; i < AIVOICE_THINKING_IMAGE_ANIMATOR_VIEW_NUM_FRAMES; i++) + { + ImageCacheManager::GetInstance().UnloadSingleRes(thinking_path_array[i]); + } + } if (cancelThink != nullptr) @@ -235,29 +281,30 @@ namespace OHOS bool AivoiceThinkingView::CreateAivoiceThinkingImageAnimator(void) { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AivoiceThinkingView::CreateAivoiceThinkingImageAnimator"); - AiVoiceThinkingPathsArray = CreateImageInfoArray(AIVoiceThinkingImagePaths, AIVOICE_THINKING_IMAGE_ANIMATOR_VIEW_NUM_FRAMES); - if (AiVoiceThinkingPathsArray == nullptr) + if (AiVoiceThinkingImageAnimatorView == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceThinkingView::AiVoiceThinkingPathsArray is nullptr!!"); - return false; + AiVoiceThinkingImageAnimatorView = new UIImageAnimatorView(); + if (AiVoiceThinkingImageAnimatorView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceThinkingView::AivoiceThinkingImageAnimatorView new fail"); + 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) + for (uint8_t i = 0; i < AIVOICE_THINKING_IMAGE_ANIMATOR_VIEW_NUM_FRAMES; i++) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoiceThinkingImageAnimatorView::AiVoiceThinkingImageAnimatorView new fail"); - return false; + AiVoiceThinkingImageInfo[i].imageInfo = ImageCacheManager::GetInstance().LoadSingleRes(thinking_path_array[i]); + AiVoiceThinkingImageInfo[i].imageType = IMG_SRC_IMAGE_INFO; + AiVoiceThinkingImageInfo[i].pos.x = AIVOICE_THINKING_IMAGE_ANIMATOR_VIEW_X; + AiVoiceThinkingImageInfo[i].pos.y = AIVOICE_THINKING_IMAGE_ANIMATOR_VIEW_Y; + AiVoiceThinkingImageInfo[i].width = AIVOICE_THINKING_IMAGE_ANIMATOR_VIEW_W; + AiVoiceThinkingImageInfo[i].height = AIVOICE_THINKING_IMAGE_ANIMATOR_VIEW_H; } + AiVoiceThinkingImageAnimatorView->SetPosition(AIVOICE_THINKING_IMAGE_ANIMATOR_VIEW_X, AIVOICE_THINKING_IMAGE_ANIMATOR_VIEW_Y, + AIVOICE_THINKING_IMAGE_ANIMATOR_VIEW_W, AIVOICE_THINKING_IMAGE_ANIMATOR_VIEW_H); + AiVoiceThinkingImageAnimatorView->SetImageAnimatorSrc(AiVoiceThinkingImageInfo, AIVOICE_THINKING_IMAGE_ANIMATOR_VIEW_NUM_FRAMES, AIVOICE_THINKING_IMAGE_ANIMATOR_DELAY); + AiVoiceThinkingImageAnimatorView->SetRepeat(true); + AiVoiceThinkingImageAnimatorView->SetAutoEnable(false); + AiVoiceThinkingImageAnimatorView->SetResizeMode(UIImageView::FILL); return true; } -- 2.17.1