Commit d79b500f by 王佳洋

1,音频页面mvp分离

parent 8f1f52f0
...@@ -12,9 +12,7 @@ import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions ...@@ -12,9 +12,7 @@ import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions
import com.bumptech.glide.request.RequestOptions import com.bumptech.glide.request.RequestOptions
import com.bumptech.glide.request.target.ViewTarget import com.bumptech.glide.request.target.ViewTarget
import com.bumptech.glide.request.transition.Transition import com.bumptech.glide.request.transition.Transition
import com.ydl.media.audio.AudioPlayer
import com.ydl.media.audio.model.Music import com.ydl.media.audio.model.Music
import com.ydl.media.view.PlayTypeEnum
import com.ydl.media.view.PlayerFloatHelper import com.ydl.media.view.PlayerFloatHelper
import com.ydl.webview.H5Params import com.ydl.webview.H5Params
import com.ydl.webview.NewH5Activity import com.ydl.webview.NewH5Activity
...@@ -23,8 +21,7 @@ import com.ydl.ydlcommon.base.BaseMvpActivity ...@@ -23,8 +21,7 @@ import com.ydl.ydlcommon.base.BaseMvpActivity
import com.ydl.ydlcommon.bean.ShareData import com.ydl.ydlcommon.bean.ShareData
import com.ydl.ydlcommon.data.PlatformDataManager import com.ydl.ydlcommon.data.PlatformDataManager
import com.ydl.ydlcommon.modular.ModularServiceManager import com.ydl.ydlcommon.modular.ModularServiceManager
import com.ydl.ydlcommon.router.IYDLRouterConstant import com.ydl.ydlcommon.router.YdlUserInfo
import com.ydl.ydlcommon.router.YdlCommonRouterManager
import com.ydl.ydlcommon.utils.statusBar.StatusBarUtil import com.ydl.ydlcommon.utils.statusBar.StatusBarUtil
import com.ydl.ydlcommon.view.dialog.CommonDialog import com.ydl.ydlcommon.view.dialog.CommonDialog
import com.ydl.ydlcommon.view.dialog.YDLShareDialog import com.ydl.ydlcommon.view.dialog.YDLShareDialog
...@@ -33,10 +30,8 @@ import com.yidianling.common.tools.ToastUtil ...@@ -33,10 +30,8 @@ import com.yidianling.common.tools.ToastUtil
import com.yidianling.course.BuildConfig import com.yidianling.course.BuildConfig
import com.yidianling.course.CourseConstants import com.yidianling.course.CourseConstants
import com.yidianling.course.R import com.yidianling.course.R
import com.yidianling.course.bean.COURSE_AUDIO
import com.yidianling.course.bean.CourseExtraBean import com.yidianling.course.bean.CourseExtraBean
import com.yidianling.course.bean.CourseMediaBean import com.yidianling.course.bean.CourseMediaBean
import com.yidianling.course.bean.CourseMediaDetailBean
import com.yidianling.course.coursePlay.presenter.AudioPlayPresenter import com.yidianling.course.coursePlay.presenter.AudioPlayPresenter
import com.yidianling.course.coursePlay.presenter.IAudioPlayContract import com.yidianling.course.coursePlay.presenter.IAudioPlayContract
import com.yidianling.course.router.CourseIn import com.yidianling.course.router.CourseIn
...@@ -46,8 +41,6 @@ import com.yidianling.course.widget.CourseSpeedDialog ...@@ -46,8 +41,6 @@ import com.yidianling.course.widget.CourseSpeedDialog
import com.yidianling.ydl_pay.common.CommonPayDialog import com.yidianling.ydl_pay.common.CommonPayDialog
import jp.wasabeef.glide.transformations.BlurTransformation import jp.wasabeef.glide.transformations.BlurTransformation
import kotlinx.android.synthetic.main.activity_audio_play.* import kotlinx.android.synthetic.main.activity_audio_play.*
import org.json.JSONException
import org.json.JSONObject
import java.util.* import java.util.*
...@@ -58,16 +51,8 @@ import java.util.* ...@@ -58,16 +51,8 @@ import java.util.*
class AudioPlayActivity : BaseMvpActivity<IAudioPlayContract.View, IAudioPlayContract.Presenter>(), class AudioPlayActivity : BaseMvpActivity<IAudioPlayContract.View, IAudioPlayContract.Presenter>(),
IAudioPlayContract.View { IAudioPlayContract.View {
private val ROUTER_PARAMS = "routerParam"
private var mCourseId = 0 // 课程id
private var mReceiverPlayUrl: String? = null // 外部选中要播放的音/视频文件地址
private var mIsFromFloatView = false // 是否是悬浮窗进入
private var mFrom: Int = 0
private var mCourPlayBean: CourseMediaDetailBean? = null
private val mPlayList: ArrayList<CourseMediaBean> = ArrayList() // 播放列表
private var mCourseSpeedDialog: CourseSpeedDialog? = null private var mCourseSpeedDialog: CourseSpeedDialog? = null
private var mCourseListDialog: CourseListDialog? = null private var mCourseListDialog: CourseListDialog? = null
private var mCurrentPosition = 0
override fun turnOnImmersiveStatusBar(): Boolean = true override fun turnOnImmersiveStatusBar(): Boolean = true
...@@ -78,57 +63,16 @@ class AudioPlayActivity : BaseMvpActivity<IAudioPlayContract.View, IAudioPlayCon ...@@ -78,57 +63,16 @@ class AudioPlayActivity : BaseMvpActivity<IAudioPlayContract.View, IAudioPlayCon
override fun onNewIntent(intent: Intent?) { override fun onNewIntent(intent: Intent?) {
super.onNewIntent(intent) super.onNewIntent(intent)
intent?.let { intent?.let {
val courseId = it.getIntExtra("course_id", 0) mPresenter.getNewIntent(it)
if (0 == courseId) {
ToastUtil.toastShort("参数错误")
finish()
} else if (courseId != mCourseId) {
mCourseId = courseId
mPresenter.getCoursePlayData(mCourseId)
}
} }
} }
override fun initDataAndEvent() { override fun initDataAndEvent() {
getParams()
initView()
mPresenter.getCoursePlayData(mCourseId)
}
private fun getParams() {
intent?.let { intent?.let {
if (it.hasExtra(ROUTER_PARAMS)) { initView()
//路由传递的入参 mPresenter.run {
val json = it.getStringExtra(ROUTER_PARAMS) getParams(it)
try { getCoursePlayData()
val jsonObject = JSONObject(json)
//课程ID
mCourseId = jsonObject.getInt(IYDLRouterConstant.EXTRA_ID)
} catch (e: JSONException) {
e.printStackTrace()
}
return
}
//正常跳转所传参数
mCourseId = it.getIntExtra("course_id", 0)
mReceiverPlayUrl = it.getStringExtra("coursePlayUrl")
mIsFromFloatView = it.getBooleanExtra("isFromFloatView", false)
if (!TextUtils.isEmpty(mReceiverPlayUrl) && mIsFromFloatView)
audio_play.mNonWifiTips = false
try {
if (PlayerFloatHelper.playingType == PlayTypeEnum.PLAY_TYPE_COURSE
&& audio_play.isPlaying()
&& TextUtils.isEmpty(mReceiverPlayUrl)
) {
mReceiverPlayUrl = audio_play.getAudioMusic()?.path
}
} catch (e: Exception) {
}
mFrom = it.getIntExtra("from", 0)
if (mCourseId == 0) {
ToastUtil.toastShort("参数错误")
finish()
} }
} }
} }
...@@ -141,33 +85,26 @@ class AudioPlayActivity : BaseMvpActivity<IAudioPlayContract.View, IAudioPlayCon ...@@ -141,33 +85,26 @@ class AudioPlayActivity : BaseMvpActivity<IAudioPlayContract.View, IAudioPlayCon
} }
} }
iv_share.setOnClickListener { iv_share.setOnClickListener {
share(mCourPlayBean?.courseExtra?.shareData) mPresenter.share()
} }
audio_play.mListener = { playPosition -> audio_play.mListener = { playPosition ->
togglePlaying(playPosition) mPresenter.togglePlaying(playPosition)
} }
} }
//参加课程 override fun loginByOneKeyLogin() {
private fun addCourseOrder() {
if (mCourseId == 0) {
ToastUtil.toastShort("请退出页面重试")
return
}
val userInfo = YdlCommonRouterManager.getYdlCommonRoute().getUserInfo()
if (userInfo == null || TextUtils.isEmpty(userInfo.userId)) {
CourseIn.loginByOneKeyLogin(mContext, true) CourseIn.loginByOneKeyLogin(mContext, true)
return
} }
override fun commonPayDialog(userInfo: YdlUserInfo, courseId: String) {
CommonPayDialog.Build(mContext) CommonPayDialog.Build(mContext)
.setCourseId(mCourseId.toString()) .setCourseId(courseId)
.setToken(userInfo.token) .setToken(userInfo.token)
.setUid(userInfo.userId) .setUid(userInfo.userId)
.setFfrom(PlatformDataManager.getRam().getChannelName()) .setFfrom(PlatformDataManager.getRam().getChannelName())
.setListener(object : CommonPayDialog.OnPayResultListener { .setListener(object : CommonPayDialog.OnPayResultListener {
override fun onSuccesed() { override fun onSuccesed() {
mPresenter.getCoursePlayData(mCourseId) mPresenter.getCoursePlayData()
} }
override fun onFailed() { override fun onFailed() {
...@@ -177,62 +114,27 @@ class AudioPlayActivity : BaseMvpActivity<IAudioPlayContract.View, IAudioPlayCon ...@@ -177,62 +114,27 @@ class AudioPlayActivity : BaseMvpActivity<IAudioPlayContract.View, IAudioPlayCon
.setIsTestEnvironment(BuildConfig.DEBUG).build().show() .setIsTestEnvironment(BuildConfig.DEBUG).build().show()
} }
private fun togglePlaying(playPosition: Int) { override fun play(playPosition: Int) {
if (playPosition >= mPlayList.size || playPosition < 0) { audio_play.play(playPosition)
ToastUtil.toastShort("暂无内容")
} else if (mCurrentPosition != playPosition) {
mCurrentPosition = playPosition
mCourPlayBean?.courseExtra?.let {
if (isCanPlay(it.isBuy)) audio_play.play(mCurrentPosition)
}
}
}
private fun isCanPlay(isBuy: Boolean): Boolean {
mPlayList.elementAtOrNull(mCurrentPosition)?.let {
if (!it.isDemo && !isBuy) {
if (audio_play.isPlaying()) audio_play.pausePlay()
buyCourseTipDialog()
} else if (it.mediaType == COURSE_AUDIO) {
return true
}
}
return false
} }
private fun buyCourseTipDialog() { override fun buyCourseTipDialog() {
CommonDialog(this) CommonDialog(this)
.setMessage("\n购买课程,获取完整课程内容\n") .setMessage("\n购买课程,获取完整课程内容\n")
.setLeftOnclick("放弃") {} .setLeftOnclick("放弃") {}
.setRightClick("购买") { .setRightClick("购买") {
addCourseOrder() // 跳转支付页 mPresenter.addCourseOrder() // 跳转支付页
} }
.setCancelAble(false) .setCancelAble(false)
.show() .show()
} }
override fun onBackPressed() { override fun onBackPressed() {
if (showFloatView()) { mPresenter.showFloatView()
super.onBackPressed() super.onBackPressed()
} }
}
private fun showFloatView(): Boolean {
if (audio_play.isPlaying() && PlayerFloatHelper.playingType == PlayTypeEnum.PLAY_TYPE_COURSE) {
audio_play.getAudioMusic()?.coverPath = mCourPlayBean?.courseExtra?.pic
audio_play.getAudioMusic()?.artist = mCourPlayBean?.courseExtra?.doctorName
PlayerFloatHelper.playTempData.clear()
val hashMap = HashMap<String, String>()
hashMap["course_id"] = mCourseId.toString()
hashMap["media_type"] = COURSE_AUDIO.toString()
PlayerFloatHelper.playTempData.putAll(hashMap)
}
return true
}
private fun share(share: ShareData?) { override fun shareDialog(share: ShareData?) {
share?.let { share?.let {
YDLShareDialog.style1( YDLShareDialog.style1(
this, this,
...@@ -269,21 +171,8 @@ class AudioPlayActivity : BaseMvpActivity<IAudioPlayContract.View, IAudioPlayCon ...@@ -269,21 +171,8 @@ class AudioPlayActivity : BaseMvpActivity<IAudioPlayContract.View, IAudioPlayCon
} }
} }
override fun updateView(bean: CourseMediaDetailBean) { override fun updateView(bean: CourseExtraBean, currentPosition: Int, list: List<CourseMediaBean>, from: Int) {
mCourPlayBean = bean bean.let {
mPlayList.clear()
setPlayList(bean)
if (!TextUtils.isEmpty(mReceiverPlayUrl)) {
mCurrentPosition = mPlayList.indexOfLast {
TextUtils.equals(mReceiverPlayUrl, it.url) || TextUtils.equals(
mReceiverPlayUrl!!.replace(
"http",
"https"
), it.url
)
}
}
bean.courseExtra.let {
Glide.with(this) Glide.with(this)
.load(it.pic) .load(it.pic)
.transition(DrawableTransitionOptions.withCrossFade()) .transition(DrawableTransitionOptions.withCrossFade())
...@@ -306,37 +195,36 @@ class AudioPlayActivity : BaseMvpActivity<IAudioPlayContract.View, IAudioPlayCon ...@@ -306,37 +195,36 @@ class AudioPlayActivity : BaseMvpActivity<IAudioPlayContract.View, IAudioPlayCon
iv_detail.setOnClickListener { _ -> detailClick(it) } iv_detail.setOnClickListener { _ -> detailClick(it) }
tv_speed.setOnClickListener { speedClick() } tv_speed.setOnClickListener { speedClick() }
iv_speed.setOnClickListener { speedClick() } iv_speed.setOnClickListener { speedClick() }
tv_list.setOnClickListener { listClick() } tv_list.setOnClickListener { _ -> listClick(it, currentPosition, list) }
iv_list.setOnClickListener { listClick() } iv_list.setOnClickListener { _ -> listClick(it, currentPosition, list) }
} }
audio_play.setData(mCurrentPosition, convertToMusics(mPlayList), bean.courseExtra.isBuy, mFrom) audio_play.setData(currentPosition, mPresenter.convertToMusics(list), bean.isBuy, from)
} }
private fun convertToMusics(list: List<CourseMediaBean>): ArrayList<Music> { override fun setNonWifiTips(show: Boolean) {
val musics = ArrayList<Music>() audio_play.mNonWifiTips = show
try {
for (i in list.indices) {
musics.add(Music().apply {
path = list[i].url
coverPath = mCourPlayBean?.courseExtra?.pic
title = list[i].title
artist = list[i].doctorName
})
}
} catch (e: Exception) {
e.printStackTrace()
} }
return musics
override fun audioIsPlaying(): Boolean = audio_play.isPlaying()
override fun audioPausePlay() = audio_play.pausePlay()
override fun getAudioPath(): String = audio_play.getAudioMusic()?.path.orEmpty()
override fun getAudioMusic(): Music? = audio_play.getAudioMusic()
override fun close() {
finish()
} }
private fun detailClick(extra: CourseExtraBean) { private fun detailClick(extra: CourseExtraBean) {
if (TextUtils.isEmpty(extra.id)) { if (TextUtils.isEmpty(extra.id)) {
ToastUtil.toastShort("课程id错误") ToastUtil.toastShort("课程id错误")
} else { } else {
showFloatView() mPresenter.showFloatView()
NewH5Activity.start( NewH5Activity.start(
this, this,
H5Params(CourseConstants.COURSE_DETAIL_H5 + mCourseId, null) H5Params(CourseConstants.COURSE_DETAIL_H5 + extra.id, null)
) // 跳转课程H5详情 ) // 跳转课程H5详情
} }
} }
...@@ -351,20 +239,20 @@ class AudioPlayActivity : BaseMvpActivity<IAudioPlayContract.View, IAudioPlayCon ...@@ -351,20 +239,20 @@ class AudioPlayActivity : BaseMvpActivity<IAudioPlayContract.View, IAudioPlayCon
}, "courseSpeed") }, "courseSpeed")
} }
private fun listClick() { private fun listClick(extra: CourseExtraBean, currentPosition: Int, playList: List<CourseMediaBean>) {
mCourPlayBean?.courseExtra?.let { extra.let {
showFragment(mCourseListDialog?.also { showFragment(mCourseListDialog?.also {
it.setCurrentPosition(mCurrentPosition) it.setCurrentPosition(currentPosition)
} ?: CourseListDialog().also { dialog -> } ?: CourseListDialog().also { dialog ->
mCourseListDialog = dialog mCourseListDialog = dialog
mCourseListDialog?.setData(it.isBuy, mCurrentPosition, mPlayList) mCourseListDialog?.setData(it.isBuy, currentPosition, playList)
dialog.mListener = object : CourseListListener { dialog.mListener = object : CourseListListener {
override fun addCourseOrder() { override fun addCourseOrder() {
this@AudioPlayActivity.addCourseOrder() mPresenter.addCourseOrder()
} }
override fun togglePlaying(position: Int) { override fun togglePlaying(position: Int) {
this@AudioPlayActivity.togglePlaying(position) mPresenter.togglePlaying(position)
} }
} }
...@@ -372,21 +260,6 @@ class AudioPlayActivity : BaseMvpActivity<IAudioPlayContract.View, IAudioPlayCon ...@@ -372,21 +260,6 @@ class AudioPlayActivity : BaseMvpActivity<IAudioPlayContract.View, IAudioPlayCon
} }
} }
//设置播放列表数据
private fun setPlayList(bean: CourseMediaDetailBean) {
if (bean.voiceSample.courseMedia.isNotEmpty()) {
for (voiceSampleData in bean.voiceSample.courseMedia) {
voiceSampleData.isDemo = true
mPlayList.add(voiceSampleData)
}
}
if (bean.voiceWhole.courseMedia.isNotEmpty()) {
for (voiceCourseData in bean.voiceWhole.courseMedia) {
mPlayList.add(voiceCourseData)
}
}
}
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()
if (PlayerFloatHelper.isShow(this)) { if (PlayerFloatHelper.isShow(this)) {
......
package com.yidianling.course.coursePlay.presenter package com.yidianling.course.coursePlay.presenter
import android.content.Intent
import android.text.TextUtils
import com.ydl.media.audio.model.Music
import com.ydl.media.view.PlayTypeEnum
import com.ydl.media.view.PlayerFloatHelper
import com.ydl.ydlcommon.data.http.BaseResponse import com.ydl.ydlcommon.data.http.BaseResponse
import com.ydl.ydlcommon.data.http.RxUtils import com.ydl.ydlcommon.data.http.RxUtils
import com.ydl.ydlcommon.mvp.base.BasePresenter import com.ydl.ydlcommon.mvp.base.BasePresenter
import com.ydl.ydlcommon.router.IYDLRouterConstant
import com.ydl.ydlcommon.router.YdlCommonRouterManager
import com.ydl.ydlnet.client.observer.CommonObserver import com.ydl.ydlnet.client.observer.CommonObserver
import com.yidianling.common.tools.ToastUtil import com.yidianling.common.tools.ToastUtil
import com.yidianling.course.bean.COURSE_AUDIO
import com.yidianling.course.bean.CourseMediaBean
import com.yidianling.course.bean.CourseMediaDetailBean import com.yidianling.course.bean.CourseMediaDetailBean
import com.yidianling.course.coursePlay.model.AudioPlayModelImpl import com.yidianling.course.coursePlay.model.AudioPlayModelImpl
import org.json.JSONException
import org.json.JSONObject
import java.util.*
class AudioPlayPresenter : BasePresenter<IAudioPlayContract.View, IAudioPlayContract.Model>(), class AudioPlayPresenter : BasePresenter<IAudioPlayContract.View, IAudioPlayContract.Model>(),
IAudioPlayContract.Presenter { IAudioPlayContract.Presenter {
private val ROUTER_PARAMS = "routerParam"
private var mFrom: Int = 0
private var mReceiverPlayUrl: String? = null // 外部选中要播放的音/视频文件地址
private var mIsFromFloatView = false // 是否是悬浮窗进入
private var mCourPlayBean: CourseMediaDetailBean? = null
private val mPlayList: ArrayList<CourseMediaBean> = ArrayList() // 播放列表
private var mCurrentPosition = 0
private var mCourseId = 0 // 课程id
override fun createModel(): IAudioPlayContract.Model = AudioPlayModelImpl() override fun createModel(): IAudioPlayContract.Model = AudioPlayModelImpl()
override fun getCoursePlayData(courseId: Int) { override fun getParams(intent: Intent) {
intent.let {
if (it.hasExtra(ROUTER_PARAMS)) {
//路由传递的入参
val json = it.getStringExtra(ROUTER_PARAMS)
try {
val jsonObject = JSONObject(json)
//课程ID
mCourseId = jsonObject.getInt(IYDLRouterConstant.EXTRA_ID)
} catch (e: JSONException) {
e.printStackTrace()
}
return
}
//正常跳转所传参数
mCourseId = it.getIntExtra("course_id", 0)
mReceiverPlayUrl = it.getStringExtra("coursePlayUrl")
mIsFromFloatView = it.getBooleanExtra("isFromFloatView", false)
if (!TextUtils.isEmpty(mReceiverPlayUrl) && mIsFromFloatView)
mView.setNonWifiTips(false)
try {
if (PlayerFloatHelper.playingType == PlayTypeEnum.PLAY_TYPE_COURSE
&& mView.audioIsPlaying()
&& TextUtils.isEmpty(mReceiverPlayUrl)
) {
mReceiverPlayUrl = mView.getAudioPath()
}
} catch (e: Exception) {
}
mFrom = it.getIntExtra("from", 0)
if (mCourseId == 0) {
ToastUtil.toastShort("参数错误")
mView.close()
}
}
}
override fun getNewIntent(intent: Intent) {
val courseId = intent.getIntExtra("course_id", 0)
if (0 == courseId) {
ToastUtil.toastShort("参数错误")
mView.close()
} else if (courseId != mCourseId) {
mCourseId = courseId
getCoursePlayData()
}
}
override fun getCoursePlayData() {
mView.showProgressDialog() mView.showProgressDialog()
mModel.getCoursePlayData(courseId) mModel.getCoursePlayData(mCourseId)
.compose(RxUtils.applySchedulers()) .compose(RxUtils.applySchedulers())
.subscribe(object : CommonObserver<BaseResponse<CourseMediaDetailBean>>() { .subscribe(object : CommonObserver<BaseResponse<CourseMediaDetailBean>>() {
override fun onError(s: String?) { override fun onError(s: String?) {
...@@ -24,21 +94,119 @@ class AudioPlayPresenter : BasePresenter<IAudioPlayContract.View, IAudioPlayCont ...@@ -24,21 +94,119 @@ class AudioPlayPresenter : BasePresenter<IAudioPlayContract.View, IAudioPlayCont
override fun onSuccess(resp: BaseResponse<CourseMediaDetailBean>?) { override fun onSuccess(resp: BaseResponse<CourseMediaDetailBean>?) {
mView.dismissProgressDialog() mView.dismissProgressDialog()
resp?.let { resp?.let { response ->
if (it.code == 200) { if (response.code == 200) {
//跟新view显示 response.data?.let { bean ->
if (it.data != null && it.data is CourseMediaDetailBean) { mCourPlayBean = bean
mView.updateView(it.data as CourseMediaDetailBean) setPlayList(bean)
} else { if (!TextUtils.isEmpty(mReceiverPlayUrl)) {
mCurrentPosition = mPlayList.indexOfLast {
TextUtils.equals(mReceiverPlayUrl, it.url) || TextUtils.equals(
mReceiverPlayUrl!!.replace(
"http",
"https"
), it.url
)
}
}
mView.updateView(bean.courseExtra, mCurrentPosition, mPlayList, mFrom)
} ?: let {
ToastUtil.toastShort("解析出错") ToastUtil.toastShort("解析出错")
} }
} else { } else {
ToastUtil.toastShort(it.msg) ToastUtil.toastShort(response.msg)
}
}
}
})
}
//设置播放列表数据
private fun setPlayList(bean: CourseMediaDetailBean) {
mPlayList.clear()
if (bean.voiceSample.courseMedia.isNotEmpty()) {
for (voiceSampleData in bean.voiceSample.courseMedia) {
voiceSampleData.isDemo = true
mPlayList.add(voiceSampleData)
}
}
if (bean.voiceWhole.courseMedia.isNotEmpty()) {
for (voiceCourseData in bean.voiceWhole.courseMedia) {
mPlayList.add(voiceCourseData)
} }
} }
} }
override fun convertToMusics(list: List<CourseMediaBean>): ArrayList<Music> {
val musics = ArrayList<Music>()
try {
for (i in list.indices) {
musics.add(Music().apply {
path = list[i].url
coverPath = mCourPlayBean?.courseExtra?.pic
title = list[i].title
artist = list[i].doctorName
}) })
} }
} catch (e: Exception) {
e.printStackTrace()
}
return musics
}
override fun addCourseOrder() {
if (mCourseId == 0) {
ToastUtil.toastShort("请退出页面重试")
return
}
val userInfo = YdlCommonRouterManager.getYdlCommonRoute().getUserInfo()
if (userInfo == null || TextUtils.isEmpty(userInfo.userId)) {
mView.loginByOneKeyLogin()
return
}
mView.commonPayDialog(userInfo, mCourseId.toString())
}
override fun togglePlaying(playPosition: Int) {
if (playPosition >= mPlayList.size || playPosition < 0) {
ToastUtil.toastShort("暂无内容")
} else if (mCurrentPosition != playPosition) {
mCurrentPosition = playPosition
mCourPlayBean?.courseExtra?.let {
if (isCanPlay(it.isBuy)) mView.play(mCurrentPosition)
}
}
}
private fun isCanPlay(isBuy: Boolean): Boolean {
mPlayList.elementAtOrNull(mCurrentPosition)?.let {
if (!it.isDemo && !isBuy) {
if (mView.audioIsPlaying()) mView.audioPausePlay()
mView.buyCourseTipDialog()
} else if (it.mediaType == COURSE_AUDIO) {
return true
}
}
return false
}
override fun share() {
mView.shareDialog(mCourPlayBean?.courseExtra?.shareData)
}
override fun showFloatView() {
if (mView.audioIsPlaying() && PlayerFloatHelper.playingType == PlayTypeEnum.PLAY_TYPE_COURSE) {
mView.getAudioMusic()?.coverPath = mCourPlayBean?.courseExtra?.pic
mView.getAudioMusic()?.artist = mCourPlayBean?.courseExtra?.doctorName
PlayerFloatHelper.playTempData.clear()
val hashMap = HashMap<String, String>()
hashMap["course_id"] = mCourseId.toString()
hashMap["media_type"] = COURSE_AUDIO.toString()
PlayerFloatHelper.playTempData.putAll(hashMap)
}
}
} }
\ No newline at end of file
package com.yidianling.course.coursePlay.presenter package com.yidianling.course.coursePlay.presenter
import android.content.Intent
import com.ydl.media.audio.model.Music
import com.ydl.ydlcommon.bean.ShareData
import com.ydl.ydlcommon.data.http.BaseResponse import com.ydl.ydlcommon.data.http.BaseResponse
import com.ydl.ydlcommon.mvp.base.IModel import com.ydl.ydlcommon.mvp.base.IModel
import com.ydl.ydlcommon.mvp.base.IPresenter import com.ydl.ydlcommon.mvp.base.IPresenter
import com.ydl.ydlcommon.mvp.base.IView import com.ydl.ydlcommon.mvp.base.IView
import com.ydl.ydlcommon.router.YdlUserInfo
import com.yidianling.course.bean.CourseExtraBean
import com.yidianling.course.bean.CourseMediaBean
import com.yidianling.course.bean.CourseMediaDetailBean import com.yidianling.course.bean.CourseMediaDetailBean
import io.reactivex.Observable import io.reactivex.Observable
import java.util.ArrayList
interface IAudioPlayContract { interface IAudioPlayContract {
...@@ -15,14 +22,49 @@ interface IAudioPlayContract { ...@@ -15,14 +22,49 @@ interface IAudioPlayContract {
fun dismissProgressDialog() fun dismissProgressDialog()
fun updateView(bean: CourseMediaDetailBean) fun updateView(bean: CourseExtraBean, currentPosition: Int, list: List<CourseMediaBean>, from: Int)
fun setNonWifiTips(show: Boolean)
fun audioIsPlaying(): Boolean
fun audioPausePlay()
fun getAudioPath(): String
fun getAudioMusic(): Music?
fun loginByOneKeyLogin()
fun commonPayDialog(userInfo: YdlUserInfo, courseId: String)
fun buyCourseTipDialog()
fun shareDialog(share: ShareData?)
fun play(playPosition: Int)
fun close()
} }
interface Presenter : IPresenter<View> { interface Presenter : IPresenter<View> {
fun getCoursePlayData(courseId: Int) fun getParams(intent: Intent)
fun getNewIntent(intent: Intent)
fun getCoursePlayData()
fun addCourseOrder()
fun togglePlaying(playPosition: Int)
fun share()
fun showFloatView()
fun convertToMusics(list: List<CourseMediaBean>): ArrayList<Music>
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment