lmw
2025-02-06 ab2842d427504c531c79ddb9c5a9ef1df7833014
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
package com.sinata.xqmuse.ui
 
import android.widget.SeekBar
import cn.sinata.xldutils.gone
import cn.sinata.xldutils.utils.SPUtils
import com.sinata.xqmuse.MainActivity
import com.sinata.xqmuse.R
import com.sinata.xqmuse.network.HttpManager
import com.sinata.xqmuse.network.entity.BGMBean
import com.sinata.xqmuse.network.request
import com.sinata.xqmuse.ui.home.adapter.BgmBannerAdapter
import com.sinata.xqmuse.utils.AudioUtils
import com.sinata.xqmuse.utils.Const
import com.sinata.xqmuse.utils.event.EmptyEvent
import kotlinx.android.synthetic.main.activity_bgm.*
import org.greenrobot.eventbus.EventBus
import org.jetbrains.anko.startActivity
import org.jetbrains.anko.toast
 
class BGMSettingActivity :TransparentStatusBarActivity(), AudioUtils.OnAudioStatusUpdateListener {
    override fun setContentView() = R.layout.activity_bgm
 
    private val list = arrayListOf<BGMBean>()
    private val cardBannerAdapter by lazy { BgmBannerAdapter(list,this) }
    private val fromPrivacy by lazy { intent.getBooleanExtra("fromPrivacy",false) } //从私人定制过来,设置完成需要发送停止引导的事件
    private val player by lazy { AudioUtils() }
 
    override fun initClick() {
        iv_back.setOnClickListener { finish() }
        iv_silent.setOnClickListener {
            sb_voice.progress = 0
        }
        banner_landscape.setOnBannerListener { _, position ->
            cardBannerAdapter.playPosition = position
            cardBannerAdapter.notifyDataSetChanged()
            player.startPlayMusic(this,list[position].audioFile)
            if (banner_landscape.currentItem != position){
                banner_landscape.setCurrentItem(position,true)
            }
        }
        sb_voice.setOnSeekBarChangeListener(object :SeekBar.OnSeekBarChangeListener{
            override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
                player.setVolume(progress.toFloat()/100)
            }
 
            override fun onStartTrackingTouch(seekBar: SeekBar?) {
            }
 
            override fun onStopTrackingTouch(seekBar: SeekBar?) {
            }
        })
 
        tv_action.setOnClickListener {
            if (list.isNotEmpty()){ //存bgm和bg
                tv_action.isEnabled = false
                HttpManager.saveUserHomeBackgroundMusic(list[banner_landscape.currentItem].id).request(this,success = {_,_->
                    //存音量
                    SPUtils.instance().put(Const.User.VOLUME,sb_voice.progress).apply()
                    SPUtils.instance().put(Const.User.BG,list[banner_landscape.currentItem].imageUrl)
                        .put(Const.User.BGM,list[banner_landscape.currentItem].audioFile).apply()
                    EventBus.getDefault().post(EmptyEvent(Const.EventCode.CHANGE_BGM))
                    toast("保存成功")
                    startActivity<MainActivity>()
                }){_,_->
                    tv_action.isEnabled = true
                }
            }
            if (fromPrivacy)
                EventBus.getDefault().post(EmptyEvent(Const.EventCode.FINISH_GUIDE_AUDIO))
        }
    }
 
    override fun initView() {
        titleBar.gone()
        banner_landscape.adapter = cardBannerAdapter
        banner_landscape.setBannerGalleryEffect(110,12,0.85f)
        player.setOnAudioStatusUpdateListener(this)
        sb_voice.progress = SPUtils.instance().getInt(Const.User.VOLUME,50)
        player.setVolume(sb_voice.progress.toFloat()/100)
        getData()
    }
 
    private fun getData(){
        HttpManager.getHomeBackgroun().request(this){_,data->
            list.clear()
            list.addAll(data?: arrayListOf())
            val bgm = SPUtils.instance().getString(Const.User.BGM)
            val indexOf = list.map { it.audioFile }.indexOf(bgm)
            if (indexOf>=0){
                banner_landscape.currentItem = indexOf
            }else if (list.size>2){
                banner_landscape.currentItem = 1
            }
            cardBannerAdapter.notifyDataSetChanged()
        }
    }
 
    override fun onUpdate(db: Double, time: Long) {
 
    }
 
    override fun onStop(filePath: String?) {
    }
 
    override fun onStartPlay() {
    }
 
    override fun onFinishPlay() {
        val p = cardBannerAdapter.playPosition
        cardBannerAdapter.playPosition = -1
        cardBannerAdapter.notifyItemChanged(p)
    }
 
    override fun onGetDuration(duration: Int) {
    }
 
    override fun onPause() {
        super.onPause()
        player.stopPlayMusic(true)
    }
}