lmw
2025-02-28 3dc12ef829d9bcd6a2a85a7456eb24f304c15c66
app/src/main/java/com/sinata/xqmuse/MainActivity.kt
@@ -1,9 +1,11 @@
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
@@ -47,7 +49,7 @@
    var teacherVideoView:VideoView? = null
    private var bgPlayer:AudioUtils? = null//背景音乐播放器
    private var thinkBgPlayer:AudioUtils? = null//冥想背景音播放器
    private var thinkPlayer:AudioUtils? = null//冥想背景音播放器
//    private var thinkPlayer:AudioUtils? = null//冥想背景音播放器
    private var guideAudio:String? = null
    private var guidePlayer:AudioUtils? = null//引导音频播放器
@@ -89,13 +91,13 @@
            if (playing){
                player_play.setImageResource(R.mipmap.player_pause)
                thinkBgPlayer?.resume()
                thinkPlayer?.resume()
//                thinkPlayer?.resume()
                thinkHandler?.sendEmptyMessage(MSG_PROGRESS)
                startTime = System.currentTimeMillis()
            }else{
                player_play.setImageResource(R.mipmap.player_start)
                thinkBgPlayer?.pause()
                thinkPlayer?.pause()
//                thinkPlayer?.pause()
                thinkHandler?.removeMessages(MSG_PROGRESS)
                saveThinkRecord()
            }
@@ -163,13 +165,15 @@
    }
    private fun startBgm() {
        val bgm = SPUtils.instance().getString(Const.User.BGM)
        if (!bgm.isNullOrEmpty()){
            if (bgPlayer == null)
                bgPlayer = AudioUtils()
            val volume = SPUtils.instance().getInt(Const.User.VOLUME,50)
            bgPlayer?.setVolume(volume.toFloat()/100)
            bgPlayer?.loopPlayMusic(this,bgm)
        HttpManager.getHomeBackgroundMusicByUserId().request(this){_,data->
            if (!data?.audioFile.isNullOrEmpty()){
                if (bgPlayer == null)
                    bgPlayer = AudioUtils()
                val volume = SPUtils.instance().getInt(Const.User.VOLUME,50)
                bgPlayer?.setVolume(volume.toFloat()/100)
                bgPlayer?.loopPlayMusic(this,data?.audioFile)
            }
            (fragments[0] as HomeFragment).changeBg(data?.imageUrl?:"",data?.backUrl?:"")
        }
    }
@@ -182,30 +186,11 @@
        if (voice?.meditationMusicList?.isNullOrEmpty() == false){
            if (thinkBgPlayer == null){
                thinkBgPlayer = AudioUtils()
                thinkPlayer = AudioUtils()
                thinkBgPlayer!!.setOnAudioStatusUpdateListener(this)
                thinkPlayer!!.setOnAudioStatusUpdateListener(object :AudioUtils.OnAudioStatusUpdateListener{
                    override fun onUpdate(db: Double, time: Long) {
                    }
                    override fun onStop(filePath: String?) {
                    }
                    override fun onStartPlay() {
                    }
                    override fun onFinishPlay() {
                        EventBus.getDefault().post(EmptyEvent(Const.EventCode.FINISH_THINK))
                    }
                    override fun onGetDuration(duration: Int) {
                    }
                })
            }
            val volume = SPUtils.instance().getInt(Const.User.VOLUME_THINK,50)
            thinkPlayer?.setVolume(volume.toFloat()/100)
            thinkBgPlayer?.setVolume(volume.toFloat()/100)
            thinkBgPlayer?.startPlayMusic(this, voice?.meditationMusicList?.get(index))
            thinkPlayer?.startPlayMusic(this, voice?.tutorAudioUrl)
            currentDuration = voice?.meditationSecondList?.get(index)?:0
            EventBus.getDefault().post(EmptyEvent(Const.EventCode.GOT_THINK_DURATION))
            playing = true
@@ -228,12 +213,11 @@
        index = 0
        finishTime = 0L
        thinkBgPlayer?.stopPlayMusic(true)
        thinkPlayer?.stopPlayMusic(true)
        playing = false
        thinkHandler?.removeMessages(0)
        cl_player.gone()
        (fragments[0] as HomeFragment).refreshTodayPlayingState() //对比当前音频是否是每日疗愈
        if (JkApplication.isForeground){
        if (XQApplication.isForeground){
            if (isBGMChanged) //BGM已经被切换,重新播放新BGM
                startBgm()
            else //BGM未改变,直接续播
@@ -245,7 +229,7 @@
     * 保存冥想记录
     */
    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
@@ -359,7 +343,8 @@
            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){
@@ -367,7 +352,6 @@
                startBgm()
            else
                isBGMChanged = true //正在播放疗愈,无法立即切换背景音乐
            (fragments[0] as HomeFragment).changeBg()
        }else if(e.code == Const.EventCode.START_THINK){
            startThink()
        }else if(e.code == Const.EventCode.FINISH_THINK){
@@ -376,26 +360,24 @@
            player_play.callOnClick()
        }else if(e.code == Const.EventCode.CHANGE_THINK_VOLUME){
            val v = SPUtils.instance().getInt(Const.User.VOLUME_THINK,50)
            thinkPlayer?.setVolume(v.toFloat()/100)
            thinkBgPlayer?.setVolume(v.toFloat()/100)
        }else if(e.code == Const.EventCode.START_GUIDE_AUDIO){
            inGuide = true
            startGuide()
            bgPlayer?.pause()
            thinkBgPlayer?.pause()
            thinkPlayer?.pause()
        }else if(e.code == Const.EventCode.FINISH_GUIDE_AUDIO){
            inGuide = false
            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)
        }
    }
@@ -407,10 +389,13 @@
        }
    }
    @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()
@@ -443,6 +428,11 @@
            (fragments[2] as TreeFragment).showFirst()
            hasTreeFirstShow = true
        }
        if (XQApplication.finishAnswer){
            XQApplication.finishAnswer = false
            tab_bar.currentTab = 2
            onTabSelect(2)
        }
    }
    override fun onPause() {
@@ -474,11 +464,13 @@
        }else{//顺序
            index++
            if (index>=voice?.meditationMusicList?.size?:0)//列表已播完
                index = 0
            currentDuration = voice?.meditationSecondList?.get(index)?:0
            EventBus.getDefault().post(EmptyEvent(Const.EventCode.GOT_THINK_DURATION))
            if (playing)
                thinkBgPlayer?.startPlayMusic(this, voice?.meditationMusicList?.get(index))
                EventBus.getDefault().post(EmptyEvent(Const.EventCode.FINISH_THINK))
            else{
                currentDuration = voice?.meditationSecondList?.get(index)?:0
                EventBus.getDefault().post(EmptyEvent(Const.EventCode.GOT_THINK_DURATION))
                if (playing)
                    thinkBgPlayer?.startPlayMusic(this, voice?.meditationMusicList?.get(index))
            }
        }
    }
@@ -497,7 +489,7 @@
        var voice: VoiceDetail? = null //冥想详情
        var index = 0 //当前播放序号
        var currentDuration = 0 //当前音频长度(秒)
        var currentPosition = 0 //当前音频进度(秒)
        var currentPosition = 0L //当前音频进度(毫秒)
        var finishTime = 0L //自动结束的时间戳
    }
}