在播放手机音乐的时候,如果想对本地音乐操作这时弹窗提示,不能对本地音乐操作
authorluozheng <1732036298@qq.com>
Sat, 19 Oct 2024 07:52:07 +0000 (15:52 +0800)
committerluozheng <1732036298@qq.com>
Sat, 19 Oct 2024 07:52:07 +0000 (15:52 +0800)
code/sdk/application/wearable/fd230app/CMakeLists.txt
code/sdk/application/wearable/fd230app/nativeui/player/include/MusicPlayerTipView.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersPresenter.h
code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersView.h
code/sdk/application/wearable/fd230app/nativeui/player/src/MusicPlayerBTConnectFailedView.cpp
code/sdk/application/wearable/fd230app/nativeui/player/src/MusicPlayerBluetoothDisConView.cpp
code/sdk/application/wearable/fd230app/nativeui/player/src/MusicPlayerTipView.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersCaseListAdapter.cpp
code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersView.cpp

index 313eded..d3cbb62 100644 (file)
@@ -257,6 +257,7 @@ set(SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/player/src/PlayersCaseListAdapter.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/player/src/PlayerListDelSongView.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/player/src/PlayerListitemView.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/player/src/MusicPlayerTipView.cpp
 
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/activity/src/MainActivityView.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/activity/src/ActivityWeekView.cpp
diff --git a/code/sdk/application/wearable/fd230app/nativeui/player/include/MusicPlayerTipView.h b/code/sdk/application/wearable/fd230app/nativeui/player/include/MusicPlayerTipView.h
new file mode 100644 (file)
index 0000000..eea1b9b
--- /dev/null
@@ -0,0 +1,36 @@
+#ifndef __MUSIC_PLAYER_TIP_VIEW_H__
+#define __MUSIC_PLAYER_TIP_VIEW_H__
+
+#include "components/ui_label_ext.h"
+#include "components/ui_view_group.h"
+#include "components/ui_scroll_view.h"
+#include "components/ui_image_view.h"
+#include "components/ui_button.h"
+
+namespace OHOS
+{
+    class MusicPlayerTipView : public UIView::OnClickListener
+    {
+    public:
+        MusicPlayerTipView();
+        ~MusicPlayerTipView();
+        static MusicPlayerTipView *GetInstance(void);
+
+        UIViewGroup * CreateMusicPlayerTipView(void);
+        bool OnClick(UIView &view, const ClickEvent &event);
+        
+
+    private:
+        void ClearAll(void);
+        UIViewGroup *group{nullptr};
+        UIScrollView *scrollView{nullptr};
+        UIImageView *image{nullptr};
+        UILabelExt *noteLabel{nullptr};
+        UILabelExt *OKLabel{nullptr};
+        UIButton *OkButton{nullptr};
+        UIView::OnDragListener *dragListener{nullptr};
+    };
+
+} // namespace OHOS 
+
+#endif
\ No newline at end of file
index b41ca00..2e2267e 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com\r
  * @Date: 2024-08-05 15:20:03\r
  * @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-09-24 15:01:01\r
+ * @LastEditTime: 2024-10-19 14:33:19\r
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersPresenter.h\r
  */\r
 \r
@@ -58,6 +58,7 @@ class VolumeSettingView;
 #define MUSIC_PLAYER_DELETE_VIEW "MusicPlayerDeleteView" //音乐删除视图的滑动监听\r
 #define MUISC_PLAYER_BLUETOOTH_DISCONN_VIEW "MusicPlayerBluetoothDisConView" //蓝牙未连接视图的滑动监听\r
 #define MUISC_PLAYER_BLUETOOTH_CONNECTFAILED_VIEW "MusicPlayerBluetoothConncetFailedView" //蓝牙连接失败视图的滑动监听\r
+#define MUISC_PLAYER_TIP_VIEW "MusicPlayerTipView" //音乐播放器Tip视图的滑动监听\r
 #define TIPS_SUCC_MESSAGE_VIEW "TipsSuccMessageView" \r
 #define TIPS_FAIL_MESSAGE_VIEW "TipsFailMessageView"\r
 #define TIPS_CONN_FAIL_MESSAGE_VIEW "TipsConnFailMessageView"\r
@@ -176,6 +177,7 @@ private:
     void OnDragChangMusicPlayerDeleteView(const DragEvent& event);\r
     void OnDragChangMusicPlayerBTDisConnectView(const DragEvent& event);\r
     void OnDragChangMusicPlayerBTConnectFailedView(const DragEvent& event);\r
+    void OnDragChangMusicPlayerTipView(const DragEvent& event);\r
     void DropEarPhoneView(const DragEvent& event);\r
     void DropEarListView(const DragEvent& event);\r
     void CorrespondingJump(const DragEvent& event, int16_t hideView);\r
index 16ea701..3d2eba0 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com\r
  * @Date: 2024-08-05 15:20:03\r
  * @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-09-18 19:13:53\r
+ * @LastEditTime: 2024-10-19 14:38:21\r
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersView.h\r
  */\r
 \r
@@ -35,6 +35,7 @@
 #include "player/include/MusicPlayerBluetoothDisConView.h"\r
 #include "player/include/MusicPlayerBTConnectFailedView.h"\r
 #include "aivoice/include/AiVoiceConnectingView.h"\r
+#include "player/include/MusicPlayerTipView.h"\r
 namespace OHOS\r
 {\r
 #define PLAY_PROGRESS_MIN 0\r
@@ -67,6 +68,7 @@ namespace OHOS
             MUISC_BLUETOOTH_HEADSET_LIST_VIEW,       // 蓝牙耳机列表视图\r
             MUSIC_CONNECTED_BLUETOOTH_HEADSET_VIEW,  // 已连接的蓝牙耳机设备视图\r
             MUSIC_PHONE_BLUETOOTH_CONNECT_FAIL_VIEW, // 与手机蓝牙连接失败视图\r
+            MUSIC_PLAYER_TIP_VIEW,                   // 音乐播放器Tip视图\r
             MUSICPLAYERJUMPVIEWID_MAX,\r
         };\r
         PlayersView();\r
@@ -118,6 +120,7 @@ namespace OHOS
         bool ChangeToMusicBluetoothDisConnectView(int16_t thisView);\r
         bool ChangeToMusicBluetoothConnectFailedView(int16_t thisView);\r
         bool ChangeToMusicConnectingView(int16_t thisView);\r
+        bool ChangeToMusicPlayerTipView(int16_t thisView);\r
 \r
     private:\r
         UIButton *PlayerViewButtonInit(ButtonConfig &buttonconfig);\r
@@ -156,6 +159,7 @@ namespace OHOS
         MusicPlayerBluetoothDisConView *musicPlayerBluetoothDisConView{nullptr}; // 蓝牙未连接视图\r
         MusicPlayerBTConnectFailedView *musicPlayerBTConnectFailedView{nullptr}; // 蓝牙连接失败视图\r
         AiVoiceConnectingView *musicPlayerConnectingView{nullptr};               // 连接动画\r
+        MusicPlayerTipView * musicPlayerTipView{nullptr};                        // 音乐播放器Tip视图\r
 \r
     private:\r
         UIView::OnClickListener *clickListener{nullptr};\r
index 0142c6b..1129348 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-08-12 11:31:43
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-10-12 11:15:50
+ * @LastEditTime: 2024-10-19 11:51:53
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/src/MusicPlayerBTConnectFailedView.cpp
  */
 #include "player/include/MusicPlayerBTConnectFailedView.h"
@@ -94,6 +94,11 @@ namespace OHOS
                 delete scrollView;
                 scrollView = nullptr;
             }
+            if (dragListener)
+            {
+                delete dragListener;
+                dragListener = nullptr;
+            }
 
             delete group;
             group = nullptr;
index c7e9497..3bd84eb 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-08-10 16:23:46
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-10-12 11:20:55
+ * @LastEditTime: 2024-10-19 11:52:00
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/src/MusicPlayerBluetoothDisConView.cpp
  */
 #include "player/include/MusicPlayerBluetoothDisConView.h"
@@ -38,9 +38,9 @@ namespace OHOS
         {
             playersView->ChangeView(PlayersView::MUSIC_BLUETOOTH_DISCONN_VIEW, PlayersView::MAIN_MUSICPLAYER_VIEW);
         }
-        else if(strcmp(view.GetViewId(), MUISC_PLAYER_BLUETOOTH_DISCONN_VIEW) == 0)
+        else if (strcmp(view.GetViewId(), MUISC_PLAYER_BLUETOOTH_DISCONN_VIEW) == 0)
         {
-            //跳转到蓝牙连接失败视图
+            // 跳转到蓝牙连接失败视图
             playersView->ChangeView(PlayersView::MUSIC_BLUETOOTH_DISCONN_VIEW, PlayersView::MUSIC_BT_CONNECTFAILED_VIEW);
         }
         return true;
@@ -94,6 +94,12 @@ namespace OHOS
                 scrollView = nullptr;
             }
 
