手机音乐和手表音乐切换添加动画
authorluozheng <1732036298@qq.com>
Tue, 3 Sep 2024 08:18:41 +0000 (16:18 +0800)
committerluozheng <1732036298@qq.com>
Tue, 3 Sep 2024 08:18:41 +0000 (16:18 +0800)
code/sdk/application/wearable/fd230app/nativeui/player/src/MusicPlayerSourceView.cpp
code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersModel.cpp
code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersView.cpp

index 1bef02a..3935378 100644 (file)
@@ -61,24 +61,31 @@ namespace OHOS
         if (button == phoneLableButton)                                               // 若点击的是手机音乐按钮\r
         {\r
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnClick phoneLableButton");\r
-            PlayersModel::GetInstance()->SetMusicSource(true);\r
-            UpdateBluetoothHeadSetViewIsVisible();\r
+            if (!PlayersModel::GetInstance()->GetMusicSource()) // 切换到手机音乐\r
+            {\r
+                PlayersModel::GetInstance()->SetMusicSource(true);\r
+                UpdateBluetoothHeadSetViewIsVisible();\r
 \r
-            // 1.a2dp未连接,向手机发起a2dp连接\r
-            // 如果蓝牙没连接直接是跳转到蓝牙连接失败视图,连接了就有一个主动去连手机的a2dp过程,5秒超市\r
+                // 1.a2dp未连接,向手机发起a2dp连接\r
+                // 如果蓝牙没连接直接是跳转到蓝牙连接失败视图,连接了就有一个主动去连手机的a2dp过程,5秒超市\r
 \r
-            if (!phonebluetoothcon)\r
-            {\r
-                playersView->ChangeView(PlayersView::MUSIC_SOURCE_VIEW, PlayersView::MUSIC_BLUETOOTH_DISCONN_VIEW);\r
-            }\r
-            else if (phonebluetoothcon && !a2dp) // 如果手机蓝牙已连接但手表与手机的a2dp未连接手表主动去连接a2dp\r
-            {\r
-                /* -------------------------------------------------------------------------- */\r
-                uapi_a2dp_snk_connect(); // 切换通道主动连接atdp\r
-                /* -------------------------------------------------------------------------- */\r
-                playersView->ChangeView(PlayersView::MUSIC_SOURCE_VIEW, PlayersView::MUISC_CONNECTING);\r
+                if (!phonebluetoothcon)\r
+                {\r
+                    playersView->ChangeView(PlayersView::MUSIC_SOURCE_VIEW, PlayersView::MUSIC_BLUETOOTH_DISCONN_VIEW);\r
+                }\r
+                else if (phonebluetoothcon && !a2dp) // 如果手机蓝牙已连接但手表与手机的a2dp未连接手表主动去连接a2dp\r
+                {\r
+                    /* -------------------------------------------------------------------------- */\r
+                    uapi_a2dp_snk_connect(); // 切换通道主动连接atdp\r
+                    /* -------------------------------------------------------------------------- */\r
+                    playersView->ChangeView(PlayersView::MUSIC_SOURCE_VIEW, PlayersView::MUISC_CONNECTING);\r
+                }\r
+                else if (phonebluetoothcon && a2dp)\r
+                {\r
+                    playersView->ChangeView(PlayersView::MUSIC_SOURCE_VIEW, PlayersView::MAIN_MUSICPLAYER_VIEW);\r
+                }\r
             }\r
-            else if (phonebluetoothcon && a2dp)\r
+            else // 如果已经选择了手机音乐,再次点击就回到 “音乐播放器主视图”\r
             {\r
                 playersView->ChangeView(PlayersView::MUSIC_SOURCE_VIEW, PlayersView::MAIN_MUSICPLAYER_VIEW);\r
             }\r
@@ -86,14 +93,22 @@ namespace OHOS
         else if (button == watchLableButton) // 若点击的是手表音乐按钮\r
         {\r
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnClick watchLableButton");\r
-            PlayersModel::GetInstance()->SetMusicSource(false);\r
-            UpdateBluetoothHeadSetViewIsVisible();\r
-            /* -------------------------------------------------------------------------- */\r
-            if (a2dp)\r
+            if (PlayersModel::GetInstance()->GetMusicSource()) // 切换到手表音乐\r
             {\r
-                uapi_a2dp_snk_disconnect(); // 切换通道主动断开atdp\r
+                PlayersModel::GetInstance()->SetMusicSource(false);\r
+                UpdateBluetoothHeadSetViewIsVisible();\r
+                /* -------------------------------------------------------------------------- */\r
+                if (a2dp)\r
+                {\r
+                    uapi_a2dp_snk_disconnect(); // 切换通道主动断开atdp\r
+                }\r
+                /* -------------------------------------------------------------------------- */\r
+                playersView->ChangeView(PlayersView::MUSIC_SOURCE_VIEW, PlayersView::MUISC_CONNECTING);\r
+            }\r
+            else // 如果已经选择了手表音乐,再次点击就回到 “音乐播放器主视图”\r
+            {\r
+                playersView->ChangeView(PlayersView::MUSIC_SOURCE_VIEW, PlayersView::MAIN_MUSICPLAYER_VIEW);\r
             }\r
-            /* -------------------------------------------------------------------------- */\r
         }\r
         else if (button == bluetoothHeadsetLableButton)\r
         {\r
@@ -430,6 +445,10 @@ namespace OHOS
         scrollView->SetPosition(0, 0, 466, 466);\r
         scrollView->SetScrollBlankSize(75);\r
         scrollView->SetReboundSize(35);\r
+        scrollView->SetThrowDrag(true);\r
+        scrollView->SetMaxScrollDistance(1000);\r
+        scrollView->SetDragACCLevel(5);\r
+        scrollView->SetSwipeACCLevel(800); /*设置手指抬起屏幕后的补偿距离。*/\r
         scrollView->SetDirection(UIScrollView::VERTICAL);\r
         group->Add(scrollView);\r
 \r
@@ -459,7 +478,7 @@ namespace OHOS
 \r
     void MusicPlayerSourceView::UpdateBluetoothHeadSetViewIsVisible(void)\r
     {\r
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MusicPlayerSourceView::CreateMusicPlayerSourceViewImage");\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MusicPlayerSourceView::UpdateBluetoothHeadSetViewIsVisible");\r
         bool value = PlayersModel::GetInstance()->GetMusicSource();\r
         if (bluetoothHeadsetLabel && bluetoothHeadsetImage && bluetoothHeadsetLableButton && bluetoothHeadsetConnectState)\r
         {\r
@@ -484,6 +503,7 @@ namespace OHOS
         scrollView->Invalidate();\r
     }\r
 \r
+    /*更新蓝牙耳机连接状态*/\r
     void MusicPlayerSourceView::UpdateBluetoothHeadsetConnectLabel(void)\r
     {\r
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MusicPlayerSourceView::UpdateBluetoothHeadsetConnectLabel");\r
index 41cffdb..66bf5fe 100644 (file)
@@ -819,16 +819,32 @@ bool PlayersModel::GetCurrentMusicIsPlaying(void)
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playersView nullptr err");
             return;
         }
-        if(g_PlayerTimes < 0) /*5秒超时*/
-        {
-            playersView->ChangeView(PlayersView::MUISC_CONNECTING, PlayersView::MUSIC_BT_CONNECTFAILED_VIEW);
+        bool type = PlayersModel::GetInstance()->GetMusicSource();
+        if(type) {
+            if(g_PlayerTimes < 0) /*5秒超时*/
+            {
+                playersView->ChangeView(PlayersView::MUISC_CONNECTING, PlayersView::MUSIC_BT_CONNECTFAILED_VIEW);
+            }
+            else
+            {
+                if(g_PlayerTimes < 2) /*3秒切换时间*/
+                {
+                    bool a2dp = uapi_a2dp_snk_get_device_connect_state();// 获取a2dp连接状态
+                    if(a2dp)
+                    {
+                        playersView->ChangeView(PlayersView::MUISC_CONNECTING, PlayersView::MUSIC_SOURCE_VIEW);
+                    }
+                }
+            }
         }
-        else
-        {
-            bool a2dp = uapi_a2dp_snk_get_device_connect_state();// 获取a2dp连接状态
-            if(a2dp)
+        else {
+            if(g_PlayerTimes < 2) /*3秒切换时间*/
             {
-                playersView->ChangeView(PlayersView::MUISC_CONNECTING, PlayersView::MAIN_MUSICPLAYER_VIEW);
+                bool a2dp = uapi_a2dp_snk_get_device_connect_state();// 获取a2dp连接状态
+                if(!a2dp)
+                {
+                    playersView->ChangeView(PlayersView::MUISC_CONNECTING, PlayersView::MUSIC_SOURCE_VIEW);
+                }
             }
         }
         return;
index f713060..5c1fe68 100644 (file)
@@ -855,7 +855,7 @@ namespace OHOS
             soundButton->SetTouchable(touchableState);\r
             playerModelButton->SetTouchable(touchableState); // 如果音乐来源为手机音乐,播放顺序按钮就不可用\r
             /* -------------------------------------------------------------------------- */\r
-            if (musicSourceType) //如果切換到手机音乐,且当前在放歌,就停止音乐\r
+            if (musicSourceType) // 如果切換到手机音乐,且当前在放歌,就停止音乐\r
             {\r
                 /*暂停音乐*/\r
                 uint8_t state = GetPlayerButtonState();\r
@@ -987,6 +987,10 @@ namespace OHOS
             MusicSourceLabelSetText(STR_WATCH_MUSIC); /*手表音乐*/\r
             SetMusicPlayerButtonIsTouchable(false);\r
         }\r
+        if (musicPlayerSourceView)\r
+        {\r
+            musicPlayerSourceView->UpdateBluetoothHeadSetViewIsVisible();\r
+        }\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UpdatePlayerView over!!");\r
     }\r
 \r