解决切换到手机音乐还可以播放本地音乐bug
authorluozheng <1732036298@qq.com>
Sat, 28 Sep 2024 07:42:59 +0000 (15:42 +0800)
committerluozheng <1732036298@qq.com>
Sat, 28 Sep 2024 07:42:59 +0000 (15:42 +0800)
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/player/src/PlayersPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersView.cpp

index 8ce15f2..c02c6ea 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-09-26 14:21:11
+ * @LastEditTime: 2024-09-28 14:58:16
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersModel.h
  */
 
@@ -110,6 +110,7 @@ public:
     void set_phone_music_play_state(avrcp_key_operation_t notify);
     void get_avrcp_ct_get_element_attributes(void);
     void set_player_state(bool value);
+    bool get_player_state();
     // /* -------------------------------------------------------------------------- */
     std::unordered_map<uint16_t, std::pair<std::string,std::string>> &getIdToMusicNameMap(void);
     std::string getRealMusicNameById(int id);
@@ -120,6 +121,7 @@ public:
     void showIdToMusicNameMapData(void);
     // /* -------------------------------------------------------------------------- */
 private:
+    bool phonePlayButtonState{false};
     bool musicSourceFlag{false};//音乐来源标志:false:默认为手表音乐,true:手机音乐
     int64_t playerCurrentTime_{0};
     int64_t playerMusicDuration_{0};
index 95fa0d4..aefa17d 100644 (file)
@@ -1032,11 +1032,16 @@ bool PlayersModel::GetCurrentMusicIsPlaying(void)
     {
         PlayersPresenter *playersPresenter = PlayersPresenter::GetInstance();
         if (playersPresenter != nullptr) 
-        {
+        {   
+            phonePlayButtonState = value;
             playersPresenter->SetPhonePlayerState(value);
         }
     }
 
+    bool PlayersModel::get_player_state()
+    {
+        return phonePlayButtonState;
+    }
     std::unordered_map<uint16_t, std::pair<std::string,std::string>> &PlayersModel::getIdToMusicNameMap(void)
     {
         return idToMusicNameMap;
index 67badc2..3c7f2bb 100644 (file)
@@ -606,14 +606,6 @@ void ButtonOnClickListener::PlayerButtonOnClick()
         return;\r
     }\r
 \r
-    if(PlayersListGroup::GetInstance()->GetCase().IsEmpty() && !PlayersModel::GetInstance()->GetMusicSource()) //若当前歌曲列表为空且为本地音乐他跳转到音乐列表进行提示\r
-    {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "current playersCaseList_ is empty!!");\r
-        playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::UNSELECTED);\r
-        playersView->ChangeView(PlayersView::MAIN_MUSICPLAYER_VIEW,PlayersView::MUSIC_LIST_VIEW);\r
-        return;\r
-    }\r
-\r
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "play_or_pause_Button OnClick");\r
     uint8_t state = UICheckBox::UICheckBoxState::MAX_STATUS_NUM;\r
     int32_t playerState;\r
@@ -641,29 +633,47 @@ void ButtonOnClickListener::PlayerButtonOnClick()
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[PlayerButtonOnClick] calling phone");\r
         return;\r
     }\r