+            if (dragListener)
+            {
+                delete dragListener;
+                dragListener = nullptr;
+            }
+
             delete group;
             group = nullptr;
         }
diff --git a/code/sdk/application/wearable/fd230app/nativeui/player/src/MusicPlayerTipView.cpp b/code/sdk/application/wearable/fd230app/nativeui/player/src/MusicPlayerTipView.cpp
new file mode 100644 (file)
index 0000000..09255d9
--- /dev/null
@@ -0,0 +1,202 @@
+/*
+ * @Author: luozheng 1732036298@qq.com
+ * @Date: 2024-10-19 11:27:19
+ * @LastEditors: luozheng 1732036298@qq.com
+ * @LastEditTime: 2024-10-19 15:35:34
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/src/MusicPlayerTipView.cpp
+ */
+#include "player/include/MusicPlayerTipView.h"
+#include "player/include/PlayersPresenter.h"
+#include "wearable_log.h"
+#include "UiConfig.h"
+#include "ui_resource_string.h"
+#include "iostream"
+#include "string"
+namespace OHOS
+{
+
+    static constexpr const char *OKBUTTON = "okButton";
+    static MusicPlayerTipView *g_pMusicPlayerTipView = nullptr;
+    MusicPlayerTipView::MusicPlayerTipView()
+    {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MusicPlayerTipView::MusicPlayerTipView");
+        g_pMusicPlayerTipView = this;
+    }
+
+    MusicPlayerTipView::~MusicPlayerTipView()
+    {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "~MusicPlayerTipView::MusicPlayerTipView");
+        ClearAll();
+        g_pMusicPlayerTipView = nullptr;
+    }
+
+    MusicPlayerTipView *MusicPlayerTipView::GetInstance(void)
+    {
+        return g_pMusicPlayerTipView;
+    }
+
+    void MusicPlayerTipView::ClearAll(void)
+    {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MusicPlayerTipView::ClearAll");
+        if (group)
+        {
+            group->RemoveAll();
+            if (scrollView)
+            {
+                scrollView->RemoveAll();
+
+                delete image;
+                image = nullptr;
+
+                delete noteLabel;
+                noteLabel = nullptr;
+
+                delete OKLabel;
+                OKLabel = nullptr;
+
+                delete OkButton;
+                OkButton = nullptr;
+
+                delete scrollView;
+                scrollView = nullptr;
+            }
+            delete dragListener;
+            dragListener = nullptr;
+
+            delete group;
+            group = nullptr;
+        }
+    }
+
+    bool MusicPlayerTipView::OnClick(UIView &view, const ClickEvent &event)
+    {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MusicPlayerTipView::OnClick");
+        PlayersView *playersView = PlayersView::GetInstance();
+        if (!playersView)
+        {
+            return false;
+        }
+        std::string viewId = view.GetViewId();
+        if (viewId == OKBUTTON)
+        {
+            playersView->ChangeView(PlayersView::MUSIC_PLAYER_TIP_VIEW, PlayersView::MAIN_MUSICPLAYER_VIEW);
+        }
+        return true;
+    }
+
+    UIViewGroup *MusicPlayerTipView::CreateMusicPlayerTipView()
+    {
+        if (group == nullptr)
+        {
+            group = new UIViewGroup();
+            if (group == nullptr)
+            {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");
+                return nullptr;
+            }
+
+            group->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
+            group->SetStyle(STYLE_BACKGROUND_OPA, 0);
+            group->SetTouchable(true);
+            group->SetDraggable(true);
+            group->SetIntercept(true);
+            group->SetViewId(MUISC_PLAYER_TIP_VIEW);
+            if (dragListener == nullptr)
+            {
+                dragListener = static_cast<UIView::OnDragListener *>(new PlayerOnDragListener());
+                if (dragListener == nullptr)
+                {
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "dragListener new fail");
+                    return nullptr;
+                }
+            }
+            group->SetOnDragListener(dragListener);
+            /* -------------------------------------------------------------------------- */
+            if (scrollView == nullptr)
+            {
+                scrollView = new UIScrollView();
+                if (scrollView == nullptr)
+                {
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "scrollView new fail");
+                    return nullptr;
+                }
+            }
+            scrollView->SetPosition(0, 0, 466, 466);
+            scrollView->SetScrollBlankSize(50);
+            scrollView->SetReboundSize(35);
+            scrollView->SetThrowDrag(true);
+            scrollView->SetMaxScrollDistance(1000);
+            scrollView->SetDirection(UIScrollView::VERTICAL);
+            scrollView->RequestFocus();
+            scrollView->SetRotateFactor(1.0);
+            /* -------------------------------------------------------------------------- */
+            if (image == nullptr)
+            {
+                image = new UIImageView();
+                if (image == nullptr)
+                {
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "image new fail");
+                    return nullptr;
+                }
+            }
+            image->SetPosition(193, 120, 80, 80);
+            image->SetSrc(PNG_ATTENTION_IMAGE);
+            /* -------------------------------------------------------------------------- */
+            if (noteLabel == nullptr)
+            {
+                noteLabel = new UILabelExt();
+                if (noteLabel == nullptr)
+                {
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "noteLabel new fail");
+                    return nullptr;
+                }
+            }
+            noteLabel->SetPosition(53, 230, 360, 35);
+            noteLabel->SetStyle(STYLE_TEXT_FONT, 30);
+            noteLabel->SetStyle(STYLE_LINE_HEIGHT, 35);
+            noteLabel->SetText("手表正在播放手机音乐,不能对本地音乐进行操作。");
+            noteLabel->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);
+            noteLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+            noteLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+            /* -------------------------------------------------------------------------- */
+            if (OkButton == nullptr)
+            {
+                OkButton = new UIButton();
+                if (OkButton == nullptr)
+                {
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OkButton new fail");
+                    return nullptr;
+                }
+            }
+            OkButton->SetPosition(0, noteLabel->GetY() + noteLabel->GetTextHeight() + 30, 466, 100);
+            OkButton->SetViewId(OKBUTTON);
+            OkButton->SetImageSrc(PNG_BUTTON_466x100_IMAGE, PNG_BUTTON_466x100_IMAGE);
+            OkButton->SetStyleForState(STYLE_BACKGROUND_COLOR, 0x00, UIButton::PRESSED);
+            OkButton->SetOnClickListener(this);
+            /* -------------------------------------------------------------------------- */
+            if (OKLabel == nullptr)
+            {
+                OKLabel = new UILabelExt();
+                if (OKLabel == nullptr)
+                {
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OKLabel new fail");
+                    return nullptr;
+                }
+            }
+            OKLabel->SetPosition(173, OkButton->GetY() + 33, 120, 35);
+            OKLabel->SetStyle(STYLE_TEXT_FONT, 30);
+            OKLabel->SetStyle(STYLE_LINE_HEIGHT, 35);
+            OKLabel->SetTextId(STR_OK); // 知道了
+            OKLabel->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);
+            OKLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+            OKLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+            /* -------------------------------------------------------------------------- */
+            scrollView->Add(image);
+            scrollView->Add(noteLabel);
+            scrollView->Add(OkButton);
+            scrollView->Add(OKLabel);
+            group->Add(scrollView);
+        }
+        return group;
+    }
+}
\ No newline at end of file
index 3c176d8..88e70fe 100644 (file)
@@ -47,6 +47,13 @@ namespace OHOS
             WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "playersView null!");\r
             return false;\r
         }\r
