From c2bd21cd1bc9e769abd2565a798494b795e0d376 Mon Sep 17 00:00:00 2001 From: luozheng <1732036298@qq.com> Date: Thu, 29 Aug 2024 19:16:35 +0800 Subject: [PATCH] =?utf8?q?applist=E6=B7=BB=E5=8A=A0=E9=9F=B3=E4=B9=90?= =?utf8?q?=E7=95=8C=E9=9D=A2=EF=BC=8C=E4=BD=BF=E7=94=A8=E9=97=B9=E9=92=9F?= =?utf8?q?=E4=B8=AD=E7=9A=84=E5=AE=9A=E6=97=B6=E5=99=A8=E5=88=B7=E6=96=B0?= =?utf8?q?=E9=99=A4=E4=B8=BB=E7=95=8C=E9=9D=A2=E7=9A=84=E9=9F=B3=E4=B9=90?= =?utf8?q?=E8=BF=9B=E5=BA=A6=E6=9D=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../src/AlarmClockTimerConfig.cpp | 15 +++++- .../nativeui/applist/src/ApplistModel.cpp | 2 +- .../musicplayer/include/MusicPlayerView.h | 4 +- .../musicplayer/src/MusicPlayerView.cpp | 18 ++++++- .../nativeui/player/include/PlayersModel.h | 7 ++- .../nativeui/player/src/PlayersModel.cpp | 52 +++++++++++++++++++ .../nativeui/uiservice/include/ui_service.h | 5 +- .../nativeui/uiservice/src/ui_service.cpp | 11 ++++ 8 files changed, 106 insertions(+), 8 deletions(-) diff --git a/code/sdk/application/wearable/fd230app/nativeui/alarmclocktimerconfig/src/AlarmClockTimerConfig.cpp b/code/sdk/application/wearable/fd230app/nativeui/alarmclocktimerconfig/src/AlarmClockTimerConfig.cpp index 34aba5fb8..ab206ee17 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/alarmclocktimerconfig/src/AlarmClockTimerConfig.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/alarmclocktimerconfig/src/AlarmClockTimerConfig.cpp @@ -33,7 +33,9 @@ #include "uiservice/include/ui_service.h" #include "power_display_service.h" #include "record/include/RecordingModel.h" - +#include +#include "AppViewIDs.h" +#include "player/include/PlayersView.h" #ifdef __cplusplus extern "C" { @@ -519,7 +521,16 @@ extern "C" OHOS::HeartModel::GetInstance()->Heart_Control(OHOS::HeartState::Start, OHOS::HeartCheck::PASSIVITY); } } - if(OHOS::RecordingModel::GetInstance()->GetRecordingPlayerViewCreate()) + int16_t curviewid = OHOS::NativeAbility::GetInstance().GetCurSliceId(); + if(curviewid != VIEW_MAIN && OHOS::PlayersView::GetInstance()) //如果当前不在主界面且音乐界面不为空 + { + OHOS::UICheckBox::UICheckBoxState state = OHOS::PlayersView::GetInstance()->GetPlayerButtonState(); + if(state == OHOS::UICheckBox::UICheckBoxState::SELECTED) + { + SendMsgToUIService(UI_UPDATE_PLAYERPROCESS, 0, nullptr, 0); + } + } + else if(OHOS::RecordingModel::GetInstance()->GetRecordingPlayerViewCreate()) { SendMsgToUIService(UI_UPDATE_RECORDPROCESS, 0, nullptr, 0); } diff --git a/code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistModel.cpp index 9b732f314..d289be768 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistModel.cpp @@ -80,7 +80,7 @@ namespace OHOS {VIEW_TAKEPHOTOS, PNG_APPLIST_TACKEPHOTOS_IMAGE, PNG_APPLIST_TACKEPHOTOS_IMAGE, PNG_APPLIST_DEFAULT_IMG, "遥控拍照", STR_REMOTE_SHOOTING, nullptr}, {VIEW_MAIN_ALARM, PNG_APPLIST_ALARM_IMAGE, PNG_APPLIST_ALARM_IMAGE, PNG_APPLIST_DEFAULT_IMG, "闹钟", STR_ALARM, nullptr}, {VIEW_FIND_PHONE, PNG_APPLIST_FINDPHONE_IMAGE, PNG_APPLIST_FINDPHONE_IMAGE, PNG_APPLIST_DEFAULT_IMG, "查找手机", STR_FIND_PHONE, nullptr}, - // {VIEW_MUSIC_PLAYER, PNG_APPLIST_MUSIC_IMAGE, PNG_APPLIST_MUSIC_IMAGE, PNG_APPLIST_DEFAULT_IMG, "音乐播放器", STR_MUSIC, nullptr}, + {VIEW_MUSIC_PLAYER, PNG_APPLIST_MUSIC_IMAGE, PNG_APPLIST_MUSIC_IMAGE, PNG_APPLIST_DEFAULT_IMG, "音乐播放器", STR_MUSIC, nullptr}, {VIEW_OFFLINEVOICE, PNG_APPLIST_SMART_IMAGE, PNG_APPLIST_SMART_IMAGE, PNG_APPLIST_DEFAULT_IMG, "语音助手", STR_VOICE_ASSISTANT, nullptr}, {VIEW_SCHEDULE, PNG_APPLIST_SCHEDULE_IMAGE, PNG_APPLIST_SCHEDULE_IMAGE, PNG_APPLIST_DEFAULT_IMG, "schedule", STR_SCHEDULE, nullptr}, {VIEW_SETTING, PNG_APPLIST_SETTING_IMAGE, PNG_APPLIST_SETTING_IMAGE, PNG_APPLIST_DEFAULT_IMG, "设置", STR_SETTINGS, nullptr}, diff --git a/code/sdk/application/wearable/fd230app/nativeui/musicplayer/include/MusicPlayerView.h b/code/sdk/application/wearable/fd230app/nativeui/musicplayer/include/MusicPlayerView.h index c2193fe9a..d7275c350 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/musicplayer/include/MusicPlayerView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/musicplayer/include/MusicPlayerView.h @@ -2,7 +2,7 @@ * @Author: luozheng 1732036298@qq.com * @Date: 2024-08-01 18:02:51 * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-08-06 15:09:50 + * @LastEditTime: 2024-08-29 17:59:43 * @FilePath: /xts_origin/FD230/code/sdk/application/wearable/fd230app/nativeui/musicplayer/include/MusicPlayerView.h */ @@ -12,6 +12,7 @@ #include "BaseView.h" #include "View.h" +#include "player/include/PlayersView.h" namespace OHOS { @@ -31,6 +32,7 @@ namespace OHOS private: void CreateMusicPlayerView(void); void ClearAll(void); + PlayersView *playersView{nullptr}; bool viewInitStatus{false}; }; } diff --git a/code/sdk/application/wearable/fd230app/nativeui/musicplayer/src/MusicPlayerView.cpp b/code/sdk/application/wearable/fd230app/nativeui/musicplayer/src/MusicPlayerView.cpp index b9510f8c9..0d551ba6b 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/musicplayer/src/MusicPlayerView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/musicplayer/src/MusicPlayerView.cpp @@ -2,7 +2,7 @@ * @Author: luozheng 1732036298@qq.com * @Date: 2024-05-07 11:25:58 * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-08-06 15:10:00 + * @LastEditTime: 2024-08-29 18:03:54 * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/MusicPlayer/src/MusicPlayerView.cpp */ #include "musicplayer/include/MusicPlayerPresenter.h" @@ -35,12 +35,28 @@ namespace OHOS WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MusicPlayerView::ClearAll"); if (viewInitStatus) { + if (playersView) + { + delete playersView; + playersView = nullptr; + } } } void MusicPlayerView::CreateMusicPlayerView(void) { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MusicPlayerView::CreateMusicPlayerView"); + if (playersView == nullptr) + { + playersView = new PlayersView(); + if (playersView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playersView new fail!!"); + return; + } + playersView->PreLoad(); + container_->Add(playersView); + } } void MusicPlayerView::OnStart() diff --git a/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersModel.h b/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersModel.h index 27b1d98a7..3e574f8f9 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersModel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersModel.h @@ -2,7 +2,7 @@ * @Author: luozheng 1732036298@qq.com * @Date: 2024-08-05 15:20:03 * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-08-20 17:18:32 + * @LastEditTime: 2024-08-29 18:33:50 * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersModel.h */ @@ -103,8 +103,13 @@ public: bool GetCurrentMusicIsPlaying(void); void PlayerMusic_StartTimer(uint32_t interval = 1000); void PlayerMusic_StopTimer(void); + void SetCircleProgress(); + void UpdatePlayerProcess(void); private: bool musicSourceFlag{false};//音乐来源标志:false:默认为手表音乐,true:手机音乐 + int64_t playerCurrentTime_{0}; + int64_t playerMusicDuration_{0}; + int64_t playerProgressValue_{0}; private: PlayersCaseListAdapter *m_PlayersCaseListAdapter{nullptr}; int64_t duration_{0}; diff --git a/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersModel.cpp index e2dd531dd..41cffdbbb 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersModel.cpp @@ -18,6 +18,7 @@ #include "cmsis_os.h" #include #include +#include "MainViewSample.h" namespace OHOS { static constexpr int VOLUME_MAXIMUM = 100; @@ -890,6 +891,57 @@ bool PlayersModel::GetCurrentMusicIsPlaying(void) g_PlayerTimes = 5; } } + + void PlayersModel::SetCircleProgress() + { + PlayersView *playersView = PlayersView::GetInstance(); + if (playersView == nullptr) + { + return; + } + UICircleProgress *playbackProgress = playersView->GetPlaybackProgress(); + if (playbackProgress == nullptr) + { + return; + } + int32_t playerState; + PlayersModel::GetInstance()->GetPlayerCtr()->GetPlayerState(playerState); + UICheckBox::UICheckBoxState state_ = playersView->GetPlayerButtonState(); + if ((playerState != PLAYER_STARTED) && (state_ == UICheckBox::UICheckBoxState::SELECTED)) + { + playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::UNSELECTED); + } + else if ((playerState == PLAYER_STARTED) && (state_ == UICheckBox::UICheckBoxState::UNSELECTED)) + { + playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::SELECTED); + } + if (state_ == UICheckBox::UICheckBoxState::SELECTED) + { + PlayersModel::GetInstance()->GetPlayerCtr()->GetCurrentTime(playerCurrentTime_); + PlayersModel::GetInstance()->GetDuration(playerMusicDuration_); + if (playerMusicDuration_ != 0) + { + playerProgressValue_ = (playerCurrentTime_ * 100) / playerMusicDuration_; + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "playerProgressValue_ %lld", playerProgressValue_); + } + else + { + playerProgressValue_ = 100; // 100: max progress value + } + PlayersModel::GetInstance()->SetCircleProgress(playerProgressValue_); + PlayersPresenter::GetInstance()->SetPlaybackProgress(playerProgressValue_); + } + } + + //更新音乐进度条 + void PlayersModel::UpdatePlayerProcess(void) + { + if(MainViewSample::GetInstance()) //主界面就不调用刷新这个进度条刷新了 + { + return; + } + SetCircleProgress(); + } } #ifdef __cplusplus 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 0ee571b81..cfeef57bc 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 @@ -8,7 +8,7 @@ * @Author: luozheng 1732036298@qq.com * @Date: 2024-06-12 11:44:04 * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-08-28 15:50:33 + * @LastEditTime: 2024-08-29 18:44:06 * @FilePath: /FD230/code/sdk/application/wearable/nativeapp/nativeui/uiservice/include/ui_service.h */ /* @@ -84,7 +84,8 @@ typedef enum { UI_UPDATE_USER_QUESTION_STR,//更新用户问题的字符串 UI_UPDATE_AI_ANSWER_STR, //更新AI答案的字符串 UI_HAND_WATCH_FIRST_PAIRED, //手表已配对:给第一次手表启动用配对成功调用 - UI_UPDATE_RECORDPROCESS, //更新录音进度条 + UI_UPDATE_RECORDPROCESS, //更新录音进度条 + UI_UPDATE_PLAYERPROCESS, //处理更新音乐进度条 UI_UPDATE_OBU_MESSAGE, 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 e3349af5b..25ddee6a4 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 @@ -121,6 +121,7 @@ extern "C" static void HandleWatchFirstPaired(Request *request); static void HandleUpdateOBUMessage(Request *request); static void HandleUpdateRecordProcess(Request *request); + static void HandleUpdatePlayerProcess(Request *request); static void HandleUpdateSleep(Request *request); static void HandleUpdateMessage(Request *request); static void HandleUpdateHeartRate(Request *request); @@ -155,6 +156,7 @@ extern "C" {UI_UPDATE_OBU_MESSAGE, HandleUpdateOBUMessage}, {UI_AI_JUMP_TO_LISTENING_VIEW, HandleAiJumpToListeningMessage}, {UI_UPDATE_RECORDPROCESS, HandleUpdateRecordProcess}, + {UI_UPDATE_PLAYERPROCESS, HandleUpdatePlayerProcess}, {UI_UPDATE_SLEEP_DATA, HandleUpdateSleep}, {UI_UPDATE_MESSAGE_DATA, HandleUpdateMessage}, @@ -611,6 +613,7 @@ extern "C" std::bind(&OHOS::AiVoiceModel::ChangeToAIVoiceListeningView, &OHOS::AiVoiceModel::GetInstance(), state)); } + //处理更新录音进度条 void HandleUpdateRecordProcess(Request *request) { WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleUpdateRecordProcess"); @@ -618,6 +621,14 @@ extern "C" std::bind(&OHOS::RecordingModel::UpdateRecordProcess, OHOS::RecordingModel::GetInstance())); } + //处理更新音乐进度条 + void HandleUpdatePlayerProcess(Request *request) + { + WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleUpdatePlayerProcess"); + GraphicService::GetInstance()->PostGraphicEvent( + std::bind(&OHOS::PlayersModel::UpdatePlayerProcess, OHOS::PlayersModel::GetInstance())); + } + // 更新睡眠数据 void HandleUpdateSleep(Request *request) { -- 2.17.1