罗明文
1 天以前 aa512ff5fc428fbee046d6bc0761c3675023769e
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
package com.dollearn.student.ui.home
 
import android.os.Handler
import android.os.Looper
import android.os.Message
import android.util.Log
import androidx.core.os.bundleOf
import cn.sinata.xldutils.fragment.BaseFragment
import cn.sinata.xldutils.gone
import cn.sinata.xldutils.visible
import com.dollearn.student.R
import com.dollearn.student.utils.AudioUtils
import com.dollearn.student.utils.extention.clickDelay
import kotlinx.android.synthetic.main.fragmetn_remember.*
 
class RememberFragment:BaseFragment(), AudioUtils.OnAudioStatusUpdateListener {
    override fun contentViewId() = R.layout.fragmetn_remember
 
    var handler:Handler? = null
 
    private val index by lazy { arguments?.getInt("index")?:0 }
    private val data by lazy {
        (requireActivity() as ListenStoryActivity).data
    }
 
    private val PLAY_VOICE = 1
    val player by lazy { AudioUtils() }
 
    var playing = false //播放中,不能有任何操作
    var listened = false //是否已播放
 
    override fun onFirstVisibleToUser() {
        player.setOnAudioStatusUpdateListener(this)
        player.stopPlayMusic()
        handler = object : Handler(Looper.getMainLooper()){
            override fun handleMessage(msg: Message) {
                super.handleMessage(msg)
                when(msg.what){
                    PLAY_VOICE->{
                        if (!playing&&isAdded)
                            player.startPlayMusic(requireContext(),data!!.storyList[index].correct)
                    }
                }
            }
        }
        data?.storyList?.get(index)?.apply {
            iv_1.setImageURI(img)
        }
        recover()
        setOnClick()
    }
 
    private fun setOnClick() {
        cl_voice.clickDelay {
            if (playing)
                return@clickDelay
            handler?.sendEmptyMessage(PLAY_VOICE)
        }
    }
 
    /**
     * 重置
     */
    fun recover() {
        handler?.sendEmptyMessageDelayed(PLAY_VOICE,2000)
    }
 
    companion object{
        /**
         * @param index 题组号
         */
        fun getInstance(index:Int):RememberFragment{
            val listenFragment = RememberFragment()
            listenFragment.arguments = bundleOf("index" to index)
            return listenFragment
        }
    }
 
    override fun onUpdate(db: Double, time: Long) {
    }
 
    override fun onStop(filePath: String?) {
    }
 
    override fun onStartPlay() {
        playing = true
        iv1.gone()
        iv2.gone()
        iv_playing.visible()
    }
 
    override fun onFinishPlay() {
        playing = false
        iv1.visible()
        iv2.visible()
        iv_playing.gone()
        listened = true
    }
 
    override fun onPause() {
        super.onPause()
        player.stopPlayMusic()
    }
}