package com.yidianling.course.coursePlay import android.annotation.SuppressLint import android.text.TextUtils import android.view.ViewGroup import android.widget.RelativeLayout import com.ydl.media.audio.AudioPlayer import com.ydl.media.audio.model.Music import com.ydl.ydlcommon.view.dialog.CommonDialog import com.yidianling.common.tools.RxDeviceTool import com.yidianling.common.tools.RxNetTool import com.yidianling.course.bean.CourseExtraBean import com.yidianling.course.bean.CourseMediaBean import com.yidianling.course.listener.HPlayStatusListener import com.yidianling.course.widget.HPlayView /** * 课程播放器的item * Created by harvie on 2017/6/26 0026. */ class CoursePlayItemViewAudio : RelativeLayout, PlayViewInterface { var activity: CoursePlayActivity? = null private var courseExtra: CourseExtraBean? = null var playView: HPlayView? = null //播放列表 var playList: ArrayList<CourseMediaBean> = ArrayList() var hasEnsureNetStatus = false var currentIndex = 0 companion object { fun create(activity: CoursePlayActivity, playType: Int): PlayViewInterface { return CoursePlayItemViewAudio(activity) } } @SuppressLint("InvalidWakeLockTag") private constructor(context: CoursePlayActivity) : super(context) { playView = HPlayView(context) var width = RxDeviceTool.getScreenWidth(context) var heigth = width * 9 / 16 var layoutP = ViewGroup.LayoutParams(LayoutParams.MATCH_PARENT, heigth) playView?.layoutParams = layoutP this.addView(playView) activity = context initView() } fun initView() { setListener() } override fun onResume() { } override fun onPause() { } override fun onNewIntent() { } //设置监听事件 fun setListener() { playView?.listener = object : HPlayStatusListener { override fun isCanPlay(data: Music?): Boolean { var canPlay = false //非试听 if (courseExtra!!.isBuy) { //已购买 canPlay = true } else { //未购买,判断是否是试听课程 //即未购买,也不是试听,弹窗提示 if (activity == null) return false CommonDialog(activity) .setMessage("\n购买课程,获取完整课程内容\n") .setLeftOnclick("放弃") { } .setRightClick("购买") { //跳转支付页 activity?.addCourseOrder() } .setCancelAble(false) .show() } return canPlay } override fun onPrepared(data: Music?, index: Int) { //更新播放列表的状态 activity!!.updatePlayingListStatus(index) } } } /** * 设置显示数据 */ override fun setData( index: Int, list: ArrayList<CourseMediaBean>, courseExtra: CourseExtraBean, from: Int ) { if (list.isEmpty()) return playList.clear() playList.addAll(list) this.courseExtra = courseExtra currentIndex = index if (courseExtra.isBuy) { playView?.setAutoNext(true) } else { //未购买,取消自动播放 playView?.setAutoNext(false) } playView?.setImageBackground(courseExtra.pic) playView!!.setData(stringToMusicPlayerList(playList)) if (AudioPlayer.get().isPlaying) { hasEnsureNetStatus = true } if (RxNetTool.isWifi(activity!!)) { if (AudioPlayer.get().isPlaying && (from == 1 || from == 2)) { if (TextUtils.equals(playView?.getCurrentUrl(), list[currentIndex].url)) { playView?.updateView(currentIndex) } else { playView?.play(currentIndex) } } else { playView?.play(index) } } else { if (hasEnsureNetStatus) { if (AudioPlayer.get().isPlaying && (from == 1 || from == 2)) { if (TextUtils.equals(playView?.getCurrentUrl(), list[currentIndex].url)) { playView?.updateView(currentIndex) } else { playView?.play(currentIndex) } } else { playView?.play(currentIndex) } } else { playView?.showNetNotice { hasEnsureNetStatus = true if (AudioPlayer.get().isPlaying && (from == 1 || from == 2)) { if (TextUtils.equals(playView?.getCurrentUrl(), list[currentIndex].url)) { playView?.updateView(currentIndex) } else { playView?.play(currentIndex) } } else { playView?.play(currentIndex) } } } } } //将列表转为播放器可用列表 private fun stringToMusicPlayerList(list: List<CourseMediaBean>): ArrayList<Music> { var nlist = ArrayList<Music>() try { for (i in list.indices) { var be = Music() be.path = list[i].url be.coverPath = courseExtra!!.pic be.title = list[i].title be.artist = list[i].doctorName nlist.add(be) } } catch (e: Exception) { e.printStackTrace() } return nlist } override fun onDestroy() { playView?.onDestroy() playView = null } }