package com.sinata.xqmuse.ui.course
|
|
import android.util.Log
|
import androidx.recyclerview.widget.LinearLayoutManager
|
import cn.sinata.xldutils.gone
|
import cn.sinata.xldutils.visible
|
import com.sinata.xqmuse.R
|
import com.sinata.xqmuse.network.HttpManager
|
import com.sinata.xqmuse.network.entity.Chapter
|
import com.sinata.xqmuse.network.request
|
import com.sinata.xqmuse.ui.TransparentStatusBarActivity
|
import com.sinata.xqmuse.ui.course.adapter.ChapterAdapter
|
import com.sinata.xqmuse.utils.glide.GlideUtil
|
import kotlinx.android.synthetic.main.activity_study.*
|
import org.jetbrains.anko.toast
|
import xyz.doikki.videocontroller.StandardVideoController
|
import xyz.doikki.videoplayer.player.BaseVideoView
|
|
class StudyActivity : TransparentStatusBarActivity(), BaseVideoView.OnStateChangeListener {
|
override fun setContentView() = R.layout.activity_study
|
|
private val id by lazy { intent.getStringExtra("id") } //章节id
|
private val chapters = arrayListOf<Chapter>()
|
private val adapter = ChapterAdapter(chapters)
|
private var seekTo = 0 //续播进度
|
|
override fun initClick() {
|
iv_back.setOnClickListener { finish() }
|
|
ivPlay.setOnClickListener {
|
ivPlay.gone()
|
mVideoView.start()
|
}
|
|
adapter.setOnItemClickListener { view, position ->
|
saveProgress(2,(mVideoView.currentPosition/1000).toInt())
|
adapter.current = position
|
startPlay()
|
adapter.notifyDataSetChanged()
|
}
|
}
|
|
override fun initView() {
|
titleBar.gone()
|
adapter.current = intent.getIntExtra("index",-1)
|
mVideoView.setOnStateChangeListener(this)
|
val controller = StandardVideoController(this)
|
controller.addDefaultControlComponent("课程详情", false)
|
mVideoView.setVideoController(controller) //设置控制器
|
rv_chapter.layoutManager = LinearLayoutManager(this)
|
rv_chapter.adapter = adapter
|
getData()
|
}
|
|
private fun getData(){
|
HttpManager.studyPageByChapterId(id?:"").request(this){_,data->
|
chapters.clear()
|
chapters.addAll(data?: arrayListOf())
|
adapter.notifyDataSetChanged()
|
if (adapter.current == -1){
|
val indexOf = chapters.indexOf(chapters.firstOrNull { it.isOver == 1 })
|
adapter.current = if (indexOf == chapters.lastIndex) 0 else indexOf+1
|
}
|
Log.e("MMP","续接章节:{${adapter.current}}")
|
startPlay()
|
}
|
}
|
|
private fun startPlay() {
|
mVideoView.release()
|
mVideoView.setUrl(chapters[adapter.current].videoUrl) //设置视频地址
|
GlideUtil.load(this, chapters[adapter.current].videoUrl, iv_cover, 0)
|
mVideoView.start()
|
seekTo = chapters[adapter.current].secondLook
|
}
|
|
override fun onPlayerStateChanged(playerState: Int) {
|
|
}
|
|
override fun onPlayStateChanged(playState: Int) {
|
when(playState){
|
BaseVideoView.STATE_PLAYING ->{
|
iv_cover.gone()
|
ivPlay.gone()
|
if (seekTo!=0){
|
mVideoView.seekTo(1000L*seekTo)
|
seekTo = 0
|
}
|
}
|
BaseVideoView.STATE_PAUSED ->{
|
saveProgress(2,(mVideoView.currentPosition/1000).toInt())
|
}
|
BaseVideoView.STATE_PLAYBACK_COMPLETED ->{
|
chapters[adapter.current].isOver = 1
|
saveProgress(1,0)
|
iv_cover.visible()
|
ivPlay.visible()
|
// if (adapter.current == chapters.lastIndex){ //测试外包:不自动播放下一章节
|
// iv_cover.visible()
|
// ivPlay.visible()
|
// }else{
|
// adapter.current++
|
// startPlay()
|
// }
|
adapter.notifyDataSetChanged()
|
}
|
|
}
|
}
|
|
private fun saveProgress(isOver:Int,second:Int){
|
chapters[adapter.current].secondLook = second
|
HttpManager.saveCourseStudyHistory(chapters[adapter.current].id,isOver,second).request(this,false,success = {_,_->
|
|
}){_,_->
|
toast("记录失败")
|
}
|
}
|
|
override fun onPause() {
|
super.onPause()
|
mVideoView.pause()
|
}
|
|
override fun onResume() {
|
super.onResume()
|
mVideoView.resume()
|
}
|
|
override fun onDestroy() {
|
super.onDestroy()
|
mVideoView.release()
|
}
|
|
|
override fun onBackPressed() {
|
if (!mVideoView.onBackPressed()) {
|
super.onBackPressed()
|
}
|
}
|
}
|