From 766e3bdf84662162549e8414d77ff660831f879f Mon Sep 17 00:00:00 2001 From: Caisking <3449750381@qq.com> Date: Sun, 3 Nov 2024 11:27:57 +0800 Subject: [PATCH] =?utf8?q?=E8=A1=A8=E7=9B=98=EF=BC=9A=E5=A2=9E=E5=8A=A0?= =?utf8?q?=E8=A7=86=E9=A2=91=E8=A1=A8=E7=9B=98=E5=9C=A8=E4=BC=A0=E8=BE=93?= =?utf8?q?=E7=8A=B6=E6=80=81=E4=B8=8B=E7=9A=84=E6=9A=82=E5=81=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../nativeui/main/include/MainModel.h | 3 + .../main/include/dial/DialViewGroup.h | 6 +- .../fd230app/nativeui/main/src/MainModel.cpp | 7 ++ .../nativeui/main/src/dial/DialViewGroup.cpp | 75 ++++++++++++++----- 4 files changed, 72 insertions(+), 19 deletions(-) diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/include/MainModel.h b/code/sdk/application/wearable/fd230app/nativeui/main/include/MainModel.h index a5781cdb4..2686cae94 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/main/include/MainModel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/main/include/MainModel.h @@ -83,6 +83,8 @@ namespace OHOS void printDialStates(); void UpdateDialState(); void InitDialState(); + bool getVideostate(); + void setVideostate(bool state); private: void InitDialSettingDefault(int Id); @@ -96,6 +98,7 @@ namespace OHOS DialSetting dialSetting; bool isFromSetCardView{false}; uint8_t fromCardId{MAX_CARD}; + bool video_state{false}; }; } diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialViewGroup.h b/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialViewGroup.h index 69a46cd48..49a94cc40 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialViewGroup.h +++ b/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialViewGroup.h @@ -112,9 +112,13 @@ public: * @brief This function is invoked when the function SetHorCurrentPage() is called. */ void OnActive(void) override; - + void OnInactive(void) override; + /*外部接口对表盘进行调用*/ + void StopDial(); + void StartDial(); + MediaVideoPlay* GetVideoPlay(); private: diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/MainModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/main/src/MainModel.cpp index 863c5f0be..c42386951 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/main/src/MainModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/main/src/MainModel.cpp @@ -611,6 +611,13 @@ namespace OHOS if (MainViewSample::GetInstance() != nullptr) MainViewSample::GetInstance()->UpdateStateShow(); } + //主界面获取视频频率 + bool MainModel::getVideostate() { + return video_state; + } + void MainModel::setVideostate(bool state) { + video_state = state; + } } #if 0 diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialViewGroup.cpp b/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialViewGroup.cpp index 5ca56335c..f796bcbae 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialViewGroup.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialViewGroup.cpp @@ -5,6 +5,8 @@ #include "msg_center.h" #include "securec.h" #include "DialBinParser.h" +#include "custom_runtime.h" +#include "MainModel.h" #include "ModelDialDataFactory.h" #include "common/low_power_manager.h" #include "main/include/PullUpDownView.h" @@ -254,24 +256,6 @@ namespace OHOS return period_; } - void DialViewGroup::UpdateViewsByPeriodicUpdateData() - { - ListNode *node = periodicUpdateTypes_.Head(); - while (node != periodicUpdateTypes_.End()) - { - DialDataType type = node->data_; - auto iter = dataTypeMap_.find(static_cast(type)); - if (iter != dataTypeMap_.end()) - { - ProcessData(type, iter->second); - } - node = node->next_; - } - if (LowPowerManager::GetInstance()->IsLiteSurfaceInRootView()) - { - Invalidate(); - } - } void DialViewGroup::OnDialFloatDataUpdate(DialDataType type, float data) { @@ -523,6 +507,38 @@ namespace OHOS kaleidoscope_->StopRotateAnimator(); kaleidoscope_->ClearFocus(); } + } +void DialViewGroup::StopDial() { + if (MainModel::GetInstance().getVideostate() != false) { + return; + } + MainModel::GetInstance().setVideostate(true); + if (video_ != nullptr) { + if (!video_->IsStopped()) { + video_->StopPlay(); + } + g_video = nullptr; + } else if (kaleidoscope_ != nullptr) { + kaleidoscope_->StopRotateAnimator(); + kaleidoscope_->ClearFocus(); + } +} +void DialViewGroup::StartDial() { + if (MainModel::GetInstance().getVideostate() != true) { + return; + } + MainModel::GetInstance().setVideostate(false); + if (video_ != nullptr) { + if (video_->IsPaused()) { + video_->ResumePlay(); + } else if (!video_->IsPlayed()) { + video_->StartPlay(); + } + g_video = video_; + } else if (kaleidoscope_ != nullptr) { + kaleidoscope_->RequestFocus(); + kaleidoscope_->StartRotateAnimator(); + } } MediaVideoPlay* DialViewGroup::GetVideoPlay() { @@ -531,4 +547,27 @@ MediaVideoPlay* DialViewGroup::GetVideoPlay() } return nullptr; } +//更新数据 +void DialViewGroup::UpdateViewsByPeriodicUpdateData() { + ListNode *node = periodicUpdateTypes_.Head(); + while (node != periodicUpdateTypes_.End()) { + DialDataType type = node->data_; + auto iter = dataTypeMap_.find(static_cast(type)); + if (iter != dataTypeMap_.end()) { + ProcessData(type, iter->second); + } + node = node->next_; + } + if (LowPowerManager::GetInstance()->IsLiteSurfaceInRootView()) { + Invalidate(); + } + // ota进行视频暂停 + if (uapi_dev_runtime_get_transmitting_status() == 1) { + //暂停视频 + StopDial(); + } else { + //获取视频 + StartDial(); + } +} } \ No newline at end of file -- 2.17.1