+        /* -------------------------------------------------------------------------- */\r
+        if (PlayersModel::GetInstance()->get_avrcp_ct_or_tg_is_connected() && \r
+                PlayersModel::GetInstance()->get_a2dp_sink_connect_state()) //若ct或tg端是已连接状态且当前a2dp_sink是已连接状态\r
+        {\r
+            return false;\r
+        }\r
+        /* -------------------------------------------------------------------------- */\r
         BtnOnListData(view);\r
         /* --------------------------- 若点击的是View类型是Button --------------------------- */\r
         if (view.GetViewType() == UIViewType::UI_BUTTON)\r
index 7c005b0..1d4106c 100644 (file)
@@ -641,15 +641,21 @@ void ButtonOnClickListener::PlayerButtonOnClick()
             playersView->ChangeView(PlayersView::MAIN_MUSICPLAYER_VIEW,PlayersView::MUSIC_LIST_VIEW);\r
             return;\r
         }\r
-        else\r
+        else //若当前歌曲列表不为空且为本地音乐\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
+            if (PlayersModel::GetInstance()->get_avrcp_ct_or_tg_is_connected() && \r
+                PlayersModel::GetInstance()->get_a2dp_sink_connect_state()) //若ct或tg端是已连接状态且当前a2dp_sink是已连接状态\r
+            {\r
+                playersView->ChangeView(PlayersView::MAIN_MUSICPLAYER_VIEW, PlayersView::MUSIC_PLAYER_TIP_VIEW); // 跳转到提示界面\r
+            } else {\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
-            PlayersModel::GetInstance()->SetCurrentIndex(PlayersModel::GetInstance()->GetCurrentIndex());\r
         }\r
     }\r
     else //手机音乐\r
@@ -689,6 +695,12 @@ void ButtonOnClickListener::NextButtonOnClick()
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::GetInstance");\r
             return;\r
         }\r
+        if (PlayersModel::GetInstance()->get_avrcp_ct_or_tg_is_connected() && \r
+                PlayersModel::GetInstance()->get_a2dp_sink_connect_state()) //若ct或tg端是已连接状态且当前a2dp_sink是已连接状态\r
+        {\r
+            playersView->ChangeView(PlayersView::MAIN_MUSICPLAYER_VIEW, PlayersView::MUSIC_PLAYER_TIP_VIEW); // 跳转到提示界面\r
+            return;\r
+        }\r
         if (playersView->GetPlaybackProgress() != nullptr) {\r
             playersView->GetPlaybackProgress()->SetValue(0); // 0:进度0%\r
             playersView->GetPlaybackProgress()->Invalidate();\r
@@ -712,6 +724,12 @@ void ButtonOnClickListener::PreButtonOnClick()
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::GetInstance");\r
             return;\r
         }\r
+        if (PlayersModel::GetInstance()->get_avrcp_ct_or_tg_is_connected() && \r
+                PlayersModel::GetInstance()->get_a2dp_sink_connect_state()) //若ct或tg端是已连接状态且当前a2dp_sink是已连接状态\r
+        {\r
+            playersView->ChangeView(PlayersView::MAIN_MUSICPLAYER_VIEW, PlayersView::MUSIC_PLAYER_TIP_VIEW); // 跳转到提示界面\r
+            return;\r
+        }\r
         if (playersView->GetPlaybackProgress() != nullptr) {\r
             playersView->GetPlaybackProgress()->SetValue(0); // 0:进度0%\r
             playersView->GetPlaybackProgress()->Invalidate();\r
@@ -728,6 +746,14 @@ void ButtonOnClickListener::SoundButtonOnClick()
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SoundButtonOnClick playersView nullptr err");\r
         return;\r
     }\r
+    /* -------------------------------------------------------------------------- */\r
+    if (PlayersModel::GetInstance()->get_avrcp_ct_or_tg_is_connected() && \r
+                PlayersModel::GetInstance()->get_a2dp_sink_connect_state()) //若ct或tg端是已连接状态且当前a2dp_sink是已连接状态\r
+    {\r
+        playersView->ChangeView(PlayersView::MAIN_MUSICPLAYER_VIEW, PlayersView::MUSIC_PLAYER_TIP_VIEW); // 跳转到提示界面\r
+        return;\r
+    }\r
+    /* -------------------------------------------------------------------------- */\r
     playersView->ChangeView(PlayersView::MAIN_MUSICPLAYER_VIEW, PlayersView::MUSIC_VOLUME_CONTROL_VIEW);\r
     VolumeSettingView *volumeSettingView = playersView->GetVolumeSettingView();\r
     if(volumeSettingView == nullptr)\r
@@ -791,6 +817,14 @@ void ButtonOnClickListener::PlayerModelButtonOnClick()
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayerModelButtonOnClick playersView nullptr err");\r
         return;\r
     }\r
