| | |
| | | import android.view.View |
| | | import androidx.recyclerview.widget.GridLayoutManager |
| | | import cn.sinata.xldutils.gone |
| | | import cn.sinata.xldutils.utils.SPUtils |
| | | import cn.sinata.xldutils.utils.myToast |
| | | import cn.sinata.xldutils.visible |
| | | import com.dollearn.student.R |
| | |
| | | import com.dollearn.student.ui.TransparentStatusBarActivity |
| | | import com.dollearn.student.ui.home.adapter.GameAdapter |
| | | import com.dollearn.student.utils.AudioUtils |
| | | import com.dollearn.student.utils.Const |
| | | import com.dollearn.student.utils.interfaces.StringCallback |
| | | import kotlinx.android.synthetic.main.activity_super_listen.* |
| | | import kotlinx.android.synthetic.main.fragmetn_look_img.* |
| | |
| | | class SuperListenActivity : TransparentStatusBarActivity(), AudioUtils.OnAudioStatusUpdateListener { |
| | | override fun setContentView() = R.layout.activity_super_listen |
| | | |
| | | |
| | | private val week by lazy { |
| | | intent.getIntExtra("week",0) |
| | | } |
| | | private val season by lazy { |
| | | intent.getIntExtra("season",0) |
| | | } |
| | | private var data:GameBean? = null |
| | | private var index = 0 |
| | | private var handler:Handler? = null |
| | | var data:GameBean? = null |
| | | var index = 0 |
| | | var handler:Handler? = null |
| | | |
| | | private var difficulty = 0 //难度 |
| | | |
| | | private val TAG = "Listen====>" |
| | | val TAG = "Listen====>" |
| | | |
| | | private val list = arrayListOf<Subject>() |
| | | val list = arrayListOf<Subject>() |
| | | private val adapter = GameAdapter(list) |
| | | |
| | | private val PLAY_VOICE = 1 |
| | | private val COUNT_DOWN = 2 |
| | | val PLAY_VOICE = 1 |
| | | val COUNT_DOWN = 2 |
| | | private val STUDY_TIME = 3 |
| | | |
| | | val PLAY_RIGHT = 4 |
| | | val PLAY_ERROR = 5 |
| | | |
| | | private val errorVoice by lazy { SPUtils.instance().getString(Const.EV) } |
| | | private val rightVoice by lazy { SPUtils.instance().getString(Const.RV) } |
| | | |
| | | private var rightPlaying = false |
| | | private var errorPlaying = false |
| | | |
| | | private val player by lazy { AudioUtils() } |
| | | |
| | | private val voiceList = arrayListOf<String>() //声音按顺序播放 |
| | | val voiceList = arrayListOf<String>() //声音按顺序播放 |
| | | |
| | | private var TIME = 10 //每题答题时间 |
| | | private var countTime = 10 //倒计时计数 |
| | | private var countTime = 0 //倒计时计数 |
| | | |
| | | var totalCount = 0 //总答题次数 |
| | | var rightCount = 0 //正确答题次数 |
| | | var time = 0 //学习秒数 |
| | | |
| | | var playing = false |
| | | |
| | | var state = 0 //0:准备听题 1:听题中 2:请作答 3:结束答题 |
| | | |
| | | override fun initClick() { |
| | | adapter.setOnItemClickListener { view, position -> |
| | | Log.e(TAG,"点击图片:${list[position].name}") |
| | | Log.e(TAG,"音频position:${index}") |
| | | Log.e(TAG,"音频路径:${voiceList[index]}") |
| | | |
| | | val subject = data!!.subjectList[data!!.subjectList.map { it.correct }.indexOf(voiceList[index])] //当前音频对应题目 |
| | | Log.e(TAG,"正确答案:${subject.name}") |
| | | |
| | | totalCount++ |
| | | |
| | | handler?.removeMessages(COUNT_DOWN) //选择答案后,停止倒计时 |
| | | if (list[position].id == subject.id){ |
| | | rightCount++ |
| | | subject.completed = true |
| | | subject.right = true |
| | | handler?.sendEmptyMessage(PLAY_VOICE) |
| | | adapter.notifyItemChanged(position) |
| | | }else{ |
| | | subject.completed = true |
| | | subject.right = false |
| | | index++ |
| | | startGame() |
| | | } |
| | | } |
| | | |
| | | tv_exit.setOnClickListener { |
| | | if (tv_exit.text == "提交"){ |
| | | ResultActivity.startResult(this,0,0,0,6,totalCount,rightCount,list.filter { it.right }.sumBy { 1 },time,data!!.data.id) |
| | | ResultActivity.startResult(this,0,0,0,6,totalCount,rightCount,list.filter { it.right }.sumBy { 1 },time,data!!.data.id,difficulty) |
| | | finish() |
| | | }else |
| | | finish() |
| | | onBackPressed() |
| | | } |
| | | } |
| | | |
| | |
| | | player.startPlayMusic(this@SuperListenActivity,voiceList[index]) |
| | | } |
| | | COUNT_DOWN->{ |
| | | if (!playing){ |
| | | countTime -- |
| | | state = 2 |
| | | } |
| | | tv_tip.text = "请在${countTime}s内选择答案!" |
| | | if ( countTime == 0){ |
| | | index++ |
| | |
| | | sendEmptyMessageDelayed(COUNT_DOWN,1000) |
| | | } |
| | | } |
| | | PLAY_RIGHT->{ |
| | | rightPlaying = true |
| | | player.startPlayMusic(this@SuperListenActivity,rightVoice) |
| | | } |
| | | PLAY_ERROR->{ |
| | | errorPlaying = true |
| | | player.startPlayMusic(this@SuperListenActivity,errorVoice) |
| | | } |
| | | } |
| | | } |
| | | } |
| | | handler?.sendEmptyMessageDelayed(STUDY_TIME,1000) |
| | | } |
| | | |
| | | private fun refreshUi() { |
| | |
| | | list.shuffle() //图片随机顺序 |
| | | rv_list.adapter = adapter |
| | | Log.e(TAG,"图片打乱后顺序:${list.joinToString(",,,") { it.name }}") |
| | | |
| | | TIME = data!!.data.time.toInt() |
| | | val countdownDialog = CountdownDialog() |
| | | countdownDialog.callback = object :StringCallback{ |
| | | override fun onResult(rst: String) { |
| | |
| | | countdownDialog.show(supportFragmentManager,"timer") |
| | | } |
| | | |
| | | private fun startGame() { |
| | | fun startGame() { |
| | | if (index < voiceList.size){ |
| | | Log.e(TAG,"开始答题:index=${index}") |
| | | tv_sort.text = (index+1).toString() |
| | | handler?.removeMessages(COUNT_DOWN) |
| | | countTime = TIME //重置答题时间 |
| | | tv_tip.text = "准备听题" |
| | | state = 0 |
| | | handler?.sendEmptyMessageDelayed(PLAY_VOICE,3000) |
| | | }else{ |
| | | tv_sort.visibility = View.INVISIBLE |
| | | tv_tip.text = "" |
| | | state = 3 |
| | | tv_end.text = "已完成全部问题" |
| | | tv_exit.text = "提交" |
| | | handler?.removeMessages(STUDY_TIME) |
| | |
| | | } |
| | | |
| | | override fun onStartPlay() { |
| | | playing = true |
| | | if (errorPlaying||rightPlaying) |
| | | return |
| | | if (!data!!.subjectList[data!!.subjectList.map { it.correct }.indexOf(voiceList[index])].completed){//首次播放 |
| | | state = 1 |
| | | tv_tip.text = "请在${countTime}s内选择答案!" |
| | | handler?.sendEmptyMessageDelayed(COUNT_DOWN,1000) |
| | | } |
| | |
| | | } |
| | | |
| | | override fun onFinishPlay() { |
| | | playing = false |
| | | iv1.visible() |
| | | iv2.visible() |
| | | iv_playing.gone() |
| | |
| | | index++ |
| | | startGame() |
| | | } |
| | | if (errorPlaying) |
| | | errorPlaying = false |
| | | if (rightPlaying){ |
| | | rightPlaying = false |
| | | val subject = data!!.subjectList[data!!.subjectList.map { it.correct }.indexOf(voiceList[index])] //当前音频对应题目 |
| | | subject.completed = true |
| | | handler?.sendEmptyMessage(PLAY_VOICE) |
| | | } |
| | | } |
| | | |
| | | override fun onBackPressed() { |
| | | HttpManager.exitGameOrStory(time).request(this){_,_-> |
| | | super.onBackPressed() |
| | | } |
| | | } |
| | | |
| | | override fun onDestroy() { |
| | | super.onDestroy() |
| | | handler?.removeCallbacksAndMessages(null) |
| | | } |
| | | |
| | | override fun onPause() { |
| | | super.onPause() |
| | | player.stopPlayMusic() |
| | | } |
| | | } |