applist添加音乐界面,使用闹钟中的定时器刷新除主界面的音乐进度条 826/3 826/head 827/target/1 828/target/1 829/target/1
authorluozheng <1732036298@qq.com>
Thu, 29 Aug 2024 11:16:35 +0000 (19:16 +0800)
committerluozheng <1732036298@qq.com>
Thu, 29 Aug 2024 11:16:35 +0000 (19:16 +0800)
code/sdk/application/wearable/fd230app/nativeui/alarmclocktimerconfig/src/AlarmClockTimerConfig.cpp
code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistModel.cpp
code/sdk/application/wearable/fd230app/nativeui/musicplayer/include/MusicPlayerView.h
code/sdk/application/wearable/fd230app/nativeui/musicplayer/src/MusicPlayerView.cpp
code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersModel.h
code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersModel.cpp
code/sdk/application/wearable/fd230app/nativeui/uiservice/include/ui_service.h
code/sdk/application/wearable/fd230app/nativeui/uiservice/src/ui_service.cpp

index 34aba5f..ab206ee 100644 (file)
@@ -33,7 +33,9 @@
 #include "uiservice/include/ui_service.h"\r
 #include "power_display_service.h"\r
 #include "record/include/RecordingModel.h"\r
-\r
+#include <NativeAbility.h>\r
+#include "AppViewIDs.h"\r
+#include "player/include/PlayersView.h"\r
 #ifdef __cplusplus\r
 extern "C"\r
 {\r
@@ -519,7 +521,16 @@ extern "C"
                 OHOS::HeartModel::GetInstance()->Heart_Control(OHOS::HeartState::Start, OHOS::HeartCheck::PASSIVITY);\r
             }\r
         }\r
-        if(OHOS::RecordingModel::GetInstance()->GetRecordingPlayerViewCreate())\r
+        int16_t curviewid = OHOS::NativeAbility::GetInstance().GetCurSliceId();\r
+        if(curviewid != VIEW_MAIN && OHOS::PlayersView::GetInstance()) //如果当前不在主界面且音乐界面不为空\r
+        {\r
+            OHOS::UICheckBox::UICheckBoxState state = OHOS::PlayersView::GetInstance()->GetPlayerButtonState();\r
+            if(state == OHOS::UICheckBox::UICheckBoxState::SELECTED)\r
+            {\r
+                SendMsgToUIService(UI_UPDATE_PLAYERPROCESS, 0, nullptr, 0);\r
+            }\r
+        }\r
+        else if(OHOS::RecordingModel::GetInstance()->GetRecordingPlayerViewCreate())\r
         {\r
             SendMsgToUIService(UI_UPDATE_RECORDPROCESS, 0, nullptr, 0);\r
         }\r
index 9b732f3..d289be7 100644 (file)
@@ -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},
index c2193fe..d7275c3 100644 (file)
@@ -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};
     };
 }
index b9510f8..0d551ba 100644 (file)
@@ -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()
index 27b1d98..3e574f8 100644 (file)
@@ -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};
index e2dd531..41cffdb 100644 (file)
@@ -18,6 +18,7 @@
 #include "cmsis_os.h"
 #include <cmsis_os2.h>
 #include <service/graphic_service.h>
+#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
index 0ee571b..cfeef57 100644 (file)
@@ -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;
index e3349af..25ddee6 100644 (file)
@@ -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)
     {