From 610a2aedd505bb4d8fb29f0bc6741ced74218bb0 Mon Sep 17 00:00:00 2001
From: lmw <125975490@qq.com>
Date: 星期二, 12 十一月 2024 13:46:37 +0800
Subject: [PATCH] fix bugs

---
 app/src/main/java/com/sinata/xqmuse/MainActivity.kt |   62 ++++++++++++++++++++++++------
 1 files changed, 49 insertions(+), 13 deletions(-)

diff --git a/app/src/main/java/com/sinata/xqmuse/MainActivity.kt b/app/src/main/java/com/sinata/xqmuse/MainActivity.kt
index d32c6a6..1bd9cc8 100644
--- a/app/src/main/java/com/sinata/xqmuse/MainActivity.kt
+++ b/app/src/main/java/com/sinata/xqmuse/MainActivity.kt
@@ -5,6 +5,7 @@
 import android.os.Looper
 import android.os.Message
 import android.util.Log
+import android.view.View
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.FragmentPagerAdapter
 import cn.sinata.xldutils.gone
@@ -30,6 +31,7 @@
 import com.sinata.xqmuse.utils.AudioUtils
 import com.sinata.xqmuse.utils.Const
 import com.sinata.xqmuse.utils.event.EmptyEvent
+import com.sinata.xqmuse.utils.event.IntEvent
 import kotlinx.android.synthetic.main.activity_main.*
 import org.greenrobot.eventbus.EventBus
 import org.greenrobot.eventbus.Subscribe
@@ -63,6 +65,9 @@
 
     private var startTime = 0L //开始疗愈的时间戳
 
+    var hasTreeFirstShow = false //此字段用来判断 树苗的首次弹窗是否已经触发,和isFirst字段配合使用
+    var isBGMChanged = false //此字段用来判断 在疗愈播放中,修改了背景音乐,在疗愈结束后 需要更新BGM音源
+
     override fun initClick() {
         player_close.setOnClickListener {
             TipDialog.show(supportFragmentManager,"是否关闭当前音频?",object :TipDialog.OnClickCallback{
@@ -94,6 +99,7 @@
                 thinkHandler?.removeMessages(MSG_PROGRESS)
                 saveThinkRecord()
             }
+            (fragments[0] as HomeFragment).refreshTodayPlayingState()
         }
     }
 
@@ -106,7 +112,7 @@
         if (!intent.getStringExtra("code").isNullOrEmpty()){
             startActivity<ShareActivity>("code" to intent.getStringExtra("code"))
         }
-        if (isFirst) //解决首次启动eventbus注册慢的问题
+        if (isFirst) //解决首次安装启动eventbus注册慢的问题
             startActivity<GuideActivity>()
 
         thinkHandler = object :Handler(Looper.myLooper()!!){
@@ -209,6 +215,7 @@
             player_play.setImageResource(R.mipmap.player_pause)
             thinkHandler?.sendEmptyMessage(MSG_PROGRESS)
             startTime = System.currentTimeMillis()  //记录开始冥想的时间
+            (fragments[0] as HomeFragment).refreshTodayPlayingState() //对比当前音频是否是每日疗愈
         }
     }
 
@@ -220,13 +227,18 @@
         voice = null
         index = 0
         finishTime = 0L
-        thinkBgPlayer?.stopPlayMusic()
-        thinkPlayer?.stopPlayMusic()
+        thinkBgPlayer?.stopPlayMusic(true)
+        thinkPlayer?.stopPlayMusic(true)
         playing = false
         thinkHandler?.removeMessages(0)
         cl_player.gone()