+    /* -------------------------------------------------------------------------- */\r
+    if (PlayersModel::GetInstance()->get_avrcp_ct_or_tg_is_connected() && \r
+                PlayersModel::GetInstance()->get_a2dp_sink_connect_state()) //若ct或tg端是已连接状态且当前a2dp_sink是已连接状态\r
+    {\r
+        playersView->ChangeView(PlayersView::MAIN_MUSICPLAYER_VIEW, PlayersView::MUSIC_PLAYER_TIP_VIEW); // 跳转到提示界面\r
+        return;\r
+    }\r
+    /* -------------------------------------------------------------------------- */\r
     switch (PlayersModel::GetInstance()->GetPlayerModel()) {\r
         case LOOP:\r
             playersView->PlayerModelButtonSetSrc(PLAYER_PLAYERSMODEL_LOOP); // 循环\r
@@ -1199,6 +1233,20 @@ void PlayerOnDragListener::OnDragChangMusicPlayerBTConnectFailedView(const DragE
         X_DRAG_FLAG = true;\r
     }\r
 }\r
+// 从音乐提示视图回到音乐主视图\r
+void PlayerOnDragListener::OnDragChangMusicPlayerTipView(const DragEvent& event)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnDragChangMusicPlayerTipView");\r
+    if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && X_DRAG_FLAG) {\r
+        PlayersView *playersView = PlayersView::GetInstance();\r
+        if (playersView == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playersView GetInstance fail");\r
+            return;\r
+        }\r
+        playersView->ChangeView(PlayersView::MUSIC_PLAYER_TIP_VIEW, PlayersView::MAIN_MUSICPLAYER_VIEW);\r
+        X_DRAG_FLAG = true;\r
+    }\r
+}\r
 void PlayerOnDragListener::DropEarPhoneView(const DragEvent& event)\r
 {\r
     bool ret = BluetoothModel::GetInstance()->IsTagReturnToDeviceListView();\r
@@ -1296,6 +1344,10 @@ bool PlayerOnDragListener::OnDragEnd(UIView& view, const DragEvent& event)
         OnDragChangMusicPlayerBTConnectFailedView(event);\r
         return false;\r
     }\r
+    else if (strcmp(view.GetViewId(), MUISC_PLAYER_TIP_VIEW) == 0) {\r
+        OnDragChangMusicPlayerTipView(event);\r
+        return false;\r
+    }\r
     return true;\r
 }\r
 \r
index 912de71..19709e5 100644 (file)
@@ -1274,6 +1274,7 @@ namespace OHOS
         {PlayersView::MUSIC_BLUETOOTH_DISCONN_VIEW, &PlayersView::ChangeToMusicBluetoothDisConnectView},\r
         {PlayersView::MUSIC_BT_CONNECTFAILED_VIEW, &PlayersView::ChangeToMusicBluetoothConnectFailedView},\r
         {PlayersView::MUISC_CONNECTING, &PlayersView::ChangeToMusicConnectingView},\r
+        {PlayersView::MUSIC_PLAYER_TIP_VIEW, &PlayersView::ChangeToMusicPlayerTipView},\r
     };\r
 \r
     /*根据传入的 interface 值,在 ViewMapper 数组中查找匹配的 viewId*/\r
@@ -1536,4 +1537,27 @@ namespace OHOS
         PlayersModel::GetInstance()->PlayerMusic_StartTimer();\r
         return true;\r
     }\r
+\r
+    bool PlayersView::ChangeToMusicPlayerTipView(int16_t thisView)\r
+    {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::ChangeToMusicPlayerTipView");\r
+        if (group[thisView] == nullptr)\r
+        {\r
+            musicPlayerTipView = new MusicPlayerTipView();\r
+            if (musicPlayerTipView == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "new playerListDelSongView fail");\r
+                return false;\r
+            }\r
+            UIViewGroup *groupview = musicPlayerTipView->CreateMusicPlayerTipView();\r
+            if (groupview == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "new group[%d] fail", thisView);\r
+                return false;\r
+            }\r
+            group[thisView] = groupview;\r
+            Add(group[thisView]);\r
+        }\r
+        return true;\r
+    }\r
 }\r