-    /* -------------------------- 若ct或tg端是已连接状态且当前为手机音乐 ------------------------- */\r
-    if(PlayersModel::GetInstance()->get_avrcp_ct_or_tg_is_connected() && PlayersModel::GetInstance()->GetMusicSource())\r
+\r
+    if( !PlayersModel::GetInstance()->GetMusicSource()) \r
     {\r
-        if (state == UICheckBox::UICheckBoxState::SELECTED) \r
+        if(PlayersListGroup::GetInstance()->GetCase().IsEmpty()) //若当前歌曲列表为空且为本地音乐他跳转到音乐列表进行提示\r
         {\r
-           PlayersModel::GetInstance()->set_phone_music_play_state(AVRCP_KEY_PLAY); //控制手机音乐播放\r
-        } \r
-        else if (state == UICheckBox::UICheckBoxState::UNSELECTED) \r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "current playersCaseList_ is empty!!");\r
+            playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::UNSELECTED);\r
+            playersView->ChangeView(PlayersView::MAIN_MUSICPLAYER_VIEW,PlayersView::MUSIC_LIST_VIEW);\r
+            return;\r
+        }\r
+        else\r
         {\r
-           PlayersModel::GetInstance()->set_phone_music_play_state(AVRCP_KEY_PAUSE);//控制手机音乐暂停\r
+            if (state == UICheckBox::UICheckBoxState::SELECTED) {\r
+            /* start play */\r
+            PlayersModel::GetInstance()->ConnectBtAndLocalPlay(connCtState, connTgState, playerState);\r
+            } else if (state == UICheckBox::UICheckBoxState::UNSELECTED) {\r
+                PlayersModel::GetInstance()->ConnectBtAndLocalPause(connCtState, connTgState);\r
+            }\r
+            PlayersModel::GetInstance()->SetCurrentIndex(PlayersModel::GetInstance()->GetCurrentIndex());\r
         }\r
-        return;\r
     }\r
-    /* -------------------------------------------------------------------------- */\r
-     \r
-    if (state == UICheckBox::UICheckBoxState::SELECTED) {\r
-        /* start play */\r
-        PlayersModel::GetInstance()->ConnectBtAndLocalPlay(connCtState, connTgState, playerState);\r
-    } else if (state == UICheckBox::UICheckBoxState::UNSELECTED) {\r
-        PlayersModel::GetInstance()->ConnectBtAndLocalPause(connCtState, connTgState);\r
+    else //手机音乐\r
+    {\r
+        /* -------------------------- 若ct或tg端是已连接状态且当前为手机音乐 ------------------------- */\r
+        if(PlayersModel::GetInstance()->get_avrcp_ct_or_tg_is_connected())\r
+        {\r
+            if (state == UICheckBox::UICheckBoxState::SELECTED) \r
+            {\r
+                PlayersModel::GetInstance()->set_phone_music_play_state(AVRCP_KEY_PLAY); //控制手机音乐播放\r
+            } \r
+            else if (state == UICheckBox::UICheckBoxState::UNSELECTED) \r
+            {\r
+                PlayersModel::GetInstance()->set_phone_music_play_state(AVRCP_KEY_PAUSE);//控制手机音乐暂停\r
+            }\r
+            return;\r
+        }\r
+        else\r
+        {\r
+            playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::UNSELECTED);\r
+        }\r
     }\r
-    /* -------------------------------------------------------------------------- */\r
-    PlayersModel::GetInstance()->SetCurrentIndex(PlayersModel::GetInstance()->GetCurrentIndex());\r
 }\r
 /*下一首按钮被点击时调用*/\r
 void ButtonOnClickListener::NextButtonOnClick()\r
@@ -1595,7 +1605,6 @@ void PlayersPresenter::SetPhonePlayerState(bool value)
 {\r
     PlayersView *playersView = PlayersView::GetInstance();\r
     if (playersView != nullptr) {\r
-        PlayersModel::GetInstance()->SetPlayButtonState(value);\r
         playersView->SetPlayerButtonState(value ? UICheckBox::UICheckBoxState::SELECTED:UICheckBox::UICheckBoxState::UNSELECTED);\r
     }\r
     return;\r
index 21dfa9d..322095c 100644 (file)
@@ -872,6 +872,8 @@ namespace OHOS
             /* -------------------------------------------------------------------------- */\r
             if (musicSourceType) // 如果切換到手机音乐,且当前在放歌,就停止音乐\r
             {\r
+                bool value = PlayersModel::GetInstance()->get_player_state();\r
+                SetPlayerButtonState(value ? UICheckBox::UICheckBoxState::SELECTED:UICheckBox::UICheckBoxState::UNSELECTED);\r
                 /*停止音乐*/\r
                 StopCurPlayingMusic();\r
             }\r