-        if (JkApplication.isForeground)
-            bgPlayer?.resume()
+        (fragments[0] as HomeFragment).refreshTodayPlayingState() //对比当前音频是否是每日疗愈
+        if (JkApplication.isForeground){
+            if (isBGMChanged) //BGM已经被切换,重新播放新BGM
+                startBgm()
+            else //BGM未改变,直接续播
+                bgPlayer?.resume()
+        }
     }
 
     /**
@@ -297,7 +309,7 @@
     }
 
     override fun onTabSelect(position: Int) {
-        if (position !=0 &&position !=3 && SPUtils.instance().getString(Const.User.TOKEN).isNullOrEmpty()){
+        if (position == 4 && SPUtils.instance().getString(Const.User.TOKEN).isNullOrEmpty()){
             toast("请先登录")
             startActivity<LoginActivity>()
             tab_bar.currentTab = 0
@@ -306,6 +318,15 @@
         view_pager.currentItem = position
         if (position == 2){
             (fragments[2] as TreeFragment).getTree()
+            if (cl_player.visibility == View.VISIBLE){
+                cl_player.alpha = 0f
+                cl_player.gone()
+            }
+        }else{
+            if (cl_player.alpha == 0f){
+                cl_player.visible()
+                cl_player.alpha = 1f
+            }
         }
         if (position == 4){
             (fragments[4] as MineFragment).queryUnread()
@@ -334,9 +355,6 @@
         }else if (e.code == Const.EventCode.SWITCH_COURSE){
             tab_bar.currentTab = 1
             onTabSelect(1)
-        }else if(e.code == Const.EventCode.SWITCH_DISCOVERY){
-            tab_bar.currentTab = 2
-            onTabSelect(2)
         }else if(e.code == Const.EventCode.CHANGE_EXPLORE){
             tab_bar.currentTab = 3
             onTabSelect(3)
@@ -345,7 +363,10 @@
         }else if(e.code == Const.EventCode.APP_BACKGROUND){
             bgPlayer?.pause()
         }else if(e.code == Const.EventCode.CHANGE_BGM){
-            startBgm()
+            if (voice == null)
+                startBgm()
+            else
+                isBGMChanged = true //正在播放疗愈,无法立即切换背景音乐
             (fragments[0] as HomeFragment).changeBg()
         }else if(e.code == Const.EventCode.START_THINK){
             startThink()
@@ -364,16 +385,25 @@
             thinkPlayer?.pause()
         }else if(e.code == Const.EventCode.FINISH_GUIDE_AUDIO){
             inGuide = false
-            guidePlayer?.stopPlayMusic()
-            bgPlayer?.resume()
+            guidePlayer?.stopPlayMusic(false)
             if (voice!=null&& playing){
                 thinkBgPlayer?.resume()
                 thinkPlayer?.resume()
             }
+            if (voice == null)
+                bgPlayer?.resume()
         }else if(e.code == Const.EventCode.REFRESH_PRIVATE){ //重新答题后,刷新私人定制
             (fragments[0] as HomeFragment).getPrivacy()
         }else if(e.code == Const.EventCode.THINK_TIMER){ //开启倒计时
             thinkHandler?.sendEmptyMessage(1)
+        }
+    }
+
+    @Subscribe
+    fun onIntEvent(e:IntEvent){
+        if (e.code == Const.EventCode.THINK_SEEK_PROGRESS){
+            thinkBgPlayer?.seekTo(e.i)
+            player_play.callOnClick()
         }
     }
 
@@ -407,6 +437,12 @@
         } else if (view_pager.currentItem == 2){
             (fragments[2] as TreeFragment).getTree()
         }
+        if (isFirst&&!hasTreeFirstShow&&!SPUtils.instance().getString(Const.User.ANSWER).isNullOrEmpty()){ //如果是第一次安装并且还没显示树苗打卡引导并且答完题了 就去树苗引导
+            tab_bar.currentTab = 2
+            onTabSelect(2)
+            (fragments[2] as TreeFragment).showFirst()
+            hasTreeFirstShow = true
+        }
     }
 
     override fun onPause() {
@@ -416,7 +452,7 @@
 
     override fun onDestroy() {
         super.onDestroy()
-        bgPlayer?.stopPlayMusic()
+        bgPlayer?.stopPlayMusic(false)
         EventBus.getDefault().unregister(this)
     }
 

--
Gitblit v1.7.1