Commit ab5f7bff by 严久程

课程模块

parent 2b2eb4ee
...@@ -19,7 +19,7 @@ import com.ydl.ydlcommon.utils.BuryPointUtils; ...@@ -19,7 +19,7 @@ import com.ydl.ydlcommon.utils.BuryPointUtils;
import com.ydl.ydlcommon.utils.NetworkParamsUtils; import com.ydl.ydlcommon.utils.NetworkParamsUtils;
import com.yidianling.common.tools.LogUtil; import com.yidianling.common.tools.LogUtil;
import com.yidianling.course.courseNew.LoadMoreView; import com.yidianling.course.courseNew.LoadMoreView;
import com.yidianling.course.net.RetrofitUtils; import com.yidianling.course.net.CourseRetrofitUtils;
import com.yidianling.course.bean.Course; import com.yidianling.course.bean.Course;
import com.yidianling.course.router.CourseIn; import com.yidianling.course.router.CourseIn;
import in.srain.cube.views.loadmore.LoadMoreContainer; import in.srain.cube.views.loadmore.LoadMoreContainer;
...@@ -182,7 +182,7 @@ public class CourseListFragment extends BaseFragment implements PtrHandler, Load ...@@ -182,7 +182,7 @@ public class CourseListFragment extends BaseFragment implements PtrHandler, Load
.append("&listType=").append(tagId + 1); .append("&listType=").append(tagId + 1);
} }
String urlParams = NetworkParamsUtils.getCommonParam() + sb.toString(); String urlParams = NetworkParamsUtils.getCommonParam() + sb.toString();
RetrofitUtils.getCourseList(urlParams).compose(RxUtils.resultJavaData()).subscribeOn(Schedulers.io()) CourseRetrofitUtils.getCourseList(urlParams).compose(RxUtils.resultJavaData()).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe(resp -> { .subscribe(resp -> {
lvContent.setVisibility(View.VISIBLE); lvContent.setVisibility(View.VISIBLE);
...@@ -223,10 +223,10 @@ public class CourseListFragment extends BaseFragment implements PtrHandler, Load ...@@ -223,10 +223,10 @@ public class CourseListFragment extends BaseFragment implements PtrHandler, Load
emptyTv.setText("网络不给力哦,下拉刷新重试"); emptyTv.setText("网络不给力哦,下拉刷新重试");
ivEmptyView.setImageResource(R.drawable.no_net); ivEmptyView.setImageResource(R.drawable.no_net);
} else { } else {
RetrofitUtils.handleError(getActivity(), throwable); CourseRetrofitUtils.handleError(getActivity(), throwable);
} }
} else { } else {
RetrofitUtils.handleError(getActivity(), throwable); CourseRetrofitUtils.handleError(getActivity(), throwable);
isShowEmptyView(); isShowEmptyView();
} }
}); });
......
...@@ -18,7 +18,7 @@ import com.ydl.ydlcommon.utils.StatusBarUtils ...@@ -18,7 +18,7 @@ import com.ydl.ydlcommon.utils.StatusBarUtils
import com.ydl.ydlcommon.view.dialog.YDLShareDialog import com.ydl.ydlcommon.view.dialog.YDLShareDialog
import com.yidianling.common.tools.ToastUtil import com.yidianling.common.tools.ToastUtil
import com.yidianling.course.bean.PostersShareBean import com.yidianling.course.bean.PostersShareBean
import com.yidianling.course.net.RetrofitUtils import com.yidianling.course.net.CourseRetrofitUtils
import com.yidianling.course.widget.CoursePosterTemplate import com.yidianling.course.widget.CoursePosterTemplate
import com.yidianling.course.widget.CustomPagerTransformer import com.yidianling.course.widget.CustomPagerTransformer
import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.android.schedulers.AndroidSchedulers
...@@ -106,7 +106,7 @@ class CoursePosterActivity : BaseActivity() { ...@@ -106,7 +106,7 @@ class CoursePosterActivity : BaseActivity() {
} }
private fun getData() { private fun getData() {
RetrofitUtils.getPosterData(courseId) CourseRetrofitUtils.getPosterData(courseId)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe({ resp -> .subscribe({ resp ->
......
...@@ -17,7 +17,7 @@ import com.ydl.ydlcommon.utils.actionutil.BIConstants ...@@ -17,7 +17,7 @@ import com.ydl.ydlcommon.utils.actionutil.BIConstants
import com.ydl.ydlcommon.utils.remind.ToastHelper import com.ydl.ydlcommon.utils.remind.ToastHelper
import com.yidianling.common.tools.ToastUtil import com.yidianling.common.tools.ToastUtil
import com.yidianling.course.bean.CourseCouponBean import com.yidianling.course.bean.CourseCouponBean
import com.yidianling.course.net.RetrofitUtils import com.yidianling.course.net.CourseRetrofitUtils
import com.yidianling.course.flutterPlugin.CourseSendPlugin import com.yidianling.course.flutterPlugin.CourseSendPlugin
import com.yidianling.course.widget.CourseCouponDialog import com.yidianling.course.widget.CourseCouponDialog
import com.yidianling.router.RouterManager import com.yidianling.router.RouterManager
...@@ -40,7 +40,7 @@ class FlutterCourseHomeFragment : BaseFlutterFragment() { ...@@ -40,7 +40,7 @@ class FlutterCourseHomeFragment : BaseFlutterFragment() {
private var hasRequestCoupon = false private var hasRequestCoupon = false
private var dialog: CourseCouponDialog? = null private var dialog: CourseCouponDialog? = null
override fun initChannelPlugin(flutterView: FlutterView) { override fun initChannelPlugin(flutterView: FlutterView) {
CoursePlugin.rigister(this, flutterView) CoursePlugin.register(this, flutterView)
CourseSendPlugin.initContext(this, flutterView) CourseSendPlugin.initContext(this, flutterView)
} }
...@@ -85,7 +85,7 @@ class FlutterCourseHomeFragment : BaseFlutterFragment() { ...@@ -85,7 +85,7 @@ class FlutterCourseHomeFragment : BaseFlutterFragment() {
@SuppressLint("SimpleDateFormat", "CheckResult") @SuppressLint("SimpleDateFormat", "CheckResult")
private fun getCouponData() { private fun getCouponData() {
val (userId) = YdlCommonRouterManager.getYdlCommonRoute().getUserInfo() ?: return val (userId) = YdlCommonRouterManager.getYdlCommonRoute().getUserInfo() ?: return
RetrofitUtils.getCourseCoupons(userId, "3", "1", "3") CourseRetrofitUtils.getCourseCoupons(userId, "3", "1", "3")
.compose(RxUtils.netCheck()) .compose(RxUtils.netCheck())
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
...@@ -151,7 +151,7 @@ class FlutterCourseHomeFragment : BaseFlutterFragment() { ...@@ -151,7 +151,7 @@ class FlutterCourseHomeFragment : BaseFlutterFragment() {
bean.couponIds = couponIds bean.couponIds = couponIds
bean.uid = userId bean.uid = userId
val couponIdsStr = Gson().toJson(bean) val couponIdsStr = Gson().toJson(bean)
RetrofitUtils.receiveCoupon(couponIdsStr) CourseRetrofitUtils.receiveCoupon(couponIdsStr)
.compose(RxUtils.netCheck()) .compose(RxUtils.netCheck())
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
......
...@@ -20,7 +20,7 @@ import com.ydl.ydlcommon.utils.UMEventUtils ...@@ -20,7 +20,7 @@ import com.ydl.ydlcommon.utils.UMEventUtils
import com.yidianling.common.tools.LogUtil import com.yidianling.common.tools.LogUtil
import com.yidianling.common.tools.RxNetTool import com.yidianling.common.tools.RxNetTool
import com.yidianling.course.R import com.yidianling.course.R
import com.yidianling.course.net.RetrofitUtils import com.yidianling.course.net.CourseRetrofitUtils
import com.yidianling.course.bean.Course import com.yidianling.course.bean.Course
import com.yidianling.course.model.TopicCourseBean import com.yidianling.course.model.TopicCourseBean
import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.android.schedulers.AndroidSchedulers
...@@ -114,7 +114,7 @@ class CourseTopicActivity : BaseActivity(), View.OnClickListener, SwipeRefreshLa ...@@ -114,7 +114,7 @@ class CourseTopicActivity : BaseActivity(), View.OnClickListener, SwipeRefreshLa
} }
course_topic_rcv.visibility = View.VISIBLE course_topic_rcv.visibility = View.VISIBLE
v_no_network.visibility = View.GONE v_no_network.visibility = View.GONE
RetrofitUtils.getCourseTopic(specialId.toString()) CourseRetrofitUtils.getCourseTopic(specialId.toString())
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.compose(RxUtils.resultJavaData()) .compose(RxUtils.resultJavaData())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
......
...@@ -36,7 +36,7 @@ import com.yidianling.course.courseNew.LoadMoreView ...@@ -36,7 +36,7 @@ import com.yidianling.course.courseNew.LoadMoreView
import com.yidianling.course.courseNew.courseList.widget.CourseFilterPopupWindow import com.yidianling.course.courseNew.courseList.widget.CourseFilterPopupWindow
import com.yidianling.course.courseNew.courseList.widget.CourseGoodPopupWindow import com.yidianling.course.courseNew.courseList.widget.CourseGoodPopupWindow
import com.yidianling.course.courseNew.courseList.widget.CourseSortPopupWindow import com.yidianling.course.courseNew.courseList.widget.CourseSortPopupWindow
import com.yidianling.course.net.RetrofitUtils import com.yidianling.course.net.CourseRetrofitUtils
import com.yidianling.course.bean.Course import com.yidianling.course.bean.Course
import com.yidianling.course.model.CourseCategoryBean import com.yidianling.course.model.CourseCategoryBean
import com.yidianling.course.router.CourseIn import com.yidianling.course.router.CourseIn
...@@ -174,7 +174,7 @@ class CourseListContainerActivity : BaseActivity(), PtrHandler, LoadMoreHandler ...@@ -174,7 +174,7 @@ class CourseListContainerActivity : BaseActivity(), PtrHandler, LoadMoreHandler
*/ */
@SuppressLint("CheckResult") @SuppressLint("CheckResult")
private fun loadData() { private fun loadData() {
RetrofitUtils.getCourseListCategory() CourseRetrofitUtils.getCourseListCategory()
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.compose(RxUtils.resultJavaData()) .compose(RxUtils.resultJavaData())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
...@@ -459,7 +459,7 @@ class CourseListContainerActivity : BaseActivity(), PtrHandler, LoadMoreHandler ...@@ -459,7 +459,7 @@ class CourseListContainerActivity : BaseActivity(), PtrHandler, LoadMoreHandler
v_loading.setViewType(LogoLoadingView.TYPE_LOADING, null) v_loading.setViewType(LogoLoadingView.TYPE_LOADING, null)
} }
RetrofitUtils.getCourseList(urlParams).compose(RxUtils.resultJavaData()).subscribeOn(Schedulers.io()) CourseRetrofitUtils.getCourseList(urlParams).compose(RxUtils.resultJavaData()).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe({ resp -> .subscribe({ resp ->
if (resp.list.isNotEmpty()) { if (resp.list.isNotEmpty()) {
...@@ -509,7 +509,7 @@ class CourseListContainerActivity : BaseActivity(), PtrHandler, LoadMoreHandler ...@@ -509,7 +509,7 @@ class CourseListContainerActivity : BaseActivity(), PtrHandler, LoadMoreHandler
v_loading.setViewType(LogoLoadingView.TYPE_NET_LOSS, "哎呦,网络开小差了") v_loading.setViewType(LogoLoadingView.TYPE_NET_LOSS, "哎呦,网络开小差了")
} else { } else {
ToastHelper.show("网络不给力") ToastHelper.show("网络不给力")
RetrofitUtils.handleError(this@CourseListContainerActivity, throwable) CourseRetrofitUtils.handleError(this@CourseListContainerActivity, throwable)
} }
}) })
} }
......
...@@ -15,7 +15,7 @@ import com.yidianling.common.tools.ToastUtil ...@@ -15,7 +15,7 @@ import com.yidianling.common.tools.ToastUtil
import com.yidianling.course.CourseConstants import com.yidianling.course.CourseConstants
import com.yidianling.course.R import com.yidianling.course.R
import com.yidianling.course.net.Command import com.yidianling.course.net.Command
import com.yidianling.course.net.RetrofitUtils import com.yidianling.course.net.CourseRetrofitUtils
import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers import io.reactivex.schedulers.Schedulers
import kotlinx.android.synthetic.main.activity_course_commeny.* import kotlinx.android.synthetic.main.activity_course_commeny.*
...@@ -86,7 +86,7 @@ class CourseCommentActivity : BaseActivity() { ...@@ -86,7 +86,7 @@ class CourseCommentActivity : BaseActivity() {
private fun commitReply(content: String) { private fun commitReply(content: String) {
showProgressDialog(null) showProgressDialog(null)
val cmd = Command.CourseCommitReply(courseId!!.toInt(), content) val cmd = Command.CourseCommitReply(courseId!!.toInt(), content)
RetrofitUtils.commitCourseReply(cmd) CourseRetrofitUtils.commitCourseReply(cmd)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe({ resp -> .subscribe({ resp ->
...@@ -104,7 +104,7 @@ class CourseCommentActivity : BaseActivity() { ...@@ -104,7 +104,7 @@ class CourseCommentActivity : BaseActivity() {
} }
}, { t -> }, { t ->
dismissProgressDialog() dismissProgressDialog()
RetrofitUtils.handleError(this, t) CourseRetrofitUtils.handleError(this, t)
LogHelper.getInstance().writeLogSync("提交评论失败:" + t.message) LogHelper.getInstance().writeLogSync("提交评论失败:" + t.message)
}) })
} }
......
...@@ -617,13 +617,14 @@ class CoursePlayActivity : BaseActivity() { ...@@ -617,13 +617,14 @@ class CoursePlayActivity : BaseActivity() {
var status = Utils.getValue(videoView, "status") var status = Utils.getValue(videoView, "status")
//视频课程正在播放中 //视频课程正在播放中
if (status == PlayStateParams.STATE_PLAYING) { if (status == PlayStateParams.STATE_PLAYING) {
YDLMusicHelper.title = courPlayBean?.courseExtra?.title //todo 视屏播放
YDLMusicHelper.cover = courPlayBean?.courseExtra?.pic // YDLMusicHelper.title = courPlayBean?.courseExtra?.title
YDLMusicHelper.name = courPlayBean?.courseExtra?.doctorName // YDLMusicHelper.cover = courPlayBean?.courseExtra?.pic
YDLMusicHelper.isVideoPlaying = true // YDLMusicHelper.name = courPlayBean?.courseExtra?.doctorName
YDLMusicHelper.playType = 1 // YDLMusicHelper.isVideoPlaying = true
YDLMusicHelper.courseVideoUlr = (play_view as CoursePlayItemViewVideo).videoUrl // YDLMusicHelper.playType = 1
YDLMusicHelper.course_id = courPlayBean?.courseExtra?.id!!.toInt() // YDLMusicHelper.courseVideoUlr = (play_view as CoursePlayItemViewVideo).videoUrl
// YDLMusicHelper.course_id = courPlayBean?.courseExtra?.id!!.toInt()
PlayerFloatHelper.show(this) PlayerFloatHelper.show(this)
} }
......
package com.yidianling.course.coursePlay
import android.annotation.SuppressLint
import android.support.v7.widget.LinearLayoutManager
import android.support.v7.widget.RecyclerView
import com.ydl.ydl_image.module.GlideApp
import com.ydl.ydlcommon.adapter.CommonRecyclerAdapter
import com.ydl.ydlcommon.base.BaseActivity
import com.ydl.ydlcommon.view.BaseViewHolder
import com.ydl.ydlcommon.view.CircleImageView
import com.ydl.ydlcommon.view.FootViewLoadMore
import com.ydl.ydlcommon.view.TitleBar
import com.yidianling.common.tools.LogUtil
import com.yidianling.common.tools.ToastUtil
import com.yidianling.course.R
import com.yidianling.course.bean.CoursePlayBean
import com.yidianling.course.net.Command
import com.yidianling.course.net.CourseRetrofitUtils
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
/**
* 课程课后笔记列表
*
*/
class CourseReplyListActivity : BaseActivity() {
override fun layoutResId(): Int {
return R.layout.activity_course_reply_list
}
override fun initDataAndEvent() {
course_id = intent.getIntExtra("course_id", 0)
initView()
getListData(false)
}
var title_bar: TitleBar? = null
var recycler_list: RecyclerView? = null
var footView: FootViewLoadMore? = null
var adapter: CommonRecyclerAdapter<CoursePlayBean.Comments>? = null
var page = 1 //分页
//课程id
var course_id = 0
fun initView() {
title_bar = findViewById<TitleBar>(R.id.title_bar)
recycler_list = findViewById<RecyclerView>(R.id.recycler_list)
recycler_list?.layoutManager = LinearLayoutManager(mContext, LinearLayoutManager.VERTICAL, false)
adapter = CommonRecyclerAdapter<CoursePlayBean.Comments>(recycler_list, R.layout.item_course_play_recylist)
.setBindDataCallback(object : CommonRecyclerAdapter.BindDataCallback<CoursePlayBean.Comments> {
override fun bindDatabindData(holder: BaseViewHolder, t: CoursePlayBean.Comments, position: Int) {
//绑定数据
var img: CircleImageView = holder.getView(R.id.img_head)
GlideApp.with(applicationContext).load(t.head).into(img)
holder.setText(R.id.text_name, t.name)
holder.setText(R.id.text_time, t.create_time)
holder.setText(R.id.text_des, t.content)
}
})
.setOnLoadMoreListener(object : CommonRecyclerAdapter.OnLoadMoreLIstener {
override fun onLoadMore() {
getListData(true)
LogUtil.e("---------------------------------------")
}
})
footView = FootViewLoadMore(mContext)
adapter?.addFootView(footView)
recycler_list?.adapter = adapter
}
//获取列表数据
@SuppressLint("CheckResult")
fun getListData(isLoadMore: Boolean) {
if (isLoadMore) {
page++
} else {
page = 1
}
if (isLoadMore) {
footView?.onLoading()
} else {
showProgressDialog(null)
}
val cmd = Command.CourseReplyList(course_id, page)
CourseRetrofitUtils.courseReplyList(cmd)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ resp ->
if (!isLoadMore) {
dismissProgressDialog()
}
if (resp.code == 0) {
//跟新view显示
updateView(isLoadMore, resp.data as List<CoursePlayBean.Comments>)
} else {
footView?.onError()
ToastUtil.toastShort(resp.msg)
}
}, {
throwable->
footView?.onError()
if (!isLoadMore) {
dismissProgressDialog()
}
CourseRetrofitUtils.handleError(mContext, throwable)
})
}
//跟新视图
fun updateView(isLoadMore: Boolean, list: List<CoursePlayBean.Comments>) {
if (list == null) return
if (list.size == 0) {
footView?.onFinish()
return
}
if (isLoadMore) {
adapter?.addDatas(list)
} else {
adapter?.update(list)
}
}
}
...@@ -4,7 +4,7 @@ import android.annotation.SuppressLint ...@@ -4,7 +4,7 @@ import android.annotation.SuppressLint
import com.yidianling.common.tools.ToastUtil import com.yidianling.common.tools.ToastUtil
import com.yidianling.course.bean.CourseMediaDetailBean import com.yidianling.course.bean.CourseMediaDetailBean
import com.yidianling.course.coursePlay.CoursePlayActivity import com.yidianling.course.coursePlay.CoursePlayActivity
import com.yidianling.course.net.RetrofitUtils import com.yidianling.course.net.CourseRetrofitUtils
import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers import io.reactivex.schedulers.Schedulers
...@@ -16,7 +16,7 @@ class CoursePlayPresenter(val view: CoursePlayActivity) { ...@@ -16,7 +16,7 @@ class CoursePlayPresenter(val view: CoursePlayActivity) {
@SuppressLint("CheckResult") @SuppressLint("CheckResult")
fun getInitData(course_id: Int) { fun getInitData(course_id: Int) {
view.showLoadingDialog() view.showLoadingDialog()
RetrofitUtils.getCoursePlayData(course_id.toString()) CourseRetrofitUtils.getCoursePlayData(course_id.toString())
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe({ resp -> .subscribe({ resp ->
...@@ -33,7 +33,7 @@ class CoursePlayPresenter(val view: CoursePlayActivity) { ...@@ -33,7 +33,7 @@ class CoursePlayPresenter(val view: CoursePlayActivity) {
} }
}, { t -> }, { t ->
view.dismissLoadingDialog() view.dismissLoadingDialog()
RetrofitUtils.handleError(view, t) CourseRetrofitUtils.handleError(view, t)
}) })
} }
......
package com.yidianling.course.course_special_list.model package com.yidianling.course.course_special_list.model
import com.ydl.ydlcommon.data.http.RxUtils import com.ydl.ydlcommon.data.http.RxUtils
import com.yidianling.course.net.RetrofitUtils import com.yidianling.course.net.CourseRetrofitUtils
import com.yidianling.course.course_special_list.bean.CourseSpecialListBean import com.yidianling.course.course_special_list.bean.CourseSpecialListBean
import com.yidianling.course.course_special_list.contract.ICourseSpecialListContract import com.yidianling.course.course_special_list.contract.ICourseSpecialListContract
import com.yidianling.course.course_special_list.bean.CourseSpecialListParam import com.yidianling.course.course_special_list.bean.CourseSpecialListParam
...@@ -17,7 +17,7 @@ import io.reactivex.Observable ...@@ -17,7 +17,7 @@ import io.reactivex.Observable
class CourseSpecialListModelImpl : ICourseSpecialListContract.Model { class CourseSpecialListModelImpl : ICourseSpecialListContract.Model {
override fun specialListRequest(param: CourseSpecialListParam): Observable<CourseSpecialListBean> { override fun specialListRequest(param: CourseSpecialListParam): Observable<CourseSpecialListBean> {
return RetrofitUtils.specialListRequest(param) return CourseRetrofitUtils.specialListRequest(param)
.compose(RxUtils.resultJavaData()) .compose(RxUtils.resultJavaData())
} }
} }
\ No newline at end of file
import android.content.Intent import android.content.Intent
import android.net.Uri import android.net.Uri
import android.text.TextUtils import android.text.TextUtils
import com.ydl.media.audio.AudioPlayer
import com.ydl.media.audio.model.Music
import com.ydl.media.view.PlayTypeEnum
import com.ydl.media.view.PlayerFloatHelper
import com.ydl.media.view.PlayerFloatView
import com.ydl.webview.H5Params import com.ydl.webview.H5Params
import com.ydl.webview.NewH5Activity import com.ydl.webview.NewH5Activity
import com.ydl.ydl_router.manager.YDLRouterManager import com.ydl.ydl_router.manager.YDLRouterManager
...@@ -40,7 +45,7 @@ class CoursePlugin : MethodChannel.MethodCallHandler { ...@@ -40,7 +45,7 @@ class CoursePlugin : MethodChannel.MethodCallHandler {
const val PLAYCOURSEFILE: String = "playCourseFile" const val PLAYCOURSEFILE: String = "playCourseFile"
const val PAUSECOURSEPLAY: String = "pauseCoursePlay" const val PAUSECOURSEPLAY: String = "pauseCoursePlay"
fun rigister(fragment: BaseFlutterFragment, flutterView: FlutterView) { fun register(fragment: BaseFlutterFragment, flutterView: FlutterView) {
MethodChannel(flutterView, CHANNEL).setMethodCallHandler(CoursePlugin(fragment)) MethodChannel(flutterView, CHANNEL).setMethodCallHandler(CoursePlugin(fragment))
} }
} }
...@@ -55,7 +60,10 @@ class CoursePlugin : MethodChannel.MethodCallHandler { ...@@ -55,7 +60,10 @@ class CoursePlugin : MethodChannel.MethodCallHandler {
?: "" ?: ""
mMap["isFromApp"] = "1" mMap["isFromApp"] = "1"
mMap["version"] = RxDeviceTool.getAppVersionName(BaseApp.getApp()) mMap["version"] = RxDeviceTool.getAppVersionName(BaseApp.getApp())
mMap["osBuild"] = RxDeviceTool.getBuildMANUFACTURER() + "," + RxDeviceTool.getBuildBrandModel() + "," + RxDeviceTool.getOsBuileVersion() + "," + RxDeviceTool.getAppVersionName(BaseApp.getApp()) mMap["osBuild"] =
RxDeviceTool.getBuildMANUFACTURER() + "," + RxDeviceTool.getBuildBrandModel() + "," + RxDeviceTool.getOsBuileVersion() + "," + RxDeviceTool.getAppVersionName(
BaseApp.getApp()
)
result.success(mMap) result.success(mMap)
} }
JUMPURL -> { JUMPURL -> {
...@@ -65,7 +73,12 @@ class CoursePlugin : MethodChannel.MethodCallHandler { ...@@ -65,7 +73,12 @@ class CoursePlugin : MethodChannel.MethodCallHandler {
jumpUrl!!.contains("user/login") -> mFragment!!.startActivity(CourseIn.loginWayIntent(mFragment!!.activity)) jumpUrl!!.contains("user/login") -> mFragment!!.startActivity(CourseIn.loginWayIntent(mFragment!!.activity))
jumpUrl.contains("course/myCourse") -> MyCourseActivity.start(mFragment!!.activity) jumpUrl.contains("course/myCourse") -> MyCourseActivity.start(mFragment!!.activity)
jumpUrl.contains("course/specialList") -> //跳转专题列表页 jumpUrl.contains("course/specialList") -> //跳转专题列表页
mFragment!!.activity.startActivity(Intent(mFragment!!.activity, CourseSpecialListActivity::class.java)) mFragment!!.activity.startActivity(
Intent(
mFragment!!.activity,
CourseSpecialListActivity::class.java
)
)
jumpUrl.contains("course/detail") -> { jumpUrl.contains("course/detail") -> {
var uri = Uri.parse(jumpUrl) var uri = Uri.parse(jumpUrl)
var id = uri.getQueryParameter("id") var id = uri.getQueryParameter("id")
...@@ -82,8 +95,8 @@ class CoursePlugin : MethodChannel.MethodCallHandler { ...@@ -82,8 +95,8 @@ class CoursePlugin : MethodChannel.MethodCallHandler {
playMedia(fileInfo) playMedia(fileInfo)
} }
PAUSECOURSEPLAY -> { PAUSECOURSEPLAY -> {
if (YDLMusicHelper.isPlaying()) { if (AudioPlayer.get().isPlaying) {
YDLMusicHelper.pause() AudioPlayer.get().playPause()
PlayerFloatHelper.updatePlayState() PlayerFloatHelper.updatePlayState()
} }
} }
...@@ -94,51 +107,50 @@ class CoursePlugin : MethodChannel.MethodCallHandler { ...@@ -94,51 +107,50 @@ class CoursePlugin : MethodChannel.MethodCallHandler {
if (PlayerFloatHelper.isShow(mFragment!!.activity)) { if (PlayerFloatHelper.isShow(mFragment!!.activity)) {
PlayerFloatHelper.hide() PlayerFloatHelper.hide()
PlayerFloatHelper.removeView(mFragment!!.activity) PlayerFloatHelper.removeView(mFragment!!.activity)
YDLMusicHelper.clearTempData() AudioPlayer.get().stopPlayer()
YDLMusicHelper.stop()
} else { } else {
PlayerFloatHelper.removeView(mFragment!!.activity) PlayerFloatHelper.removeView(mFragment!!.activity)
} }
YDLMusicHelper.title = fileInfo["title"].toString() val music = Music()
YDLMusicHelper.name = fileInfo["name"].toString() music.title = fileInfo["title"].toString()
YDLMusicHelper.cover = fileInfo["cover"].toString() music.artist = fileInfo["name"].toString()
YDLMusicHelper.course_id = fileInfo["courseId"] as Int music.coverPath = fileInfo["cover"].toString()
YDLMusicHelper.isCanClick = false PlayerFloatHelper.isCanClick = false
var demoType = fileInfo["demoType"] as Int var demoType = fileInfo["demoType"] as Int
var url = fileInfo["url"].toString() var url = fileInfo["url"].toString()
if (demoType == 1) { if (demoType == 1) {
YDLMusicHelper.playType = 0 PlayerFloatHelper.playingType = PlayTypeEnum.PLAY_TYPE_COURSE
PlayerFloatHelper.show(mFragment!!.activity) music.path = url
YDLMusicHelper.coursePlay(url) AudioPlayer.get().singlePlay(music)
} }
if (demoType == 2) { if (demoType == 2) {
YDLMusicHelper.playType = 1 //todo 视屏播放
YDLMusicHelper.courseVideoUlr = url // YDLMusicHelper.playType = 1
// YDLMusicHelper.courseVideoUlr = url
PlayerFloatHelper.show(mFragment!!.activity) //
// PlayerFloatHelper.show(mFragment!!.activity)
} }
PlayerFloatHelper.addClickListener(object : PlayerFloatView.FloatViewPlayListener { PlayerFloatHelper.addClickListener(object : PlayerFloatView.FloatViewPlayListener {
override fun onStartClick() { override fun onStartClick() {
if (!YDLMusicHelper.isCanClick && YDLMusicHelper.course_id != 0) { if (!PlayerFloatHelper.isCanClick && PlayerFloatHelper.playingType == PlayTypeEnum.PLAY_TYPE_COURSE) {
CourseSendPlugin.sendMsg(true) CourseSendPlugin.sendMsg(true)
} }
} }
override fun onPlayFinish() { override fun onPlayFinish() {
PlayerFloatHelper.hide() PlayerFloatHelper.hide()
YDLMusicHelper.clearTempData() AudioPlayer.get().stopPlayer()
YDLMusicHelper.stop()
} }
override fun onPauseClick() { override fun onPauseClick() {
if (!YDLMusicHelper.isCanClick && YDLMusicHelper.course_id != 0) { if (!PlayerFloatHelper.isCanClick && PlayerFloatHelper.playingType == PlayTypeEnum.PLAY_TYPE_COURSE) {
CourseSendPlugin.sendMsg(false) CourseSendPlugin.sendMsg(false)
} }
} }
......
package com.yidianling.course.net; package com.yidianling.course.net;
import android.content.Context; import android.content.Context;
import com.ydl.ydlcommon.base.config.HttpConfig;
import com.ydl.ydlcommon.data.http.BaseAPIResponse; import com.ydl.ydlcommon.data.http.BaseAPIResponse;
import com.ydl.ydlcommon.data.http.BaseResponse; import com.ydl.ydlcommon.data.http.BaseResponse;
import com.ydl.ydlcommon.data.http.FormatText; import com.ydl.ydlcommon.data.http.FormatText;
...@@ -8,9 +9,6 @@ import com.ydl.ydlcommon.utils.NetworkParamsUtils; ...@@ -8,9 +9,6 @@ import com.ydl.ydlcommon.utils.NetworkParamsUtils;
import com.ydl.ydlcommon.utils.remind.HttpErrorUtils; import com.ydl.ydlcommon.utils.remind.HttpErrorUtils;
import com.ydl.ydlnet.YDLHttpUtils; import com.ydl.ydlnet.YDLHttpUtils;
import com.yidianling.course.bean.*; import com.yidianling.course.bean.*;
import com.yidianling.course.bean.Course;
import com.yidianling.course.bean.CourseListDataBean;
import com.yidianling.course.bean.CoursePlayBean;
import com.yidianling.course.course_special_list.bean.CourseSpecialListBean; import com.yidianling.course.course_special_list.bean.CourseSpecialListBean;
import com.yidianling.course.course_special_list.bean.CourseSpecialListParam; import com.yidianling.course.course_special_list.bean.CourseSpecialListParam;
import com.yidianling.course.model.CourseCategoryBean; import com.yidianling.course.model.CourseCategoryBean;
...@@ -25,7 +23,7 @@ import java.util.List; ...@@ -25,7 +23,7 @@ import java.util.List;
* Created by Jim on 2018/2/26 0026. * Created by Jim on 2018/2/26 0026.
*/ */
public class RetrofitUtils { public class CourseRetrofitUtils {
public static void handleError(Context context, Throwable e) { public static void handleError(Context context, Throwable e) {
HttpErrorUtils.Companion.handleError(context, e); HttpErrorUtils.Companion.handleError(context, e);
...@@ -35,41 +33,28 @@ public class RetrofitUtils { ...@@ -35,41 +33,28 @@ public class RetrofitUtils {
//课程提交回复 //课程提交回复
public static Observable<BaseResponse<Object>> commitCourseReply(Command.CourseCommitReply cmd) { public static Observable<BaseResponse<Object>> commitCourseReply(Command.CourseCommitReply cmd) {
List<FormatText> list = NetworkParamsUtils.getPostList(cmd); List<FormatText> list = NetworkParamsUtils.getPostList(cmd);
// return YdlRetrofitUtils.getRxRetrofit().newBuilder().baseUrl(YdlRetrofitUtils.SERVER_API_JAVA_URL).build().create(NetApiStore.class).commitCourseReply(getMaps(list));
return YDLHttpUtils.Companion.obtainApi(NetApiStore.class).commitCourseReply(NetworkParamsUtils.getMaps(list)); return YDLHttpUtils.Companion.obtainApi(NetApiStore.class).commitCourseReply(NetworkParamsUtils.getMaps(list));
} }
//获取课程海报分享数据 //获取课程海报分享数据
public static Observable<BaseResponse<PostersShareBean>> getPosterData(String courseId) { public static Observable<BaseResponse<PostersShareBean>> getPosterData(String courseId) {
return YDLHttpUtils.Companion.obtainApi(NetApiStore.class).getPosterData(courseId); return YDLHttpUtils.Companion.obtainApi(NetApiStore.class).getPosterData(courseId);
// return YdlRetrofitUtils.getRxRetrofit().newBuilder().baseUrl(YdlRetrofitUtils.SERVER_API_JAVA_URL).build().create(NetApiStore.class).getPosterData(courseId);
} }
//课程课后笔记列表 //课程课后笔记列表
public static Observable<BaseResponse<List<CoursePlayBean.Comments>>> courseReplyList(Command.CourseReplyList cmd) { public static Observable<BaseResponse<List<CoursePlayBean.Comments>>> courseReplyList(Command.CourseReplyList cmd) {
List<FormatText> list = NetworkParamsUtils.getPostList(cmd); List<FormatText> list = NetworkParamsUtils.getPostList(cmd);
return YDLHttpUtils.Companion.obtainApi(NetApiStore.class).courseReplyList(NetworkParamsUtils.getMaps(list)); return YDLHttpUtils.Companion.obtainApi(NetApiStore.class).courseReplyList(NetworkParamsUtils.getMaps(list));
// return getRxRetrofit().create(NetApiStore.class).courseReplyList(getMaps(list));
}
//获取课程列表(php接口)
public static Observable<BaseResponse<List<Course>>> getCourseList(Command.GetCourse cmd) {
List<FormatText> list = NetworkParamsUtils.getPostList(cmd);
return YDLHttpUtils.Companion.obtainApi(NetApiStore.class).getPhpCourseList(NetworkParamsUtils.getMaps(list));
// return getRxRetrofit().create(NetApiStore.class).getPhpCourseList(getMaps(list));
} }
//获取课程列表分类 //获取课程列表分类
public static Observable<BaseAPIResponse<CourseCategoryBean>> getCourseListCategory() { public static Observable<BaseAPIResponse<CourseCategoryBean>> getCourseListCategory() {
return YDLHttpUtils.Companion.obtainApi(NetApiStore.class).getCourseListCategory(); return YDLHttpUtils.Companion.obtainApi(NetApiStore.class).getCourseListCategory();
// return getRxRetrofit().newBuilder().baseUrl(YdlRetrofitUtils.SERVER_API_JAVA_URL).build().create(NetApiStore.class).getCourseListCategory();
} }
//获取课程专题 //获取课程专题
public static Observable<BaseAPIResponse<TopicCourseBean>> getCourseTopic(String id) { public static Observable<BaseAPIResponse<TopicCourseBean>> getCourseTopic(String id) {
return YDLHttpUtils.Companion.obtainApi(NetApiStore.class).getCourseSpecial(id); return YDLHttpUtils.Companion.obtainApi(NetApiStore.class).getCourseSpecial(id);
// return getRxRetrofit().newBuilder().baseUrl(YdlRetrofitUtils.SERVER_API_JAVA_URL).build().create(NetApiStore.class).getCourseSpecial(id);
} }
...@@ -84,8 +69,6 @@ public class RetrofitUtils { ...@@ -84,8 +69,6 @@ public class RetrofitUtils {
*/ */
public static Observable<BaseResponse<List<CourseCouponBean>>> getCourseCoupons(String uid, String services, String receiveType, String applyEnds) { public static Observable<BaseResponse<List<CourseCouponBean>>> getCourseCoupons(String uid, String services, String receiveType, String applyEnds) {
return YDLHttpUtils.Companion.obtainApi(NetApiStore.class).getCourseCoupons(uid, services, receiveType, applyEnds); return YDLHttpUtils.Companion.obtainApi(NetApiStore.class).getCourseCoupons(uid, services, receiveType, applyEnds);
// return YdlRetrofitUtils.getRxRetrofit().newBuilder().baseUrl(YdlRetrofitUtils.SERVER_COUPON_URL)
// .build().create(NetApiStore.class).getCourseCoupons(uid, services, receiveType, applyEnds);
} }
//领取优惠券 //领取优惠券
...@@ -102,11 +85,11 @@ public class RetrofitUtils { ...@@ -102,11 +85,11 @@ public class RetrofitUtils {
StringBuffer sb = new StringBuffer(); StringBuffer sb = new StringBuffer();
sb.append("serviceType").append("=").append(param.getServiceType()).append("&"); sb.append("serviceType").append("=").append(param.getServiceType()).append("&");
String confideParam = sb.toString() + NetworkParamsUtils.getCommonParam(); String confideParam = sb.toString() + NetworkParamsUtils.getCommonParam();
return YDLHttpUtils.Companion.obtainApi(NetApiStore.class).getCouponMax(confideParam); return YDLHttpUtils.Companion.obtainApi(NetApiStore.class).getCouponMax(HttpConfig.Companion.getJAVA_BASE_URL() + "auth/coupon/max?" + confideParam);
} }
public static Observable<BaseAPIResponse<CourseListDataBean>> getCourseList(String url) { public static Observable<BaseAPIResponse<CourseListDataBean>> getCourseList(String url) {
return YDLHttpUtils.Companion.obtainApi(NetApiStore.class).getCourseList(YdlRetrofitUtils.SERVER_API_JAVA_URL + "auth/course/getList?" + url); return YDLHttpUtils.Companion.obtainApi(NetApiStore.class).getCourseList(HttpConfig.Companion.getJAVA_BASE_URL() + "auth/course/getList?" + url);
} }
......
...@@ -2,24 +2,20 @@ package com.yidianling.course.net; ...@@ -2,24 +2,20 @@ package com.yidianling.course.net;
import com.ydl.ydlcommon.data.http.BaseAPIResponse; import com.ydl.ydlcommon.data.http.BaseAPIResponse;
import com.ydl.ydlcommon.data.http.BaseResponse; import com.ydl.ydlcommon.data.http.BaseResponse;
import com.yidianling.course.bean.CouponHintResponseBean; import com.yidianling.course.bean.*;
import com.yidianling.course.bean.CourseCouponBean;
import com.yidianling.course.bean.CourseMediaDetailBean;
import com.yidianling.course.bean.PostersShareBean;
import com.yidianling.course.bean.Course;
import com.yidianling.course.bean.CourseAddOrderBean;
import com.yidianling.course.bean.CourseListDataBean;
import com.yidianling.course.bean.CoursePlayBean;
import com.yidianling.course.course_special_list.bean.CourseSpecialListBean; import com.yidianling.course.course_special_list.bean.CourseSpecialListBean;
import com.yidianling.course.model.CourseCategoryBean; import com.yidianling.course.model.CourseCategoryBean;
import com.yidianling.course.model.TopicCourseBean; import com.yidianling.course.model.TopicCourseBean;
import io.reactivex.Observable;
import okhttp3.RequestBody;
import retrofit2.http.*;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import io.reactivex.Observable; import static com.ydl.ydlcommon.base.config.AppConfigKt.YDL_DOMAIN;
import okhttp3.RequestBody; import static com.ydl.ydlcommon.base.config.AppConfigKt.YDL_DOMAIN_COUPON_URL;
import retrofit2.http.*; import static com.ydl.ydlcommon.base.config.AppConfigKt.YDL_DOMAIN_JAVA;
/** /**
* Created by Jim on 2018/2/26 0026. * Created by Jim on 2018/2/26 0026.
...@@ -46,6 +42,7 @@ public interface NetApiStore { ...@@ -46,6 +42,7 @@ public interface NetApiStore {
//课程提交回复 //课程提交回复
@FormUrlEncoded @FormUrlEncoded
@POST("auth/course/comments/add") @POST("auth/course/comments/add")
@Headers(YDL_DOMAIN + YDL_DOMAIN_JAVA)
Observable<BaseResponse<Object>> commitCourseReply(@FieldMap Map<String, String> params); Observable<BaseResponse<Object>> commitCourseReply(@FieldMap Map<String, String> params);
//课程播放页--点赞 //课程播放页--点赞
...@@ -60,6 +57,7 @@ public interface NetApiStore { ...@@ -60,6 +57,7 @@ public interface NetApiStore {
//获取课程海报分享数据 //获取课程海报分享数据
@GET("auth/course/posters/share") @GET("auth/course/posters/share")
@Headers(YDL_DOMAIN + YDL_DOMAIN_JAVA)
Observable<BaseResponse<PostersShareBean>> getPosterData(@Query("id") String courseId); Observable<BaseResponse<PostersShareBean>> getPosterData(@Query("id") String courseId);
...@@ -70,12 +68,13 @@ public interface NetApiStore { ...@@ -70,12 +68,13 @@ public interface NetApiStore {
//课程筛选分类 //课程筛选分类
@GET("auth/course/search/newsample") @GET("auth/course/search/newsample")
@Headers(YDL_DOMAIN + YDL_DOMAIN_JAVA)
Observable<BaseAPIResponse<CourseCategoryBean>> getCourseListCategory(); Observable<BaseAPIResponse<CourseCategoryBean>> getCourseListCategory();
//课程专题列表接口 //课程专题列表接口
@GET("auth/course/new/listCoursesBySpecialId") @GET("auth/course/new/listCoursesBySpecialId")
@Headers(YDL_DOMAIN + YDL_DOMAIN_JAVA)
Observable<BaseAPIResponse<TopicCourseBean>> getCourseSpecial(@Query("specialId") String uid); Observable<BaseAPIResponse<TopicCourseBean>> getCourseSpecial(@Query("specialId") String uid);
...@@ -89,6 +88,7 @@ public interface NetApiStore { ...@@ -89,6 +88,7 @@ public interface NetApiStore {
* @return * @return
*/ */
@GET("marketing/coupon/new/available") @GET("marketing/coupon/new/available")
@Headers(YDL_DOMAIN + YDL_DOMAIN_COUPON_URL)
Observable<BaseResponse<List<CourseCouponBean>>> getCourseCoupons(@Query("uid") String uid, Observable<BaseResponse<List<CourseCouponBean>>> getCourseCoupons(@Query("uid") String uid,
@Query("services") String services, @Query("services") String services,
@Query("receiveType") String receiveType, @Query("receiveType") String receiveType,
...@@ -96,10 +96,12 @@ public interface NetApiStore { ...@@ -96,10 +96,12 @@ public interface NetApiStore {
//领取优惠券 //领取优惠券
@POST("marketing/coupon/new/receives") @POST("marketing/coupon/new/receives")
@Headers(YDL_DOMAIN + YDL_DOMAIN_COUPON_URL)
Observable<BaseResponse<List<String>>> receiveCoupon(@Body RequestBody body); Observable<BaseResponse<List<String>>> receiveCoupon(@Body RequestBody body);
@GET("auth/coupon/courseCoupon/warn") @GET("auth/coupon/courseCoupon/warn")
@Headers(YDL_DOMAIN + YDL_DOMAIN_JAVA)
Observable<BaseAPIResponse<CouponHintResponseBean>> getCouponHint(); Observable<BaseAPIResponse<CouponHintResponseBean>> getCouponHint();
...@@ -110,11 +112,12 @@ public interface NetApiStore { ...@@ -110,11 +112,12 @@ public interface NetApiStore {
//获取课程播放页 java 接口 //获取课程播放页 java 接口
@GET("auth/course/get/all/audio-video") @GET("auth/course/get/all/audio-video")
@Headers(YDL_DOMAIN + YDL_DOMAIN_JAVA)
Observable<BaseResponse<CourseMediaDetailBean>> getCoursePlayData(@Query("courseId") String courseId); Observable<BaseResponse<CourseMediaDetailBean>> getCoursePlayData(@Query("courseId") String courseId);
//课程专题列表 //课程专题列表
//todo @Headers(YDL_DOMAIN + YDL_DOMAIN_JAVA)
@GET("auth/course/listCoursesBySpecialId") @GET("auth/course/listCoursesBySpecialId")
Observable<BaseAPIResponse<CourseSpecialListBean>> courseSpecialList(@QueryMap Map<String, String> params); Observable<BaseAPIResponse<CourseSpecialListBean>> courseSpecialList(@QueryMap Map<String, String> params);
} }
...@@ -13,7 +13,7 @@ import com.ydl.ydlcommon.router.IYDLRouterConstant ...@@ -13,7 +13,7 @@ import com.ydl.ydlcommon.router.IYDLRouterConstant
import com.yidianling.course.R import com.yidianling.course.R
import com.yidianling.course.bean.CouponHintParam import com.yidianling.course.bean.CouponHintParam
import com.yidianling.course.bean.CouponHintResponseBean import com.yidianling.course.bean.CouponHintResponseBean
import com.yidianling.course.net.RetrofitUtils import com.yidianling.course.net.CourseRetrofitUtils
import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.functions.Consumer import io.reactivex.functions.Consumer
import kotlinx.android.synthetic.main.coupon_hint_view.view.* import kotlinx.android.synthetic.main.coupon_hint_view.view.*
...@@ -79,7 +79,7 @@ class CouponHintView : RelativeLayout{ ...@@ -79,7 +79,7 @@ class CouponHintView : RelativeLayout{
fun initData(visible : Int){ fun initData(visible : Int){
this.couponHintVisible = visible this.couponHintVisible = visible
RetrofitUtils.getCouponHint(CouponHintParam(0)).compose(RxUtils.resultJavaData()) CourseRetrofitUtils.getCouponHint(CouponHintParam(0)).compose(RxUtils.resultJavaData())
.map { it } .map { it }
.filter { it != null } .filter { it != null }
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
......
...@@ -8,11 +8,21 @@ import android.text.TextUtils ...@@ -8,11 +8,21 @@ import android.text.TextUtils
import android.util.AttributeSet import android.util.AttributeSet
import android.view.View import android.view.View
import com.alibaba.android.arouter.launcher.ARouter import com.alibaba.android.arouter.launcher.ARouter
import com.ydl.media.audio.AudioPlayer
import com.ydl.media.audio.model.Music
import com.ydl.media.view.PlayTypeEnum
import com.ydl.media.view.PlayerFloatHelper
import com.ydl.media.view.PlayerFloatView
import com.ydl.webview.H5Params
import com.ydl.webview.NewH5Activity
import com.ydl.ydl_image.module.GlideApp import com.ydl.ydl_image.module.GlideApp
import com.ydl.ydlcommon.utils.actionutil.ActionCountUtils
import com.ydl.ydlcommon.utils.actionutil.BIConstants
import com.yidianling.common.tools.RxImageTool import com.yidianling.common.tools.RxImageTool
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 import com.yidianling.course.bean.Course
import kotlinx.android.synthetic.main.item_course_new_list_view.view.*
/** /**
* @author jiucheng * @author jiucheng
...@@ -33,7 +43,7 @@ class CourseItemNewView : ConstraintLayout { ...@@ -33,7 +43,7 @@ class CourseItemNewView : ConstraintLayout {
initView() initView()
} }
constructor(mContext: Context, arrt: AttributeSet) : super(mContext, arrt) { constructor(mContext: Context, attr: AttributeSet) : super(mContext, attr) {
this.mContext = mContext this.mContext = mContext
initView() initView()
} }
...@@ -41,8 +51,8 @@ class CourseItemNewView : ConstraintLayout { ...@@ -41,8 +51,8 @@ class CourseItemNewView : ConstraintLayout {
fun initView() { fun initView() {
View.inflate(mContext, R.layout.item_course_new_list_view, this) View.inflate(mContext, R.layout.item_course_new_list_view, this)
var parmas = LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT) val params = LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)
layoutParams = parmas layoutParams = params
setPadding(RxImageTool.dp2px(13f), 0, RxImageTool.dp2px(15f), 0) setPadding(RxImageTool.dp2px(13f), 0, RxImageTool.dp2px(15f), 0)
} }
...@@ -201,30 +211,30 @@ class CourseItemNewView : ConstraintLayout { ...@@ -201,30 +211,30 @@ class CourseItemNewView : ConstraintLayout {
if (PlayerFloatHelper.isShow(mContext)) { if (PlayerFloatHelper.isShow(mContext)) {
PlayerFloatHelper.hide() PlayerFloatHelper.hide()
PlayerFloatHelper.removeView(mContext) PlayerFloatHelper.removeView(mContext)
YDLMusicHelper.clearTempData() AudioPlayer.get().stopPlayer()
YDLMusicHelper.stop()
} else { } else {
PlayerFloatHelper.removeView(mContext) PlayerFloatHelper.removeView(mContext)
} }
val music=Music()
music.title=course.title
music.artist=doctorName
music.coverPath=if (!TextUtils.isEmpty(course.image)) course.image else course.pic
PlayerFloatHelper.isCanClick = false
YDLMusicHelper.title = course.title
YDLMusicHelper.name = doctorName
YDLMusicHelper.cover = if (!TextUtils.isEmpty(course.image)) course.image else course.pic
YDLMusicHelper.course_id = course.id.toInt()
YDLMusicHelper.isCanClick = false
if (course.demoType == 1) { if (course.demoType == 1) {
YDLMusicHelper.playType = 0 PlayerFloatHelper.playingType=PlayTypeEnum.PLAY_TYPE_COURSE
PlayerFloatHelper.show(mContext) music.path=course.demoFile
YDLMusicHelper.coursePlay(course.demoFile) AudioPlayer.get().singlePlay(music)
} }
if (course.demoType == 2) { if (course.demoType == 2) {
YDLMusicHelper.playType = 1 //todo 视屏播放
YDLMusicHelper.courseVideoUlr = course.demoFile // YDLMusicHelper.playType = 1
// YDLMusicHelper.courseVideoUlr = course.demoFile
PlayerFloatHelper.show(mContext) //
// PlayerFloatHelper.show(mContext)
} }
...@@ -235,8 +245,7 @@ class CourseItemNewView : ConstraintLayout { ...@@ -235,8 +245,7 @@ class CourseItemNewView : ConstraintLayout {
override fun onPlayFinish() { override fun onPlayFinish() {
PlayerFloatHelper.hide() PlayerFloatHelper.hide()
YDLMusicHelper.clearTempData() AudioPlayer.get().stopPlayer()
YDLMusicHelper.stop()
} }
override fun onPauseClick() { override fun onPauseClick() {
......
...@@ -12,7 +12,7 @@ import com.ydl.ydlcommon.data.http.ThrowableConsumer ...@@ -12,7 +12,7 @@ import com.ydl.ydlcommon.data.http.ThrowableConsumer
import com.ydl.ydlcommon.router.IYDLRouterConstant import com.ydl.ydlcommon.router.IYDLRouterConstant
import com.yidianling.course.R import com.yidianling.course.R
import com.yidianling.course.bean.RedListParam import com.yidianling.course.bean.RedListParam
import com.yidianling.course.net.RetrofitUtils import com.yidianling.course.net.CourseRetrofitUtils
import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.functions.Consumer import io.reactivex.functions.Consumer
import kotlinx.android.synthetic.main.course_redpacket_view.view.* import kotlinx.android.synthetic.main.course_redpacket_view.view.*
...@@ -83,7 +83,7 @@ class CourseRedPacketView : RelativeLayout { ...@@ -83,7 +83,7 @@ class CourseRedPacketView : RelativeLayout {
@SuppressLint("CheckResult") @SuppressLint("CheckResult")
fun initData(visible: Int) { fun initData(visible: Int) {
this.redPacketVisible = visible this.redPacketVisible = visible
RetrofitUtils.getCouponMax(RedListParam(3)).compose(RxUtils.resultJavaData()) CourseRetrofitUtils.getCouponMax(RedListParam(3)).compose(RxUtils.resultJavaData())
.map { it } .map { it }
.filter { it != null } .filter { it != null }
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
......
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="true">
<shape>
<corners android:radius="13dp"/>
<gradient android:endColor="@color/color_FFD814" android:startColor="@color/color_FFDB26" />
</shape>
</item>
</selector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.ydl.ydlcommon.view.TitleBar
android:id="@+id/title_bar"
android:layout_width="match_parent"
android:layout_height="50dp"
app:title_text="课后笔记"
app:left_start_icon="@drawable/course_toolbar_back"/>
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:overScrollMode="never">
</android.support.v7.widget.RecyclerView>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="12dp"
android:paddingRight="15dp"
tools:parentTag="android.support.constraint.ConstraintLayout">
<com.ydl.ydlcommon.view.widgets.RoundImageView
android:id="@+id/iv_head"
android:layout_width="92dp"
android:layout_height="114dp"
android:layout_marginStart="2dp"
android:layout_marginTop="20dp"
android:scaleType="centerCrop"
app:borderRadius="4dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:type="round"
tools:background="@color/main_theme"/>
<ImageView
android:id="@+id/iv_play"
android:layout_width="26dp"
android:layout_height="26dp"
android:layout_marginRight="3dp"
android:layout_marginBottom="3dp"
android:padding="3dp"
android:src="@drawable/course_ico_course_list_play"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@+id/iv_head"
app:layout_constraintEnd_toEndOf="@+id/iv_head"
tools:visibility="visible"/>
<ImageView
android:id="@+id/iv_new"
android:layout_width="27dp"
android:layout_height="16dp"
android:layout_marginLeft="0.5dp"
android:src="@drawable/course_ico_course_list_new"
android:visibility="gone"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/iv_head"
tools:visibility="visible"/>
<ImageView
android:id="@+id/iv_hot"
android:layout_width="27dp"
android:layout_height="16dp"
android:layout_marginLeft="0.5dp"
android:src="@drawable/course_ico_course_list_hot"
android:visibility="gone"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/iv_head"/>
<android.support.constraint.Guideline
android:id="@+id/guide_line"
android:layout_width="1dp"
android:layout_height="match_parent"
android:orientation="vertical"
app:layout_constraintGuide_begin="100dp"
app:layout_constraintStart_toEndOf="@+id/iv_head"/>
<TextView
android:id="@+id/tv_title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:ellipsize="end"
android:maxLines="2"
android:textColor="@color/color_333333"
android:textSize="16sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/guide_line"
app:layout_constraintTop_toTopOf="@+id/iv_head"
tools:text="走出余光恐惧,一位余光恐惧者的亲诉一位余光恐惧者的亲诉一位余光恐惧者的亲诉一位余光恐惧者的亲诉"/>
<TextView
android:id="@+id/tv_doctor_info"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_marginTop="4dp"
android:ellipsize="end"
android:maxLines="1"
android:textColor="@color/color_242424"
android:textSize="12sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/guide_line"
app:layout_constraintTop_toBottomOf="@+id/tv_title"
tools:text="黄世杰国家二黄黄世杰国家二黄世杰国家二级心理咨询师级心理咨询师世杰国家二级心理咨询师级心理咨询师"/>
<TextView
android:id="@+id/tv_course_info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_marginTop="4dp"
android:textColor="@color/color_999999"
android:textSize="12sp"
app:layout_constraintStart_toEndOf="@+id/guide_line"
app:layout_constraintTop_toBottomOf="@+id/tv_doctor_info"
tools:text="共12讲"/>
<View
android:id="@+id/view_line"
android:layout_width="0.5dp"
android:layout_height="0dp"
android:layout_marginStart="6dp"
android:layout_marginEnd="2dp"
android:background="@color/color_EBEBEB"
app:layout_constraintBottom_toBottomOf="@+id/tv_course_num"
app:layout_constraintStart_toEndOf="@+id/tv_course_info"
app:layout_constraintTop_toBottomOf="@+id/tv_doctor_info"
app:layout_constraintTop_toTopOf="@+id/tv_course_info"/>
<TextView
android:id="@+id/tv_course_num"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_marginTop="4dp"
android:textColor="@color/color_999999"
android:textSize="12sp"
app:layout_constraintStart_toEndOf="@+id/view_line"
app:layout_constraintTop_toBottomOf="@+id/tv_doctor_info"
tools:text="320人已学"/>
<ImageView
android:id="@+id/tv_cu_xiao"
android:layout_width="42dp"
android:layout_height="13dp"
android:layout_marginStart="4dp"
android:layout_marginBottom="3dp"
android:src="@drawable/course_ico_course_cuxiao"
app:layout_constraintBottom_toBottomOf="@+id/iv_head"
app:layout_constraintStart_toEndOf="@+id/guide_line"/>
<ImageView
android:id="@+id/tv_fan_li"
android:layout_width="42dp"
android:layout_height="13dp"
android:layout_marginStart="4dp"
android:layout_marginBottom="3dp"
android:src="@drawable/coursde_ico_course_fanli"
app:layout_constraintBottom_toBottomOf="@+id/iv_head"
app:layout_constraintStart_toEndOf="@+id/tv_cu_xiao"/>
<TextView
android:id="@+id/tv_price_decimal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/dincond_bold"
android:text=".00"
android:textColor="@color/color_FF5040"
android:textSize="12sp"
app:layout_constraintBottom_toBottomOf="@+id/iv_head"
app:layout_constraintEnd_toEndOf="parent"/>
<TextView
android:id="@+id/tv_price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="19dp"
android:fontFamily="@font/dincond_bold"
android:textColor="@color/color_FF5040"
android:textSize="18sp"
android:textStyle="bold"
app:layout_constraintBottom_toTopOf="@+id/view_bottom_line"
app:layout_constraintEnd_toStartOf="@+id/tv_price_decimal"
tools:text="128"/>
<TextView
android:id="@+id/tv_price_si"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="1dp"
android:layout_marginEnd="2dp"
android:text="¥"
android:textColor="@color/color_FF5040"
android:textSize="11sp"
android:textStyle="bold"
app:layout_constraintEnd_toStartOf="@+id/tv_price"
app:layout_constraintTop_toTopOf="@+id/tv_price"/>
<TextView
android:id="@+id/tv_original_price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="3dp"
android:textColor="@color/color_BFBFBF"
android:textSize="10sp"
app:layout_constraintBottom_toBottomOf="@+id/iv_head"
app:layout_constraintEnd_toStartOf="@+id/tv_price_si"
tools:text="¥166"/>
<TextView
android:id="@+id/tv_view_course"
android:layout_width="84dp"
android:layout_height="24dp"
android:background="@drawable/course_background_course_list_item_view"
android:gravity="center"
android:text="立即听课"
android:textColor="@color/color_242424"
android:textSize="13dp"
android:textStyle="bold"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@id/iv_head"
app:layout_constraintEnd_toEndOf="parent"/>
<View
android:id="@+id/view_bottom_line"
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_marginStart="2dp"
android:layout_marginTop="20dp"
android:background="@color/color_EBEBEB"
app:layout_constraintTop_toBottomOf="@+id/iv_head"/>
</merge>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white">
<com.ydl.ydlcommon.view.CircleImageView
android:id="@+id/img_head"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginLeft="15dp"
android:layout_marginTop="15dp"
android:src="@drawable/course_head_place_hold_pic"/>
<TextView
android:id="@+id/text_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/img_head"
android:layout_alignTop="@+id/img_head"
android:layout_alignBottom="@+id/img_head"
android:textSize="14sp"
android:gravity="center_vertical"
android:layout_marginLeft="15dp"
tools:text="赵云"/>
<TextView
android:id="@+id/text_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/text_name"
android:layout_alignTop="@+id/text_name"
android:layout_alignBottom="@+id/text_name"
android:gravity="center_vertical"
android:layout_marginLeft="20dp"
android:textColor="#999999"
android:textSize="12sp"
android:layout_marginRight="15dp"
tools:text="207.02.12"/>
<TextView
android:id="@+id/text_des"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/text_name"
android:gravity="center_vertical"
android:textSize="15sp"
android:layout_marginRight="15dp"
android:layout_alignLeft="@+id/text_name"
tools:text="老师切入点很好,讲解很认真"/>
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_marginTop="15dp"
android:layout_below="@+id/text_des"
android:background="@color/color_F5F5F5"/>
</RelativeLayout>
\ No newline at end of file
...@@ -137,4 +137,6 @@ ...@@ -137,4 +137,6 @@
<color name="color_0D1A30">#0D1A30</color> <color name="color_0D1A30">#0D1A30</color>
<color name="color_FDD33D">#FDD33D</color> <color name="color_FDD33D">#FDD33D</color>
<color name="color_BFBFBF">#BFBFBF</color> <color name="color_BFBFBF">#BFBFBF</color>
<color name="color_FF5040">#FF5040</color>
<color name="color_FFD814">#FFD814</color>
</resources> </resources>
\ No newline at end of file
...@@ -28,6 +28,7 @@ class PlayerFloatHelper { ...@@ -28,6 +28,7 @@ class PlayerFloatHelper {
//已添加悬浮窗页面全路径名 //已添加悬浮窗页面全路径名
private var showingPageName: String? = null private var showingPageName: String? = null
private var wm: WindowManager? = null private var wm: WindowManager? = null
var isCanClick = true
var playingType = PlayTypeEnum.PLAY_TYPE_NONE var playingType = PlayTypeEnum.PLAY_TYPE_NONE
var playTempData = hashMapOf<String,String>() var playTempData = hashMapOf<String,String>()
......
...@@ -117,9 +117,11 @@ class PlayerFloatView(var mContext: Context) : FrameLayout(mContext) { ...@@ -117,9 +117,11 @@ class PlayerFloatView(var mContext: Context) : FrameLayout(mContext) {
updateViewPosition() updateViewPosition()
} else { } else {
if (!isMove) { if (!isMove) {
if (PlayerFloatHelper.isCanClick){
PlayerFloatHelper.startPlayingActivity(context) PlayerFloatHelper.startPlayingActivity(context)
} }
} }
}
isMove = false isMove = false
mTouchStartY = 0f mTouchStartY = 0f
mTouchStartX = mTouchStartY mTouchStartX = mTouchStartY
...@@ -149,9 +151,11 @@ class PlayerFloatView(var mContext: Context) : FrameLayout(mContext) { ...@@ -149,9 +151,11 @@ class PlayerFloatView(var mContext: Context) : FrameLayout(mContext) {
updateViewPosition() updateViewPosition()
} else { } else {
if (!isMove) { if (!isMove) {
if (PlayerFloatHelper.isCanClick){
PlayerFloatHelper.startPlayingActivity(context) PlayerFloatHelper.startPlayingActivity(context)
} }
} }
}
isMove = false isMove = false
mTouchStartY = 0f mTouchStartY = 0f
mTouchStartX = mTouchStartY mTouchStartX = mTouchStartY
...@@ -181,9 +185,11 @@ class PlayerFloatView(var mContext: Context) : FrameLayout(mContext) { ...@@ -181,9 +185,11 @@ class PlayerFloatView(var mContext: Context) : FrameLayout(mContext) {
updateViewPosition() updateViewPosition()
} else { } else {
if (!isMove) { if (!isMove) {
if (PlayerFloatHelper.isCanClick){
PlayerFloatHelper.startPlayingActivity(context) PlayerFloatHelper.startPlayingActivity(context)
} }
} }
}
isMove = false isMove = false
mTouchStartY = 0f mTouchStartY = 0f
mTouchStartX = mTouchStartY mTouchStartX = mTouchStartY
......
...@@ -6,3 +6,4 @@ package com.ydl.ydlcommon.base.config ...@@ -6,3 +6,4 @@ package com.ydl.ydlcommon.base.config
*/ */
const val YDL_DOMAIN = "Domain-Name:" const val YDL_DOMAIN = "Domain-Name:"
const val YDL_DOMAIN_JAVA = "JAVA_BASE_URL" const val YDL_DOMAIN_JAVA = "JAVA_BASE_URL"
const val YDL_DOMAIN_COUPON_URL = "SERVER_COUPON_URL"
...@@ -21,7 +21,7 @@ class GlobalConfig private constructor(var builder: Builder) { ...@@ -21,7 +21,7 @@ class GlobalConfig private constructor(var builder: Builder) {
this.appDebug = builder.appDebug this.appDebug = builder.appDebug
} }
fun initEnv(){ fun initEnv() {
builder.initEnv(BaseApp.instance) builder.initEnv(BaseApp.instance)
} }
...@@ -30,9 +30,9 @@ class GlobalConfig private constructor(var builder: Builder) { ...@@ -30,9 +30,9 @@ class GlobalConfig private constructor(var builder: Builder) {
private var okHttpClient: OkHttpClient? = null private var okHttpClient: OkHttpClient? = null
var appFrom: String = YDLConstants.FROM_YDL var appFrom: String = YDLConstants.FROM_YDL
var appEnv: String = YDLConstants.ENV_PROD var appEnv: String = YDLConstants.ENV_PROD
var appBaseURL : String ? =null var appBaseURL: String? = null
var multipleUrl : HashMap<String,String> = hashMapOf() var multipleUrl: HashMap<String, String> = hashMapOf()
var appDebug :Boolean = false var appDebug: Boolean = false
fun setOkHttpClient(okHttpClient: OkHttpClient) { fun setOkHttpClient(okHttpClient: OkHttpClient) {
this.okHttpClient = okHttpClient this.okHttpClient = okHttpClient
...@@ -42,7 +42,7 @@ class GlobalConfig private constructor(var builder: Builder) { ...@@ -42,7 +42,7 @@ class GlobalConfig private constructor(var builder: Builder) {
this.appBaseURL = baseURL this.appBaseURL = baseURL
} }
fun setDebug(isDebug:Boolean) { fun setDebug(isDebug: Boolean) {
this.appDebug = isDebug this.appDebug = isDebug
} }
...@@ -81,12 +81,13 @@ class GlobalConfig private constructor(var builder: Builder) { ...@@ -81,12 +81,13 @@ class GlobalConfig private constructor(var builder: Builder) {
.getInstance() .getInstance()
.init(context) .init(context)
.config() .config()
.setBaseUrl(appBaseURL?:HttpConfig.PHP_BASE_URL) .setBaseUrl(appBaseURL ?: HttpConfig.PHP_BASE_URL)
.addUrl(YDL_DOMAIN_JAVA, HttpConfig.JAVA_BASE_URL) .addUrl(YDL_DOMAIN_JAVA, HttpConfig.JAVA_BASE_URL)
.addUrl(YDL_DOMAIN_COUPON_URL, HttpConfig.SERVER_COUPON_URL)
.setMultipleUrlMap(multipleUrl) .setMultipleUrlMap(multipleUrl)
if (okHttpClient == null) { if (okHttpClient == null) {
okHttpClient = HttpConfig.getInstance().createOkHttp(context, appFrom,appDebug) okHttpClient = HttpConfig.getInstance().createOkHttp(context, appFrom, appDebug)
} }
apiFactory.setOkClient(okHttpClient) apiFactory.setOkClient(okHttpClient)
......
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