From b8d8f9b855fdd453d06d78d2565f091db208ec8e Mon Sep 17 00:00:00 2001
From: lmw <125975490@qq.com>
Date: 星期二, 26 十一月 2024 19:30:59 +0800
Subject: [PATCH] 支付

---
 app/src/main/java/com/sinata/xqmuse/MainActivity.kt |   76 +++++++++++++++++++++++++++++--------
 1 files changed, 59 insertions(+), 17 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..f9365a9 100644
--- a/app/src/main/java/com/sinata/xqmuse/MainActivity.kt
+++ b/app/src/main/java/com/sinata/xqmuse/MainActivity.kt
@@ -1,10 +1,13 @@
 package com.sinata.xqmuse
 
+import android.annotation.SuppressLint
 import android.content.Intent
 import android.os.Handler
 import android.os.Looper
 import android.os.Message
+import android.provider.Settings
 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 +33,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 +67,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 +101,7 @@
                 thinkHandler?.removeMessages(MSG_PROGRESS)
                 saveThinkRecord()
             }
+            (fragments[0] as HomeFragment).refreshTodayPlayingState()
         }
     }
 
@@ -106,7 +114,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 +217,7 @@
             player_play.setImageResource(R.mipmap.player_pause)
             thinkHandler?.sendEmptyMessage(MSG_PROGRESS)
             startTime = System.currentTimeMillis()  //记录开始冥想的时间
+            (fragments[0] as HomeFragment).refreshTodayPlayingState() //对比当前音频是否是每日疗愈
         }
     }
 
@@ -220,20 +229,25 @@
         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()
+        }
     }
 
     /**
      * 保存冥想记录
      */
     private fun saveThinkRecord() {
-        if (voice == null||startTime == 0L)
+        if (voice == null||startTime == 0L||SPUtils.instance().getString(Const.User.TOKEN).isNullOrEmpty())
             return
         val time = ((System.currentTimeMillis() - startTime) / 1000).toInt()
         startTime = 0L
@@ -297,7 +311,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 +320,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,18 +357,19 @@
         }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)
         }else if(e.code == Const.EventCode.APP_FOREGROUND){
-            bgPlayer?.resume()
+            if (voice==null)
+                bgPlayer?.resume()
         }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,23 +388,35 @@
             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)
+            thinkHandler?.sendEmptyMessage(MSG_COUNTDOWN)
         }
     }
 
+    @Subscribe
+    fun onIntEvent(e:IntEvent){
+        if (e.code == Const.EventCode.THINK_SEEK_PROGRESS){
+            thinkBgPlayer?.seekTo(e.i)
+            player_play.callOnClick()
+        }
+    }
+
+    @SuppressLint("HardwareIds")
     private fun checkAnswer() {
         val answer = SPUtils.instance().getString(Const.User.ANSWER)
         if (!answer.isNullOrEmpty()){ //已登录并且有答案
-            HttpManager.saveUserAnswers(Gson().fromJson(answer, ReqAnswer::class.java)).request(this,false,success = { _, _->
+            val reqAnswer = Gson().fromJson(answer, ReqAnswer::class.java)
+            reqAnswer?.device = Settings.Secure.getString(contentResolver, Settings.Secure.ANDROID_ID)
+            HttpManager.saveUserAnswers(reqAnswer).request(this,false,success = { _, _->
                 SPUtils.instance().put(Const.User.ANSWER,"").apply()
                 Log.e(Const.Tag,"私人定制已保存")
                 (fragments[0] as HomeFragment).getPrivacy()
@@ -407,6 +443,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 +458,7 @@
 
     override fun onDestroy() {
         super.onDestroy()
-        bgPlayer?.stopPlayMusic()
+        bgPlayer?.stopPlayMusic(false)
         EventBus.getDefault().unregister(this)
     }
 

--
Gitblit v1.7.1