[8.1.2+]
[media] [收束music]
This commit is contained in:
@@ -3,10 +3,9 @@ package com.mogo.och.charter.passenger.model
|
||||
import com.mogo.commons.storage.SharedPrefsMgr
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
|
||||
import com.mogo.eagle.core.utilcode.util.TAG
|
||||
import com.mogo.och.common.module.manager.audition.AuditionManager
|
||||
import com.mogo.och.common.module.manager.audition.PlayState
|
||||
import com.mogo.och.bridge.autopilot.autopilot.IOchAutopilotStatusListener
|
||||
import com.mogo.och.bridge.autopilot.autopilot.OchAutoPilotStatusListenerManager
|
||||
import com.mogo.och.common.module.biz.media.MediaManager
|
||||
import com.mogo.och.common.module.utils.RxUtils
|
||||
import io.reactivex.disposables.Disposable
|
||||
|
||||
@@ -23,36 +22,21 @@ object MusicModel : IOchAutopilotStatusListener, IOrderStatusChangeListener {
|
||||
|
||||
|
||||
override fun onAutopilotStatusResponse(state: Int) {
|
||||
// 自驾状态变化 第一次进入自驾 如果音乐属于暂停状态 开始播放 如果没有播放就播放第一首
|
||||
if(state==IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) {
|
||||
val string = SharedPrefsMgr.getInstance().getString(startMusicWithOrderKey)
|
||||
if (string == null) {
|
||||
CharterPassengerModel.getCurrentOrderInfo()?.let {
|
||||
RxUtils.disposeSubscribe(stopMusicDisposable)
|
||||
SharedPrefsMgr.getInstance().putString(startMusicWithOrderKey, it.orderNo)
|
||||
AuditionManager.musicList.forEach {music->
|
||||
if(music.state==PlayState.Pause){
|
||||
AuditionManager.toggle(music)
|
||||
return
|
||||
}
|
||||
}
|
||||
if(!AuditionManager.isPlaying()) {
|
||||
AuditionManager.playFirst()
|
||||
}
|
||||
MediaManager.Audition.replayOrplayFirst()
|
||||
}
|
||||
} else {
|
||||
CharterPassengerModel.getCurrentOrderInfo()?.let {
|
||||
if (it.orderNo != string) {
|
||||
RxUtils.disposeSubscribe(stopMusicDisposable)
|
||||
SharedPrefsMgr.getInstance().putString(startMusicWithOrderKey, it.orderNo)
|
||||
AuditionManager.musicList.forEach {music->
|
||||
if(music.state==PlayState.Pause){
|
||||
AuditionManager.toggle(music)
|
||||
return
|
||||
}
|
||||
}
|
||||
if(!AuditionManager.isPlaying()) {
|
||||
AuditionManager.playFirst()
|
||||
}
|
||||
MediaManager.Audition.replayOrplayFirst()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -69,7 +53,7 @@ object MusicModel : IOchAutopilotStatusListener, IOrderStatusChangeListener {
|
||||
CharterPassengerModel.getCurrentOrderInfo()?.let {
|
||||
RxUtils.disposeSubscribe(stopMusicDisposable)
|
||||
stopMusicDisposable = RxUtils.createSubscribe(60_000) {
|
||||
AuditionManager.stop()
|
||||
MediaManager.Audition.stop()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,9 +14,10 @@ import com.bumptech.glide.request.RequestOptions
|
||||
import com.bumptech.glide.request.target.SimpleTarget
|
||||
import com.bumptech.glide.request.transition.Transition
|
||||
import com.mogo.och.charter.passenger.R
|
||||
import com.mogo.och.common.module.manager.audition.AuditionManager
|
||||
import com.mogo.och.common.module.manager.audition.MusicData
|
||||
import com.mogo.och.common.module.manager.audition.PlayState
|
||||
import com.mogo.och.common.module.biz.media.MediaManager
|
||||
import com.mogo.och.common.module.biz.media.MusicDataChangeListener
|
||||
import com.mogo.och.common.module.biz.media.data.MusicData
|
||||
import com.mogo.och.common.module.biz.media.data.PlayState
|
||||
import kotlinx.android.synthetic.main.charter_p_bottom_music.view.aciv_center_image
|
||||
import kotlinx.android.synthetic.main.charter_p_bottom_music.view.actv_title
|
||||
import kotlinx.android.synthetic.main.charter_p_bottom_music.view.aciv_playing
|
||||
@@ -27,7 +28,7 @@ open class MusicCheckView @JvmOverloads constructor(
|
||||
context: Context,
|
||||
attrs: AttributeSet? = null,
|
||||
defStyleAttr: Int = 0
|
||||
) : ConstraintLayout(context, attrs, defStyleAttr), AuditionManager.MusicDataChangeListener {
|
||||
) : ConstraintLayout(context, attrs, defStyleAttr), MusicDataChangeListener {
|
||||
|
||||
companion object {
|
||||
private const val TAG = "StopSiteView"
|
||||
@@ -87,11 +88,12 @@ open class MusicCheckView @JvmOverloads constructor(
|
||||
actv_title.setTextColor(context.getColor(R.color.charter_p_090f28))
|
||||
aciv_center_image.setImageResource(normalDrawable)
|
||||
|
||||
if(AuditionManager.isPlaying()){
|
||||
|
||||
if(MediaManager.Audition.isPlaying()==true){
|
||||
default_info.visibility = View.GONE
|
||||
aciv_playing.visibility = View.VISIBLE
|
||||
aciv_playing_bg.visibility = View.VISIBLE
|
||||
AuditionManager.musicDataPlaying?.let {
|
||||
MediaManager.Audition.getPlaying()?.let {
|
||||
Glide.with(context)
|
||||
.load(it.coverHeadImageUrl)
|
||||
.apply(RequestOptions().placeholder(R.drawable.charter_p_music_bg_relax_head))
|
||||
@@ -140,7 +142,7 @@ open class MusicCheckView @JvmOverloads constructor(
|
||||
|
||||
override fun onAttachedToWindow() {
|
||||
super.onAttachedToWindow()
|
||||
AuditionManager.addDataChangeListener(TAG,this)
|
||||
MediaManager.Audition.addListener(TAG,this)
|
||||
parent?.let {
|
||||
if (parent is ConstraintLayout) {
|
||||
if (backageViewId > 0) {
|
||||
@@ -155,7 +157,7 @@ open class MusicCheckView @JvmOverloads constructor(
|
||||
|
||||
override fun onDetachedFromWindow() {
|
||||
super.onDetachedFromWindow()
|
||||
AuditionManager.removeDataChangeListener(TAG)
|
||||
MediaManager.Audition.removeListener(TAG)
|
||||
}
|
||||
|
||||
override fun updateState(oldData: MusicData?, musicData: MusicData) {
|
||||
|
||||
@@ -8,7 +8,7 @@ import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.lifecycle.findViewTreeViewModelStoreOwner
|
||||
import com.mogo.och.charter.passenger.R
|
||||
import com.mogo.och.charter.passenger.ui.music.list.MusicListView
|
||||
import com.mogo.och.common.module.manager.audition.MusicData
|
||||
import com.mogo.och.common.module.biz.media.data.MusicData
|
||||
import kotlinx.android.synthetic.main.charter_p_music.view.mlv_list
|
||||
import kotlinx.android.synthetic.main.charter_p_music.view.mpv_music_info
|
||||
|
||||
|
||||
@@ -13,8 +13,8 @@ import androidx.core.content.ContextCompat
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.och.charter.passenger.R
|
||||
import com.mogo.och.common.module.manager.audition.MusicData
|
||||
import com.mogo.och.common.module.manager.audition.PlayState
|
||||
import com.mogo.och.common.module.biz.media.data.MusicData
|
||||
import com.mogo.och.common.module.biz.media.data.PlayState
|
||||
import me.jessyan.autosize.AutoSizeCompat
|
||||
|
||||
/**
|
||||
@@ -83,7 +83,7 @@ class MusicListItemAdapter(
|
||||
holder.musicName.setTypeface(null,Typeface.NORMAL)
|
||||
}
|
||||
|
||||
if (musicData.state==PlayState.Playing) {
|
||||
if (musicData.state== PlayState.Playing) {
|
||||
holder.musicPlayState.visibility = View.VISIBLE
|
||||
}else{
|
||||
holder.musicPlayState.visibility = View.GONE
|
||||
@@ -105,7 +105,7 @@ class MusicListItemAdapter(
|
||||
notifyItemInserted(dataList.size)
|
||||
}
|
||||
|
||||
fun upDateMusicData(oldData: MusicData?,musicData: MusicData) {
|
||||
fun upDateMusicData(oldData: MusicData?, musicData: MusicData) {
|
||||
dataList.forEachIndexed { index, musicDataIn ->
|
||||
if (musicDataIn.id==musicData.id) {
|
||||
musicDataIn.state = musicData.state
|
||||
@@ -143,7 +143,7 @@ class MusicListItemAdapter(
|
||||
}
|
||||
|
||||
interface ClickListener {
|
||||
fun clickItem(musicData: MusicData,position: Int)
|
||||
fun clickItem(musicData: MusicData, position: Int)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -9,7 +9,7 @@ import androidx.lifecycle.findViewTreeViewModelStoreOwner
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.och.charter.passenger.R
|
||||
import com.mogo.och.common.module.manager.audition.MusicData
|
||||
import com.mogo.och.common.module.biz.media.data.MusicData
|
||||
import kotlinx.android.synthetic.main.charter_p_music_list.view.rv_music_list
|
||||
|
||||
class MusicListView : ConstraintLayout, MusicListViewModel.IMusicListViewCaLillback,
|
||||
@@ -64,7 +64,7 @@ class MusicListView : ConstraintLayout, MusicListViewModel.IMusicListViewCaLillb
|
||||
lineAdapter.addOneData(it)
|
||||
}
|
||||
|
||||
override fun updateMusicData(oldData: MusicData?,musicData: MusicData) {
|
||||
override fun updateMusicData(oldData: MusicData?, musicData: MusicData) {
|
||||
lineAdapter.upDateMusicData(oldData,musicData)
|
||||
CallerLogger.d(TAG,"${Thread.currentThread().name}----更新数据${oldData}-----${musicData}")
|
||||
}
|
||||
@@ -73,7 +73,7 @@ class MusicListView : ConstraintLayout, MusicListViewModel.IMusicListViewCaLillb
|
||||
lineAdapter.setSelect(nextMusicData,preMusicData)
|
||||
}
|
||||
|
||||
override fun clickItem(musicData: MusicData,position: Int) {
|
||||
override fun clickItem(musicData: MusicData, position: Int) {
|
||||
// 通知主页面去显示详情
|
||||
this.checkListener?.checkItem(musicData)
|
||||
}
|
||||
|
||||
@@ -3,29 +3,23 @@ package com.mogo.och.charter.passenger.ui.music.list
|
||||
import androidx.lifecycle.ViewModel
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||
import com.mogo.och.common.module.manager.audition.AuditionManager
|
||||
import com.mogo.och.common.module.manager.audition.MusicData
|
||||
import com.mogo.och.common.module.biz.media.MediaManager
|
||||
import com.mogo.och.common.module.biz.media.MusicDataChangeListener
|
||||
import com.mogo.och.common.module.biz.media.data.MusicData
|
||||
|
||||
class MusicListViewModel : ViewModel(),
|
||||
AuditionManager.MusicDataChangeListener {
|
||||
class MusicListViewModel : ViewModel(), MusicDataChangeListener {
|
||||
|
||||
private val TAG = MusicListViewModel::class.java.simpleName
|
||||
|
||||
private var viewCallback: IMusicListViewCaLillback? = null
|
||||
|
||||
init {
|
||||
|
||||
}
|
||||
|
||||
fun setDistanceCallback(viewCallback: IMusicListViewCaLillback) {
|
||||
this.viewCallback = viewCallback
|
||||
viewCallback.addAllData(AuditionManager.musicList)
|
||||
CallerLogger.d(TAG,"初始化音乐${AuditionManager.musicList.size}")
|
||||
AuditionManager.addDataChangeListener(TAG,this)
|
||||
MediaManager.Audition.addListener(TAG,this)
|
||||
}
|
||||
|
||||
override fun onCleared() {
|
||||
AuditionManager.removeDataChangeListener(TAG)
|
||||
MediaManager.Audition.removeListener(TAG)
|
||||
super.onCleared()
|
||||
this.viewCallback = null
|
||||
}
|
||||
@@ -33,10 +27,15 @@ class MusicListViewModel : ViewModel(),
|
||||
interface IMusicListViewCaLillback {
|
||||
fun addAllData(data:MutableList<MusicData>)
|
||||
fun addOneData(it: MusicData)
|
||||
fun updateMusicData(oldData: MusicData?,musicData: MusicData)
|
||||
fun updateMusicData(oldData: MusicData?, musicData: MusicData)
|
||||
fun upDateSelectMusic(nextMusicData: MusicData, preMusicData: MusicData?)
|
||||
}
|
||||
|
||||
override fun onDataDis(musicList: MutableList<MusicData>) {
|
||||
viewCallback?.addAllData(musicList)
|
||||
CallerLogger.d(TAG,"初始化音乐${musicList.size}")
|
||||
}
|
||||
|
||||
override fun addOneData(it: MusicData) {
|
||||
CallerLogger.d(TAG,"添加音乐:${it.songName}--${it.path}")
|
||||
UiThreadHandler.post({
|
||||
@@ -44,7 +43,7 @@ class MusicListViewModel : ViewModel(),
|
||||
}, UiThreadHandler.MODE.QUEUE)
|
||||
}
|
||||
|
||||
override fun updateState(oldData: MusicData?,musicData: MusicData) {
|
||||
override fun updateState(oldData: MusicData?, musicData: MusicData) {
|
||||
UiThreadHandler.post({
|
||||
viewCallback?.updateMusicData(oldData, musicData)
|
||||
}, UiThreadHandler.MODE.QUEUE)
|
||||
|
||||
@@ -17,8 +17,8 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.util.TimeTransformUtils
|
||||
import com.mogo.och.charter.passenger.R
|
||||
import com.mogo.och.charter.passenger.ui.music.list.MusicListViewModel
|
||||
import com.mogo.och.common.module.manager.audition.MusicData
|
||||
import com.mogo.och.common.module.manager.audition.PlayState
|
||||
import com.mogo.och.common.module.biz.media.data.MusicData
|
||||
import com.mogo.och.common.module.biz.media.data.PlayState
|
||||
import com.mogo.och.common.module.utils.DateTimeUtil
|
||||
import kotlinx.android.synthetic.main.charter_p_music_playing.view.iv_music_cover
|
||||
import kotlinx.android.synthetic.main.charter_p_music_playing.view.iv_music_cover_bg
|
||||
@@ -123,7 +123,7 @@ class MusicPlayingView : ConstraintLayout, MusicPlayingViewModel.IMusicPlayingVi
|
||||
tv_tag.text = musicData.tag.first()
|
||||
tv_playing_time.text = DateTimeUtil.second2Time(0)
|
||||
tv_playing_during.text = TimeTransformUtils.stringForTime(musicData.duration.toInt())
|
||||
if(musicData.state==PlayState.Playing){
|
||||
if(musicData.state== PlayState.Playing){
|
||||
iv_toggle.setImageResource(R.drawable.charter_p_music_pause)
|
||||
startAnimal()
|
||||
}else{
|
||||
@@ -168,7 +168,7 @@ class MusicPlayingView : ConstraintLayout, MusicPlayingViewModel.IMusicPlayingVi
|
||||
}
|
||||
|
||||
override fun setPlayOrpause(it: MusicData) {
|
||||
if(it.state==PlayState.Playing){
|
||||
if(it.state== PlayState.Playing){
|
||||
iv_toggle.setImageResource(R.drawable.charter_p_music_pause)
|
||||
startAnimal()
|
||||
}else{
|
||||
@@ -193,7 +193,7 @@ class MusicPlayingView : ConstraintLayout, MusicPlayingViewModel.IMusicPlayingVi
|
||||
tv_playing_during.text = TimeTransformUtils.stringForTime(duration.toInt())
|
||||
}
|
||||
|
||||
override fun setSelect(currentMusicData: MusicData,preMusicData: MusicData?) {
|
||||
override fun setSelect(currentMusicData: MusicData, preMusicData: MusicData?) {
|
||||
viewListModel?.selectMusic(currentMusicData,preMusicData)
|
||||
}
|
||||
|
||||
|
||||
@@ -3,32 +3,39 @@ package com.mogo.och.charter.passenger.ui.music.playing
|
||||
import androidx.lifecycle.ViewModel
|
||||
import com.elegant.utils.UiThreadHandler
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.och.common.module.manager.audition.AuditionManager
|
||||
import com.mogo.och.common.module.manager.audition.MusicData
|
||||
import com.mogo.och.common.module.biz.media.MediaManager
|
||||
import com.mogo.och.common.module.biz.media.MusicDataChangeListener
|
||||
import com.mogo.och.common.module.biz.media.data.MusicData
|
||||
|
||||
class MusicPlayingViewModel : ViewModel(), AuditionManager.MusicDataChangeListener {
|
||||
class MusicPlayingViewModel : ViewModel(), MusicDataChangeListener {
|
||||
|
||||
private val TAG = MusicPlayingViewModel::class.java.simpleName
|
||||
|
||||
private var viewCallback: IMusicPlayingViewCallback? = null
|
||||
|
||||
private var checkMusicData:MusicData?=null
|
||||
private var checkMusicData: MusicData?=null
|
||||
|
||||
init {
|
||||
|
||||
}
|
||||
private val musicDataList = mutableListOf<MusicData>()
|
||||
|
||||
fun setDistanceCallback(viewCallback: IMusicPlayingViewCallback) {
|
||||
this.viewCallback = viewCallback
|
||||
AuditionManager.addDataChangeListener(TAG,this)
|
||||
MediaManager.Audition.addListener(TAG,this)
|
||||
}
|
||||
|
||||
override fun onCleared() {
|
||||
super.onCleared()
|
||||
AuditionManager.removeDataChangeListener(TAG)
|
||||
MediaManager.Audition.removeListener(TAG)
|
||||
this.viewCallback = null
|
||||
}
|
||||
|
||||
override fun onDataDis(musicList: MutableList<MusicData>) {
|
||||
musicDataList.addAll(musicDataList)
|
||||
}
|
||||
|
||||
override fun addOneData(it: MusicData) {
|
||||
musicDataList.add(it)
|
||||
}
|
||||
|
||||
fun setMusicData(musicData: MusicData) {
|
||||
this.checkMusicData = musicData
|
||||
this.viewCallback?.setViewData(musicData)
|
||||
@@ -38,9 +45,8 @@ class MusicPlayingViewModel : ViewModel(), AuditionManager.MusicDataChangeListen
|
||||
if(checkMusicData!=null){
|
||||
setMusicData(this.checkMusicData!!)
|
||||
}else{
|
||||
val musicList = AuditionManager.musicList
|
||||
if(musicList.size>0){
|
||||
val first = musicList.first()
|
||||
if (musicDataList.isNotEmpty()) {
|
||||
val first = musicDataList.first()
|
||||
setMusicData(first)
|
||||
viewCallback?.setSelect(first,null)
|
||||
}
|
||||
@@ -50,33 +56,34 @@ class MusicPlayingViewModel : ViewModel(), AuditionManager.MusicDataChangeListen
|
||||
fun toggle() {
|
||||
checkMusicData?.let {
|
||||
CallerLogger.d(TAG,"toggle:${it.songName}")
|
||||
AuditionManager.toggle(it)
|
||||
MediaManager.Audition.toggle(it)
|
||||
}
|
||||
}
|
||||
|
||||
fun showPreMusic() {
|
||||
checkMusicData?.let {
|
||||
val playing = AuditionManager.isPlaying()
|
||||
val nextMusicData = AuditionManager.getPreMusicData(it)
|
||||
val preTempMusic = checkMusicData
|
||||
setMusicData(nextMusicData)
|
||||
viewCallback?.setSelect(nextMusicData,preTempMusic)
|
||||
if(playing){
|
||||
AuditionManager.play(nextMusicData)
|
||||
MediaManager.Audition.getPreAuditionData(it)?.let {
|
||||
val preTempMusic = checkMusicData
|
||||
setMusicData(it)
|
||||
viewCallback?.setSelect(it,preTempMusic)
|
||||
if(MediaManager.Audition.isPlaying()==true){
|
||||
MediaManager.Audition.play(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun showNextMusic() {
|
||||
checkMusicData?.let {
|
||||
val playing = AuditionManager.isPlaying()
|
||||
val nextMusicData = AuditionManager.getNextMusicData(it)
|
||||
val preTempMusic = checkMusicData
|
||||
setMusicData(nextMusicData)
|
||||
viewCallback?.setSelect(nextMusicData,preTempMusic)
|
||||
if(playing){
|
||||
AuditionManager.play(nextMusicData)
|
||||
MediaManager.Audition.getNextAuditionData(it)?.let {
|
||||
val preTempMusic = checkMusicData
|
||||
setMusicData(it)
|
||||
viewCallback?.setSelect(it,preTempMusic)
|
||||
if(MediaManager.Audition.isPlaying()==true){
|
||||
MediaManager.Audition.play(it)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -84,10 +91,10 @@ class MusicPlayingViewModel : ViewModel(), AuditionManager.MusicDataChangeListen
|
||||
fun setViewData(musicData: MusicData)
|
||||
fun setPlayOrpause(it: MusicData)
|
||||
fun setProgress(currentPlay: Long, duration: Long)
|
||||
fun setSelect(currentMusicData: MusicData,preMusicData: MusicData?)
|
||||
fun setSelect(currentMusicData: MusicData, preMusicData: MusicData?)
|
||||
}
|
||||
|
||||
override fun updateState(oldData:MusicData?,musicData: MusicData) {
|
||||
override fun updateState(oldData: MusicData?, musicData: MusicData) {
|
||||
checkMusicData?.let {
|
||||
if(it.id==musicData.id){
|
||||
it.state = musicData.state
|
||||
@@ -115,24 +122,25 @@ class MusicPlayingViewModel : ViewModel(), AuditionManager.MusicDataChangeListen
|
||||
viewCallback?.setPlayOrpause(it)
|
||||
}
|
||||
}
|
||||
val nextMusicData = AuditionManager.getNextMusicData(it)
|
||||
val preTempMusic = checkMusicData
|
||||
setMusicData(nextMusicData)
|
||||
viewCallback?.setSelect(nextMusicData,preTempMusic)
|
||||
AuditionManager.play(nextMusicData)
|
||||
MediaManager.Audition.getNextAuditionData(it)?.let { nextMusicData->
|
||||
val preTempMusic = checkMusicData
|
||||
setMusicData(nextMusicData)
|
||||
viewCallback?.setSelect(nextMusicData,preTempMusic)
|
||||
MediaManager.Audition.play(nextMusicData)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
fun seekTo(progress: Int) {
|
||||
AuditionManager.seekTo(progress)
|
||||
MediaManager.Audition.seekTo(progress)
|
||||
}
|
||||
|
||||
fun setClickMusicData(musicData: MusicData) {
|
||||
CallerLogger.d(TAG,"setClickMusicData:${musicData.songName}")
|
||||
setMusicData(musicData)
|
||||
val playing = AuditionManager.isPlaying()
|
||||
if(playing){
|
||||
AuditionManager.play(musicData)
|
||||
if(MediaManager.Audition.isPlaying()==true){
|
||||
MediaManager.Audition.play(musicData)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -24,7 +24,7 @@ import com.mogo.och.common.module.wigets.toast.ToastCharterUtils
|
||||
import com.mogo.eagle.core.widget.media.video.TextureVideoViewOutlineProvider
|
||||
import com.mogo.och.charter.passenger.R
|
||||
import com.mogo.och.charter.passenger.utils.FullVideoUtils
|
||||
import com.mogo.och.common.module.manager.audiofocus.AudioFocusManager
|
||||
import com.mogo.och.common.module.biz.media.MediaManager
|
||||
import com.mogo.och.common.module.wigets.media.MediaItem
|
||||
import com.mogo.skin.widget.SkinImageView
|
||||
import com.shuyu.gsyvideoplayer.listener.VideoAllCallBack
|
||||
@@ -133,7 +133,7 @@ class ConsultVideoPlayer : StandardGSYVideoPlayer {
|
||||
start.setImageResource(R.drawable.charter_p_function_video_player_pause_small)
|
||||
}
|
||||
showOrHideStartPlayButton(false)
|
||||
AudioFocusManager.setVideoFocusChange(true)
|
||||
MediaManager.setVideoFocusChange(true)
|
||||
}
|
||||
else -> {
|
||||
if(isIfCurrentIsFullscreen){
|
||||
@@ -142,7 +142,7 @@ class ConsultVideoPlayer : StandardGSYVideoPlayer {
|
||||
start.setImageResource(R.drawable.charter_p_function_video_player_start_small)
|
||||
}
|
||||
showOrHideStartPlayButton(true)
|
||||
AudioFocusManager.setVideoFocusChange(false)
|
||||
MediaManager.setVideoFocusChange(false)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -256,7 +256,7 @@ class ConsultVideoPlayer : StandardGSYVideoPlayer {
|
||||
|
||||
override fun onCompletion() {
|
||||
CallerLogger.d(TAG,"onCompletion")
|
||||
AudioFocusManager.setVideoFocusChange(false)
|
||||
MediaManager.setVideoFocusChange(false)
|
||||
start.setImageResource(R.drawable.charter_p_function_video_player_start_small)
|
||||
}
|
||||
|
||||
@@ -279,7 +279,7 @@ class ConsultVideoPlayer : StandardGSYVideoPlayer {
|
||||
override fun onError(what: Int, extra: Int) {
|
||||
super.onError(what, extra)
|
||||
CallerLogger.d(TAG,"onError--${what}--${extra}")
|
||||
AudioFocusManager.setVideoFocusChange(false)
|
||||
MediaManager.setVideoFocusChange(false)
|
||||
mThumbImageViewLayout?.visibility = View.VISIBLE
|
||||
ToastCharterUtils.showToastLong("哎呀,出错了,看看其他视频吧")
|
||||
currentTime = -1
|
||||
|
||||
@@ -1,16 +1,17 @@
|
||||
package com.mogo.och.common.module.manager.audiofocus
|
||||
package com.mogo.och.biz.media
|
||||
|
||||
import android.content.Context
|
||||
import android.media.AudioManager
|
||||
import com.mogo.commons.AbsMogoApplication
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.och.common.module.manager.EnvManager
|
||||
import com.mogo.och.common.module.manager.audition.AuditionManager
|
||||
import com.mogo.och.common.module.manager.audition.MusicData
|
||||
import com.mogo.och.common.module.manager.audition.PlayState
|
||||
import com.mogo.och.biz.media.audition.AuditionManager
|
||||
import com.mogo.och.common.module.biz.media.MusicDataChangeListener
|
||||
import com.mogo.och.common.module.biz.media.data.MusicData
|
||||
import com.mogo.och.common.module.biz.media.data.PlayState
|
||||
import com.shuyu.gsyvideoplayer.GSYVideoManager
|
||||
|
||||
object AudioFocusManager : AuditionManager.MusicDataChangeListener {
|
||||
object AudioFocusManager : MusicDataChangeListener {
|
||||
|
||||
const val TAG = "AudioFocusManager"
|
||||
|
||||
@@ -23,14 +24,14 @@ object AudioFocusManager : AuditionManager.MusicDataChangeListener {
|
||||
private var musicVolumeInTTS = 0
|
||||
|
||||
init {
|
||||
AuditionManager.addDataChangeListener(TAG,this)
|
||||
AuditionManager.addMusicListener(TAG,this)
|
||||
mAudioManager = AbsMogoApplication.getApp().getSystemService(Context.AUDIO_SERVICE) as AudioManager
|
||||
mMaxVolume = mAudioManager?.getStreamMaxVolume(AudioManager.STREAM_MUSIC)?:0
|
||||
musicVolumeInTTS = (mMaxVolume*0.1f).toInt()
|
||||
musicVolumeInTTS = (mMaxVolume *0.1f).toInt()
|
||||
}
|
||||
|
||||
override fun updateState(oldData: MusicData?, musicData: MusicData) {
|
||||
val temp = musicData.state==PlayState.Playing
|
||||
val temp = musicData.state== PlayState.Playing
|
||||
if(temp!= isPlayingMusic){
|
||||
isPlayingMusic = temp
|
||||
}
|
||||
@@ -38,7 +39,7 @@ object AudioFocusManager : AuditionManager.MusicDataChangeListener {
|
||||
// 播放音乐需要把视频暂停掉
|
||||
GSYVideoManager.onPause()
|
||||
}
|
||||
CallerLogger.d(TAG,"music updateState ${isPlayingTTS}--${isPlayingMusic}---${isPlayingVideo}")
|
||||
CallerLogger.d(TAG,"music updateState $isPlayingTTS--$isPlayingMusic---$isPlayingVideo")
|
||||
}
|
||||
|
||||
fun setTTSFocusChange(isSpeaking:Boolean){
|
||||
@@ -57,11 +58,11 @@ object AudioFocusManager : AuditionManager.MusicDataChangeListener {
|
||||
}
|
||||
}
|
||||
}
|
||||
CallerLogger.d(TAG, "setTTSFocusChange ${isPlayingTTS}--${isPlayingMusic}---${isPlayingVideo}")
|
||||
CallerLogger.d(TAG, "setTTSFocusChange $isPlayingTTS--$isPlayingMusic---$isPlayingVideo")
|
||||
}
|
||||
|
||||
fun setVideoFocusChange(isPlaying:Boolean){
|
||||
CallerLogger.d(TAG, "setMusicFocusChange ${isPlayingTTS}--${isPlayingMusic}---${isPlayingVideo}")
|
||||
CallerLogger.d(TAG, "setMusicFocusChange $isPlayingTTS--$isPlayingMusic---$isPlayingVideo")
|
||||
if(isPlaying!= isPlayingVideo) {
|
||||
isPlayingVideo = isPlaying
|
||||
if(isPlaying){
|
||||
@@ -0,0 +1,115 @@
|
||||
package com.mogo.och.biz.media
|
||||
|
||||
import android.content.Context
|
||||
import com.alibaba.android.arouter.facade.annotation.Route
|
||||
import com.mogo.eagle.core.function.call.base.CallerBase
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OCHCOMMON
|
||||
import com.mogo.och.biz.media.audition.AuditionManager
|
||||
import com.mogo.och.common.module.biz.media.IMediaListener
|
||||
import com.mogo.och.common.module.biz.media.MediaService
|
||||
import com.mogo.och.common.module.biz.media.MusicDataChangeListener
|
||||
import com.mogo.och.common.module.biz.media.data.MusicData
|
||||
import com.mogo.och.common.module.constant.OchCommonConst
|
||||
import com.mogo.och.common.module.wigets.media.MediaItem
|
||||
|
||||
|
||||
/**
|
||||
* eye 桥
|
||||
*/
|
||||
@Route(path = OchCommonConst.BIZ_Media)
|
||||
class MediaProvider : MediaService, CallerBase<IMediaListener>() {
|
||||
|
||||
private var context: Context? = null
|
||||
|
||||
private val tag = M_OCHCOMMON + "MediaProvider"
|
||||
|
||||
override fun init(context: Context?) {
|
||||
this.context = context
|
||||
}
|
||||
|
||||
override fun addMediaListener(tag: String, listener: IMediaListener) {
|
||||
addListener(tag, listener)
|
||||
}
|
||||
|
||||
override fun removeBridgeListener(tag: String) {
|
||||
removeListener(tag)
|
||||
}
|
||||
|
||||
override fun postSiteIntroduceInfo(list: MutableList<MediaItem>) {
|
||||
M_LISTENERS.forEach {
|
||||
it.value.diapatchMedia(list)
|
||||
}
|
||||
}
|
||||
|
||||
override fun setMediaResume() {
|
||||
M_LISTENERS.forEach {
|
||||
it.value.setMediaResume()
|
||||
}
|
||||
}
|
||||
|
||||
override fun setMediaPause() {
|
||||
M_LISTENERS.forEach {
|
||||
it.value.setMediaPause()
|
||||
}
|
||||
}
|
||||
|
||||
override fun setTTSFocusChange(speaking: Boolean) {
|
||||
AudioFocusManager.setTTSFocusChange(speaking)
|
||||
}
|
||||
|
||||
override fun setVideoFocusChange(playing: Boolean) {
|
||||
AudioFocusManager.setVideoFocusChange(playing)
|
||||
}
|
||||
|
||||
|
||||
|
||||
override fun musicStop() {
|
||||
AuditionManager.stop()
|
||||
}
|
||||
|
||||
override fun musicReplayOrplayFirst() {
|
||||
AuditionManager.replayOrplayFirst()
|
||||
}
|
||||
|
||||
override fun removeAuditionListener(tag: String) {
|
||||
AuditionManager.removeMusicListener(tag)
|
||||
}
|
||||
|
||||
override fun addAuditionListener(tag: String, listener: MusicDataChangeListener) {
|
||||
AuditionManager.addMusicListener(tag,listener)
|
||||
}
|
||||
|
||||
override fun auditionIsPlaying(): Boolean {
|
||||
return AuditionManager.isPlaying()
|
||||
}
|
||||
|
||||
override fun getPlaying(): MusicData? {
|
||||
return AuditionManager.musicDataPlaying
|
||||
}
|
||||
|
||||
override fun palyAudition(musicData: MusicData) {
|
||||
AuditionManager.play(musicData)
|
||||
}
|
||||
|
||||
override fun getPreAuditionData(it: MusicData): MusicData {
|
||||
return AuditionManager.getPreMusicData(it)
|
||||
}
|
||||
|
||||
override fun getNextAuditionData(it: MusicData): MusicData {
|
||||
return AuditionManager.getNextMusicData(it)
|
||||
}
|
||||
|
||||
override fun toggle(musicData: MusicData) {
|
||||
AuditionManager.toggle(musicData)
|
||||
}
|
||||
|
||||
override fun seekTo(progress: Int) {
|
||||
AuditionManager.seekTo(progress)
|
||||
}
|
||||
|
||||
override fun getAuditionDataList(): MutableList<MusicData> {
|
||||
return AuditionManager.musicList
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.mogo.och.biz.media
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import com.alibaba.android.arouter.launcher.ARouter
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OCHCOMMON
|
||||
import com.mogo.och.common.module.constant.OchCommonConst
|
||||
|
||||
object MediaServiceManager {
|
||||
|
||||
private const val TAG = M_OCHCOMMON+"MediaServiceManager"
|
||||
|
||||
@SuppressLint("StaticFieldLeak")
|
||||
private var mediaService: MediaProvider? =
|
||||
ARouter.getInstance().build(OchCommonConst.BIZ_Media).navigation() as MediaProvider
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.common.module.manager.audition
|
||||
package com.mogo.och.biz.media.audition
|
||||
|
||||
import android.media.AudioManager
|
||||
import android.media.MediaPlayer
|
||||
@@ -24,7 +24,7 @@ object Audition: MediaPlayer.OnPreparedListener,
|
||||
}
|
||||
|
||||
fun registerOnAuditionListener(listener: OnAuditionListener?) {
|
||||
this.listener = listener
|
||||
Audition.listener = listener
|
||||
}
|
||||
|
||||
fun unregisterOnAuditionListener() {
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.common.module.manager.audition
|
||||
package com.mogo.och.biz.media.audition
|
||||
|
||||
import android.media.MediaExtractor
|
||||
import android.media.MediaFormat
|
||||
@@ -11,6 +11,7 @@ import com.mogo.eagle.core.utilcode.download.callback.IDownloadListener
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OCHCOMMON
|
||||
import com.mogo.eagle.core.utilcode.util.ThreadUtils
|
||||
import com.mogo.och.common.module.biz.media.data.MusicData
|
||||
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
|
||||
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager.EVENT_KEY_INFE_WITH_MUSIC
|
||||
import com.mogo.och.common.module.utils.FileUtils
|
||||
@@ -25,7 +26,7 @@ import com.mogo.eagle.core.utilcode.util.FileUtils as FileHelper
|
||||
|
||||
object AuditionCacheManager {
|
||||
|
||||
private var dataChangeListener:DataChangeListener?=null
|
||||
private var dataChangeListener: DataChangeListener?=null
|
||||
private val context = AbsMogoApplication.getApp()
|
||||
private const val TAG = "AuditionCacheManager"
|
||||
|
||||
@@ -175,7 +176,7 @@ object AuditionCacheManager {
|
||||
}
|
||||
|
||||
fun addDataChangeListener(dataChangeListener: DataChangeListener) {
|
||||
this.dataChangeListener = dataChangeListener
|
||||
AuditionCacheManager.dataChangeListener = dataChangeListener
|
||||
getMusicDataByLocationConfig()
|
||||
}
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
package com.mogo.och.common.module.manager.audition
|
||||
package com.mogo.och.biz.media.audition
|
||||
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.util.ThreadUtils
|
||||
import com.mogo.och.common.module.manager.audiofocus.AudioFocusManager
|
||||
import com.mogo.och.common.module.biz.media.MusicDataChangeListener
|
||||
import com.mogo.och.common.module.biz.media.data.MusicData
|
||||
import com.mogo.och.common.module.biz.media.data.PlayState
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
|
||||
object AuditionManager: AuditionCacheManager.DataChangeListener, Audition.OnAuditionListener {
|
||||
@@ -18,22 +20,22 @@ object AuditionManager: AuditionCacheManager.DataChangeListener, Audition.OnAudi
|
||||
init {
|
||||
AuditionCacheManager.addDataChangeListener(this)
|
||||
Audition.registerOnAuditionListener(this)
|
||||
AudioFocusManager.load()
|
||||
}
|
||||
|
||||
fun addDataChangeListener(tag: String, listener: MusicDataChangeListener) {
|
||||
fun addMusicListener(tag: String, listener: MusicDataChangeListener) {
|
||||
if (dataChangeListeners.containsKey(tag)) {
|
||||
return
|
||||
}
|
||||
dataChangeListeners[tag] = listener
|
||||
listener.onDataDis(musicList)
|
||||
}
|
||||
|
||||
fun removeDataChangeListener(tag: String){
|
||||
fun removeMusicListener(tag: String){
|
||||
dataChangeListeners.remove(tag)
|
||||
}
|
||||
|
||||
|
||||
private fun getMusicDataByState(state:PlayState):Pair<Int,MusicData>?{
|
||||
private fun getMusicDataByState(state: PlayState):Pair<Int, MusicData>?{
|
||||
musicList.forEachIndexed { index, musicData ->
|
||||
if(musicData.state==state){
|
||||
return Pair(index,musicData)
|
||||
@@ -103,10 +105,23 @@ object AuditionManager: AuditionCacheManager.DataChangeListener, Audition.OnAudi
|
||||
}
|
||||
}
|
||||
|
||||
private fun resetData():MusicData?{
|
||||
var tempRusult:MusicData?=null
|
||||
//如果音乐属于暂停状态 开始播放 如果没有播放就播放第一首
|
||||
fun replayOrplayFirst(){
|
||||
musicList.forEach {music->
|
||||
if(music.state==PlayState.Pause){
|
||||
toggle(music)
|
||||
return
|
||||
}
|
||||
}
|
||||
if(!isPlaying()) {
|
||||
playFirst()
|
||||
}
|
||||
}
|
||||
|
||||
private fun resetData(): MusicData?{
|
||||
var tempRusult: MusicData?=null
|
||||
musicList.forEach {
|
||||
if(it.state!=PlayState.None){
|
||||
if(it.state!= PlayState.None){
|
||||
tempRusult = it
|
||||
}
|
||||
it.state = PlayState.None
|
||||
@@ -127,20 +142,6 @@ object AuditionManager: AuditionCacheManager.DataChangeListener, Audition.OnAudi
|
||||
}
|
||||
}
|
||||
|
||||
public interface MusicDataChangeListener{
|
||||
fun addOneData(it: MusicData){}
|
||||
|
||||
/**
|
||||
* toggle 修改播放器状态
|
||||
* @param oldData 上一个不是 PlayState.None 的歌曲
|
||||
* @param musicData 当前播放状态发生变化的歌曲
|
||||
*/
|
||||
fun updateState(oldData: MusicData?,musicData: MusicData)
|
||||
fun updatePlayCurrent(currentPlay: Long, duration: Long, second: MusicData){}
|
||||
fun onMusicCompletion(musicData: MusicData) {}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 音乐播放完毕
|
||||
*/
|
||||
@@ -152,7 +153,7 @@ object AuditionManager: AuditionCacheManager.DataChangeListener, Audition.OnAudi
|
||||
it.value.onMusicCompletion(oldData)
|
||||
}
|
||||
}else{
|
||||
musicList.forEach {musicData->
|
||||
musicList.forEach { musicData->
|
||||
if(musicData.path==path){
|
||||
dataChangeListeners.forEach {
|
||||
it.value.onMusicCompletion(musicData)
|
||||
@@ -183,7 +184,7 @@ object AuditionManager: AuditionCacheManager.DataChangeListener, Audition.OnAudi
|
||||
}
|
||||
}else{
|
||||
musicList.forEachIndexed { index, musicData ->
|
||||
if(musicData.path==Audition.oldPath){
|
||||
if(musicData.path== Audition.oldPath){
|
||||
dataChangeListeners.forEach {
|
||||
it.value.updatePlayCurrent(currentPlay,duration,musicData)
|
||||
}
|
||||
@@ -193,7 +194,7 @@ object AuditionManager: AuditionCacheManager.DataChangeListener, Audition.OnAudi
|
||||
}
|
||||
}
|
||||
|
||||
fun getNextMusicData(it: MusicData):MusicData {
|
||||
fun getNextMusicData(it: MusicData): MusicData {
|
||||
val indexOf = musicList.indexOf(it)
|
||||
if(indexOf== musicList.size-1){
|
||||
return musicList.first()
|
||||
@@ -216,7 +217,7 @@ object AuditionManager: AuditionCacheManager.DataChangeListener, Audition.OnAudi
|
||||
}
|
||||
|
||||
fun setVolume(leftVolume:Float, rightVolume:Float){
|
||||
Audition.setVolume(leftVolume,rightVolume)
|
||||
Audition.setVolume(leftVolume, rightVolume)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
package com.mogo.och.common.module.biz.media
|
||||
|
||||
import com.mogo.och.common.module.wigets.media.MediaItem
|
||||
|
||||
interface IMediaDispatch {
|
||||
fun diapatchMedia(list :MutableList<MediaItem>)
|
||||
fun setMediaPause(){}
|
||||
fun setMediaResume(){}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.mogo.och.common.module.biz.media
|
||||
|
||||
import com.mogo.och.common.module.biz.media.data.MusicData
|
||||
import com.mogo.och.common.module.wigets.media.MediaItem
|
||||
|
||||
interface IMediaListener {
|
||||
fun diapatchMedia(list :MutableList<MediaItem>)
|
||||
|
||||
fun setMediaPause(){}
|
||||
|
||||
fun setMediaResume(){}
|
||||
|
||||
}
|
||||
|
||||
interface MusicDataChangeListener{
|
||||
fun addOneData(it: MusicData){}
|
||||
|
||||
/**
|
||||
* toggle 修改播放器状态
|
||||
* @param oldData 上一个不是 PlayState.None 的歌曲
|
||||
* @param musicData 当前播放状态发生变化的歌曲
|
||||
*/
|
||||
fun updateState(oldData: MusicData?, musicData: MusicData)
|
||||
fun updatePlayCurrent(currentPlay: Long, duration: Long, second: MusicData){}
|
||||
fun onMusicCompletion(musicData: MusicData) {}
|
||||
fun onDataDis(musicList: MutableList<MusicData>){}
|
||||
|
||||
}
|
||||
@@ -1,29 +1,92 @@
|
||||
package com.mogo.och.common.module.biz.media
|
||||
|
||||
import com.mogo.och.common.module.utils.CallerBase
|
||||
import com.alibaba.android.arouter.launcher.ARouter
|
||||
import com.mogo.och.common.module.biz.media.data.MusicData
|
||||
import com.mogo.och.common.module.constant.OchCommonConst
|
||||
import com.mogo.och.common.module.wigets.media.MediaItem
|
||||
|
||||
object MediaManager : CallerBase<IMediaDispatch>() {
|
||||
object MediaManager {
|
||||
|
||||
private var mediaService: MediaService? =
|
||||
ARouter.getInstance().build(OchCommonConst.BIZ_Media).navigation() as MediaService
|
||||
|
||||
fun addListener(tag:String, listener: IMediaListener){
|
||||
mediaService?.addMediaListener(tag,listener)
|
||||
}
|
||||
|
||||
fun removeListener(tag: String){
|
||||
mediaService?.removeBridgeListener(tag)
|
||||
}
|
||||
|
||||
fun postSiteIntroduceInfo(list: MutableList<MediaItem>){
|
||||
M_LISTENERS.forEach {
|
||||
val listener = it.value
|
||||
listener.diapatchMedia(list)
|
||||
}
|
||||
mediaService?.postSiteIntroduceInfo(list)
|
||||
}
|
||||
|
||||
fun setMediaResume(){
|
||||
M_LISTENERS.forEach {
|
||||
val listener = it.value
|
||||
listener.setMediaResume()
|
||||
}
|
||||
mediaService?.setMediaResume()
|
||||
}
|
||||
|
||||
fun setMediaPause(){
|
||||
M_LISTENERS.forEach {
|
||||
val listener = it.value
|
||||
listener.setMediaPause()
|
||||
mediaService?.setMediaPause()
|
||||
}
|
||||
|
||||
fun setTTSFocusChange(isSpeaking:Boolean){
|
||||
mediaService?.setTTSFocusChange(isSpeaking)
|
||||
}
|
||||
|
||||
fun setVideoFocusChange(isPlaying:Boolean){
|
||||
mediaService?.setVideoFocusChange(isPlaying)
|
||||
}
|
||||
|
||||
object Audition{
|
||||
|
||||
fun stop() {
|
||||
mediaService?.musicStop()
|
||||
}
|
||||
fun replayOrplayFirst(){
|
||||
mediaService?.musicReplayOrplayFirst()
|
||||
}
|
||||
|
||||
fun removeListener(tag: String) {
|
||||
mediaService?.removeAuditionListener(tag)
|
||||
}
|
||||
|
||||
fun addListener(tag: String, listener: MusicDataChangeListener) {
|
||||
mediaService?.addAuditionListener(tag,listener)
|
||||
}
|
||||
|
||||
fun isPlaying():Boolean?{
|
||||
return mediaService?.auditionIsPlaying()
|
||||
}
|
||||
|
||||
fun getPlaying(): MusicData? {
|
||||
return mediaService?.getPlaying()
|
||||
}
|
||||
|
||||
fun play(musicData: MusicData) {
|
||||
mediaService?.palyAudition(musicData)
|
||||
}
|
||||
|
||||
fun getPreAuditionData(it: MusicData): MusicData? {
|
||||
return mediaService?.getPreAuditionData(it)
|
||||
}
|
||||
|
||||
fun getNextAuditionData(it: MusicData): MusicData? {
|
||||
return mediaService?.getNextAuditionData(it)
|
||||
}
|
||||
|
||||
fun getAuditionDataList(): MutableList<MusicData>? {
|
||||
return mediaService?.getAuditionDataList()
|
||||
}
|
||||
|
||||
fun toggle(musicData: MusicData) {
|
||||
mediaService?.toggle(musicData)
|
||||
}
|
||||
|
||||
fun seekTo(progress: Int) {
|
||||
mediaService?.seekTo(progress)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
package com.mogo.och.common.module.biz.media
|
||||
|
||||
import com.alibaba.android.arouter.facade.template.IProvider
|
||||
import com.mogo.och.common.module.biz.media.data.MusicData
|
||||
import com.mogo.och.common.module.wigets.media.MediaItem
|
||||
|
||||
interface MediaService : IProvider {
|
||||
|
||||
fun addMediaListener(tag: String, listener: IMediaListener)
|
||||
|
||||
fun removeBridgeListener(tag: String)
|
||||
|
||||
fun postSiteIntroduceInfo(list: MutableList<MediaItem>)
|
||||
|
||||
fun setMediaResume()
|
||||
|
||||
fun setMediaPause()
|
||||
|
||||
fun setTTSFocusChange(speaking: Boolean)
|
||||
|
||||
fun setVideoFocusChange(playing: Boolean)
|
||||
|
||||
fun musicStop()
|
||||
|
||||
fun musicReplayOrplayFirst()
|
||||
|
||||
fun removeAuditionListener(tag: String)
|
||||
|
||||
fun addAuditionListener(tag: String, listener: MusicDataChangeListener)
|
||||
|
||||
fun auditionIsPlaying(): Boolean
|
||||
|
||||
fun getPlaying(): MusicData?
|
||||
|
||||
fun palyAudition(musicData: MusicData)
|
||||
|
||||
fun getPreAuditionData(it: MusicData): MusicData
|
||||
|
||||
fun getNextAuditionData(it: MusicData): MusicData
|
||||
|
||||
fun toggle(musicData: MusicData)
|
||||
|
||||
fun seekTo(progress: Int)
|
||||
|
||||
fun getAuditionDataList(): MutableList<MusicData>
|
||||
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.common.module.manager.audition
|
||||
package com.mogo.och.common.module.biz.media.data
|
||||
|
||||
/**
|
||||
* 音乐文件
|
||||
@@ -37,6 +37,8 @@ class OchCommonConst {
|
||||
const val BIZ_SKIN = "/ochbiz/common/skin"
|
||||
const val BIZ_SCANNER = "/ochbiz/common/scanner"
|
||||
const val BIZ_TIME = "/ochbiz/common/time"
|
||||
const val BIZ_Media = "/ochbiz/common/media"
|
||||
|
||||
const val BIZ_OFFLINE = "/offlinedriver/offlinedata"
|
||||
const val BIZ_Bridge = "/birdge/bridge"
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ import com.mogo.commons.voice.AIAssist
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||
import com.mogo.och.common.module.manager.audiofocus.AudioFocusManager
|
||||
import com.mogo.och.common.module.biz.media.MediaManager
|
||||
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
|
||||
import com.mogo.och.common.module.manager.socket.lan.LanSocketManager
|
||||
import com.mogo.och.common.module.manager.socket.lan.bean.OutofVoice
|
||||
@@ -112,21 +112,21 @@ object VoiceNotice {
|
||||
override fun onSpeakStart(speakText: String?) {
|
||||
super.onSpeakStart(speakText)
|
||||
callBack?.onSpeakStart(speakText)
|
||||
AudioFocusManager.setTTSFocusChange(true)
|
||||
MediaManager.setTTSFocusChange(true)
|
||||
save2Log("开始播放${speakText}")
|
||||
}
|
||||
|
||||
override fun onSpeakEnd(speakText: String?) {
|
||||
super.onSpeakEnd(speakText)
|
||||
callBack?.onSpeakEnd(speakText)
|
||||
AudioFocusManager.setTTSFocusChange(false)
|
||||
MediaManager.setTTSFocusChange(false)
|
||||
save2Log("结束播放${speakText}")
|
||||
}
|
||||
|
||||
override fun onSpeakError(speakText: String?, errorMsg: String?) {
|
||||
super.onSpeakError(speakText, errorMsg)
|
||||
callBack?.onSpeakError(speakText,errorMsg)
|
||||
AudioFocusManager.setTTSFocusChange(false)
|
||||
MediaManager.setTTSFocusChange(false)
|
||||
save2Log("播放错误,内容:${speakText}、errorMsg:${errorMsg}")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
|
||||
import com.mogo.eagle.core.utilcode.mogo.Vehicle
|
||||
import com.mogo.eagle.core.utilcode.util.GsonUtils
|
||||
import com.mogo.och.common.module.manager.audition.MusicData
|
||||
import com.mogo.och.common.module.biz.media.data.MusicData
|
||||
|
||||
object MediaBeanManager {
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ import com.mogo.eagle.core.utilcode.util.GsonUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ThreadUtils
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||
import com.mogo.och.common.module.R
|
||||
import com.mogo.och.common.module.biz.media.IMediaDispatch
|
||||
import com.mogo.och.common.module.biz.media.IMediaListener
|
||||
import com.mogo.och.common.module.biz.media.MediaManager
|
||||
import com.mogo.och.common.module.manager.download.DownloadManager
|
||||
import com.mogo.och.common.module.manager.loop.BizLoopManager
|
||||
@@ -24,7 +24,7 @@ import kotlinx.android.synthetic.main.fragment_video_player.imageVideoRotationVi
|
||||
* @date: 2022/4/12
|
||||
*/
|
||||
class MediaPlayerFragment :
|
||||
MvpFragment<MediaPlayerFragment?, MediaPlayerPresenter?>(), IMediaDispatch {
|
||||
MvpFragment<MediaPlayerFragment?, MediaPlayerPresenter?>(), IMediaListener {
|
||||
|
||||
companion object {
|
||||
private val TAG = MediaPlayerFragment::class.java.simpleName
|
||||
|
||||
@@ -15,12 +15,12 @@ import com.bumptech.glide.Glide
|
||||
import com.bumptech.glide.request.RequestOptions
|
||||
import com.bumptech.glide.request.target.SimpleTarget
|
||||
import com.bumptech.glide.request.transition.Transition
|
||||
import com.elegant.utils.UiThreadHandler
|
||||
import com.mogo.commons.AbsMogoApplication
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.och.common.module.manager.audition.AuditionManager
|
||||
import com.mogo.och.common.module.manager.audition.MusicData
|
||||
import com.mogo.och.common.module.manager.audition.PlayState
|
||||
import com.mogo.och.common.module.biz.media.MediaManager
|
||||
import com.mogo.och.common.module.biz.media.MusicDataChangeListener
|
||||
import com.mogo.och.common.module.biz.media.data.MusicData
|
||||
import com.mogo.och.common.module.biz.media.data.PlayState
|
||||
import com.mogo.och.common.module.manager.loop.BizLoopManager
|
||||
import com.mogo.och.unmanned.passenger.ui.music.playing.MusicPlayingViewModel
|
||||
import com.mogo.och.unmanned.taxi.passenger.R
|
||||
@@ -34,7 +34,7 @@ import kotlinx.android.synthetic.main.taxi_p_rightbar.view.con_third_group
|
||||
import me.jessyan.autosize.utils.AutoSizeUtils
|
||||
|
||||
|
||||
class RightBarView : ConstraintLayout, AuditionManager.MusicDataChangeListener {
|
||||
class RightBarView : ConstraintLayout, MusicDataChangeListener {
|
||||
|
||||
private val TAG = "RightBarView"
|
||||
|
||||
@@ -88,8 +88,8 @@ class RightBarView : ConstraintLayout, AuditionManager.MusicDataChangeListener {
|
||||
ck_music.setBackgroundResource(R.drawable.taxi_p_music_selector)
|
||||
endAnimal()
|
||||
} else {
|
||||
if(AuditionManager.isPlaying()){
|
||||
AuditionManager.musicDataPlaying?.let {
|
||||
if(MediaManager.Audition.isPlaying()==true){
|
||||
MediaManager.Audition.getPlaying()?.let {
|
||||
Glide.with(context)
|
||||
.load(it.coverHeadImageUrl)
|
||||
.apply(RequestOptions().placeholder(R.drawable.taxt_p_music_bg_relax_head))
|
||||
@@ -151,7 +151,7 @@ class RightBarView : ConstraintLayout, AuditionManager.MusicDataChangeListener {
|
||||
override fun onAttachedToWindow() {
|
||||
super.onAttachedToWindow()
|
||||
CallerLogger.d(TAG, "onAttachedToWindow")
|
||||
AuditionManager.addDataChangeListener(TAG,this)
|
||||
MediaManager.Audition.addListener(TAG,this)
|
||||
// RightBarView启动的时候必须把MusicPlayingViewModel初始化了,否则和AuditionManager的回掉及逻辑会有问题
|
||||
try {
|
||||
val musicPlayingViewModel = findViewTreeViewModelStoreOwner()?.let {
|
||||
@@ -165,7 +165,7 @@ class RightBarView : ConstraintLayout, AuditionManager.MusicDataChangeListener {
|
||||
}
|
||||
|
||||
override fun onDetachedFromWindow() {
|
||||
AuditionManager.removeDataChangeListener(TAG)
|
||||
MediaManager.Audition.removeListener(TAG)
|
||||
super.onDetachedFromWindow()
|
||||
}
|
||||
|
||||
|
||||
@@ -3,10 +3,11 @@ package com.mogo.och.unmanned.passenger.ui.music
|
||||
import com.mogo.commons.storage.SharedPrefsMgr
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.och.common.module.manager.audition.AuditionManager
|
||||
import com.mogo.och.bridge.autopilot.autopilot.IOchAutopilotStatusListener
|
||||
import com.mogo.och.bridge.autopilot.autopilot.OchAutoPilotStatusListenerManager
|
||||
import com.mogo.och.common.module.manager.audition.MusicData
|
||||
import com.mogo.och.common.module.biz.media.MediaManager
|
||||
import com.mogo.och.common.module.biz.media.MusicDataChangeListener
|
||||
import com.mogo.och.common.module.biz.media.data.MusicData
|
||||
import com.mogo.och.common.module.manager.loop.BizLoopManager
|
||||
import com.mogo.och.common.module.utils.CallerBase
|
||||
import com.mogo.och.common.module.utils.RxUtils
|
||||
@@ -16,7 +17,8 @@ import io.reactivex.disposables.Disposable
|
||||
import com.mogo.och.unmanned.taxi.utils.order.OrderListener
|
||||
import com.mogo.och.unmanned.taxi.utils.order.OrderModel
|
||||
|
||||
object MusicModel : CallerBase<MusicModel.MusicDataListener>(), OrderListener, IOchAutopilotStatusListener, AuditionManager.MusicDataChangeListener {
|
||||
object MusicModel : CallerBase<MusicModel.MusicDataListener>(), OrderListener, IOchAutopilotStatusListener,
|
||||
MusicDataChangeListener {
|
||||
|
||||
private const val TAG = "MusicModel"
|
||||
|
||||
@@ -24,12 +26,19 @@ object MusicModel : CallerBase<MusicModel.MusicDataListener>(), OrderListener, I
|
||||
OrderModel.setOrderStatusCallback(TAG,this)
|
||||
//自动驾驶状态监听
|
||||
OchAutoPilotStatusListenerManager.addListener(TAG, this)
|
||||
AuditionManager.addDataChangeListener(TAG,this)
|
||||
MediaManager.Audition.addListener(TAG,this)
|
||||
}
|
||||
|
||||
private var stopMusicDisposable: Disposable? = null
|
||||
private var orderInfo: BaseOrderBean? = null
|
||||
|
||||
override fun addOneData(musicData: MusicData) {
|
||||
M_LISTENERS.forEach{
|
||||
it.value.addOneData(musicData)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private const val startMusicWithOrderKey = "STARTMUSICWITHORDER"
|
||||
|
||||
override fun onCurrentOrderStatusChanged(order: BaseOrderBean?) {
|
||||
@@ -51,13 +60,13 @@ object MusicModel : CallerBase<MusicModel.MusicDataListener>(), OrderListener, I
|
||||
TaxiOrderStatusEnum.JourneyCompleted -> {
|
||||
cancelStopMusicDisposable()
|
||||
stopMusicDisposable = RxUtils.createSubscribe(60_000) {
|
||||
AuditionManager.stop()
|
||||
MediaManager.Audition.stop()
|
||||
}
|
||||
}
|
||||
TaxiOrderStatusEnum.Cancel -> {
|
||||
cancelStopMusicDisposable()
|
||||
stopMusicDisposable = RxUtils.createSubscribe(60_000) {
|
||||
AuditionManager.stop()
|
||||
MediaManager.Audition.stop()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -71,7 +80,12 @@ object MusicModel : CallerBase<MusicModel.MusicDataListener>(), OrderListener, I
|
||||
cancelStopMusicDisposable()
|
||||
SharedPrefsMgr.getInstance().putString(startMusicWithOrderKey, it.orderNo)
|
||||
BizLoopManager.runInMainThread{
|
||||
checkMusic(AuditionManager.musicList.first(),true)
|
||||
MediaManager.Audition.getAuditionDataList()?.let {list->
|
||||
if(list.isNotEmpty()) {
|
||||
checkMusic(list.first(), true)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -80,7 +94,11 @@ object MusicModel : CallerBase<MusicModel.MusicDataListener>(), OrderListener, I
|
||||
cancelStopMusicDisposable()
|
||||
SharedPrefsMgr.getInstance().putString(startMusicWithOrderKey, it.orderNo)
|
||||
BizLoopManager.runInMainThread {
|
||||
checkMusic(AuditionManager.musicList.first(), true)
|
||||
MediaManager.Audition.getAuditionDataList()?.let { list ->
|
||||
if(list.isNotEmpty()) {
|
||||
checkMusic(list.first(), true)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -90,7 +108,7 @@ object MusicModel : CallerBase<MusicModel.MusicDataListener>(), OrderListener, I
|
||||
|
||||
private fun cancelStopMusicDisposable() {
|
||||
if (stopMusicDisposable != null) {
|
||||
AuditionManager.stop()
|
||||
MediaManager.Audition.stop()
|
||||
}
|
||||
RxUtils.disposeSubscribe(stopMusicDisposable)
|
||||
stopMusicDisposable = null
|
||||
@@ -102,7 +120,7 @@ object MusicModel : CallerBase<MusicModel.MusicDataListener>(), OrderListener, I
|
||||
|
||||
|
||||
fun getCheckMusic(): MusicData? {
|
||||
AuditionManager.musicList.forEach {
|
||||
MediaManager.Audition.getAuditionDataList()?.forEach {
|
||||
if (it.select==true) {
|
||||
return it
|
||||
}
|
||||
@@ -111,13 +129,7 @@ object MusicModel : CallerBase<MusicModel.MusicDataListener>(), OrderListener, I
|
||||
}
|
||||
|
||||
fun seekTo(progress: Int) {
|
||||
AuditionManager.seekTo(progress)
|
||||
}
|
||||
|
||||
override fun addOneData(musicData: MusicData) {
|
||||
M_LISTENERS.forEach{
|
||||
it.value.addOneData(musicData)
|
||||
}
|
||||
MediaManager.Audition.seekTo(progress)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -125,7 +137,7 @@ object MusicModel : CallerBase<MusicModel.MusicDataListener>(), OrderListener, I
|
||||
* 2、如果正在播放 需要开始播放选中音乐
|
||||
*/
|
||||
fun checkMusic(musicData: MusicData,startPlay:Boolean = true){
|
||||
AuditionManager.musicList.forEach {
|
||||
MediaManager.Audition.getAuditionDataList()?.forEach {
|
||||
// 上一个选中歌曲
|
||||
if (it.select==true) {
|
||||
if(it!=musicData){
|
||||
@@ -142,7 +154,7 @@ object MusicModel : CallerBase<MusicModel.MusicDataListener>(), OrderListener, I
|
||||
}
|
||||
notifySelectChange(musicData)
|
||||
if(startPlay) {
|
||||
AuditionManager.play(musicData)
|
||||
MediaManager.Audition.play(musicData)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -155,23 +167,25 @@ object MusicModel : CallerBase<MusicModel.MusicDataListener>(), OrderListener, I
|
||||
fun clickPreMusic(){
|
||||
val checkMusic = getCheckMusic()
|
||||
checkMusic?.let {
|
||||
val preMusicData = AuditionManager.getPreMusicData(it)
|
||||
checkMusic(preMusicData)
|
||||
MediaManager.Audition.getPreAuditionData(it)?.let { preData->
|
||||
checkMusic(preData)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun clickNextMusic(){
|
||||
val checkMusic = getCheckMusic()
|
||||
checkMusic?.let {
|
||||
val nextMusicData = AuditionManager.getNextMusicData(it)
|
||||
checkMusic(nextMusicData)
|
||||
MediaManager.Audition.getNextAuditionData(it)?.let { nextData->
|
||||
checkMusic(nextData)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun toggleMusic(){
|
||||
val checkMusic = getCheckMusic()
|
||||
checkMusic?.let {
|
||||
AuditionManager.toggle(it)
|
||||
MediaManager.Audition.toggle(it)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -205,7 +219,7 @@ object MusicModel : CallerBase<MusicModel.MusicDataListener>(), OrderListener, I
|
||||
// return false
|
||||
// }
|
||||
// return true
|
||||
return AuditionManager.isPlaying()
|
||||
return MediaManager.Audition.isPlaying()==true
|
||||
}
|
||||
|
||||
interface MusicDataListener{
|
||||
|
||||
@@ -3,15 +3,10 @@ package com.mogo.och.unmanned.passenger.ui.music
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.lifecycle.findViewTreeViewModelStoreOwner
|
||||
import com.mogo.och.common.module.manager.audition.MusicData
|
||||
import com.mogo.och.unmanned.passenger.ui.music.list.MusicListView
|
||||
import com.mogo.och.unmanned.taxi.passenger.R
|
||||
import kotlinx.android.synthetic.main.taxi_p_music.view.mlv_list
|
||||
import kotlinx.android.synthetic.main.taxi_p_music.view.mpv_playing
|
||||
|
||||
class MusicView : ConstraintLayout, MusicViewModel.IMusicViewCallback {
|
||||
|
||||
|
||||
@@ -13,8 +13,8 @@ import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.lifecycle.findViewTreeViewModelStoreOwner
|
||||
import com.mogo.eagle.core.utilcode.kotlin.onClick
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.och.common.module.manager.audition.MusicData
|
||||
import com.mogo.och.common.module.manager.audition.PlayState
|
||||
import com.mogo.och.common.module.biz.media.data.MusicData
|
||||
import com.mogo.och.common.module.biz.media.data.PlayState
|
||||
import com.mogo.och.unmanned.taxi.passenger.R
|
||||
import kotlinx.android.synthetic.main.taxi_p_music_bar.view.aciv_music_next_bar
|
||||
import kotlinx.android.synthetic.main.taxi_p_music_bar.view.aciv_music_toggle_bar
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.mogo.och.unmanned.passenger.ui.music.bar
|
||||
|
||||
import androidx.lifecycle.ViewModel
|
||||
import com.mogo.och.common.module.manager.audition.MusicData
|
||||
import com.mogo.och.common.module.biz.media.data.MusicData
|
||||
import com.mogo.och.common.module.manager.loop.BizLoopManager
|
||||
import com.mogo.och.unmanned.passenger.ui.music.MusicModel
|
||||
|
||||
|
||||
@@ -10,8 +10,8 @@ import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.mogo.och.common.module.manager.audition.MusicData
|
||||
import com.mogo.och.common.module.manager.audition.PlayState
|
||||
import com.mogo.och.common.module.biz.media.data.MusicData
|
||||
import com.mogo.och.common.module.biz.media.data.PlayState
|
||||
import com.mogo.och.unmanned.taxi.passenger.R
|
||||
|
||||
/**
|
||||
@@ -74,7 +74,7 @@ class MusicListItemAdapter(
|
||||
holder.itemView.background = null
|
||||
}
|
||||
|
||||
if (musicData.state==PlayState.Playing) {
|
||||
if (musicData.state== PlayState.Playing) {
|
||||
holder.musicPlayState.visibility = View.VISIBLE
|
||||
}else{
|
||||
holder.musicPlayState.visibility = View.GONE
|
||||
|
||||
@@ -8,7 +8,7 @@ import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.lifecycle.findViewTreeViewModelStoreOwner
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.mogo.och.common.module.manager.audition.MusicData
|
||||
import com.mogo.och.common.module.biz.media.data.MusicData
|
||||
import com.mogo.och.unmanned.passenger.ui.music.MusicModel
|
||||
import com.mogo.och.unmanned.taxi.passenger.R
|
||||
import kotlinx.android.synthetic.main.taxi_p_music_list.view.rv_music_list
|
||||
|
||||
@@ -2,9 +2,8 @@ package com.mogo.och.unmanned.passenger.ui.music.list
|
||||
|
||||
import androidx.lifecycle.ViewModel
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||
import com.mogo.och.common.module.manager.audition.AuditionManager
|
||||
import com.mogo.och.common.module.manager.audition.MusicData
|
||||
import com.mogo.och.common.module.biz.media.MediaManager
|
||||
import com.mogo.och.common.module.biz.media.data.MusicData
|
||||
import com.mogo.och.common.module.manager.loop.BizLoopManager
|
||||
import com.mogo.och.unmanned.passenger.ui.music.MusicModel
|
||||
|
||||
@@ -14,11 +13,13 @@ class MusicListViewModel : ViewModel(), MusicModel.MusicDataListener {
|
||||
|
||||
private var viewCallback: IMusicListViewCaLillback? = null
|
||||
|
||||
|
||||
fun setDistanceCallback(viewCallback: IMusicListViewCaLillback) {
|
||||
this.viewCallback = viewCallback
|
||||
viewCallback.addAllData(AuditionManager.musicList)
|
||||
CallerLogger.d(TAG, "初始化音乐${AuditionManager.musicList.size}")
|
||||
MediaManager.Audition.getAuditionDataList()?.let {
|
||||
viewCallback.addAllData(it)
|
||||
CallerLogger.d(TAG, "初始化音乐${it.size}")
|
||||
}
|
||||
|
||||
MusicModel.addListener(TAG, this)
|
||||
}
|
||||
|
||||
|
||||
@@ -13,9 +13,8 @@ import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.lifecycle.findViewTreeViewModelStoreOwner
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.util.TimeTransformUtils
|
||||
import com.mogo.och.common.module.manager.audiofocus.AudioFocusManager
|
||||
import com.mogo.och.common.module.manager.audition.MusicData
|
||||
import com.mogo.och.common.module.manager.audition.PlayState
|
||||
import com.mogo.och.common.module.biz.media.data.MusicData
|
||||
import com.mogo.och.common.module.biz.media.data.PlayState
|
||||
import com.mogo.och.common.module.utils.DateTimeUtil
|
||||
import com.mogo.och.unmanned.taxi.passenger.R
|
||||
import kotlinx.android.synthetic.main.taxi_p_music_playing.view.iv_music_cover
|
||||
@@ -112,7 +111,7 @@ class MusicPlayingView : ConstraintLayout, MusicPlayingViewModel.IMusicPlayingVi
|
||||
tv_tag.text = musicData.tag.first()
|
||||
tv_playing_time.text = DateTimeUtil.second2Time(0)
|
||||
tv_playing_during.text = TimeTransformUtils.stringForTime(musicData.duration.toInt())
|
||||
if(musicData.state==PlayState.Playing){
|
||||
if(musicData.state== PlayState.Playing){
|
||||
iv_toggle.setImageResource(R.drawable.taxi_p_music_pause)
|
||||
startAnimal()
|
||||
}else{
|
||||
@@ -181,7 +180,7 @@ class MusicPlayingView : ConstraintLayout, MusicPlayingViewModel.IMusicPlayingVi
|
||||
}
|
||||
|
||||
override fun setPlayOrpause(it: MusicData) {
|
||||
if(it.state==PlayState.Playing){
|
||||
if(it.state== PlayState.Playing){
|
||||
iv_toggle.setImageResource(R.drawable.taxi_p_music_pause)
|
||||
startAnimal()
|
||||
}else{
|
||||
|
||||
@@ -2,7 +2,7 @@ package com.mogo.och.unmanned.passenger.ui.music.playing
|
||||
|
||||
import androidx.lifecycle.ViewModel
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.och.common.module.manager.audition.MusicData
|
||||
import com.mogo.och.common.module.biz.media.data.MusicData
|
||||
import com.mogo.och.common.module.manager.loop.BizLoopManager
|
||||
import com.mogo.och.unmanned.passenger.ui.music.MusicModel
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ import com.mogo.eagle.core.function.main.MainMoGoApplication
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.util.GsonUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.mogo.och.common.module.manager.audiofocus.AudioFocusManager
|
||||
import com.mogo.och.common.module.biz.media.MediaManager
|
||||
import com.mogo.och.common.module.manager.loop.BizLoopManager
|
||||
import com.mogo.och.common.module.wigets.WrapContentLinearLayoutManager
|
||||
import com.mogo.och.common.module.wigets.media.IMediaDataSourceListener
|
||||
@@ -165,12 +165,12 @@ internal class InfoVideoView @JvmOverloads constructor(
|
||||
GSYVideoView.CURRENT_STATE_PLAYING ->{
|
||||
currentMedia?.isPlayiing = true
|
||||
infoVideoPlaylist.adapter?.notifyItemChanged(currentMediaIndex)
|
||||
AudioFocusManager.setVideoFocusChange(true)
|
||||
MediaManager.setVideoFocusChange(true)
|
||||
}
|
||||
else ->{
|
||||
currentMedia?.isPlayiing = false
|
||||
infoVideoPlaylist.adapter?.notifyItemChanged(currentMediaIndex)
|
||||
AudioFocusManager.setVideoFocusChange(false)
|
||||
MediaManager.setVideoFocusChange(false)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ import com.mogo.eagle.core.utilcode.util.TAG
|
||||
import com.mogo.eagle.core.utilcode.util.TimeTransformUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.mogo.eagle.core.widget.media.video.TextureVideoViewOutlineProvider
|
||||
import com.mogo.och.common.module.manager.audiofocus.AudioFocusManager
|
||||
import com.mogo.och.common.module.biz.media.MediaManager
|
||||
import com.mogo.och.common.module.wigets.media.MediaItem
|
||||
import com.mogo.och.unmanned.passenger.bean.TaxiPassengerVideoPlay
|
||||
import com.mogo.och.unmanned.passenger.ui.statusview.StatusBarView
|
||||
@@ -154,12 +154,12 @@ class ConsultVideoPlayer : StandardGSYVideoPlayer {
|
||||
GSYVideoView.CURRENT_STATE_PLAYING ->{
|
||||
start.setImageResource(R.drawable.notice_video_pause)
|
||||
showOrHideStartPlayButton(false)
|
||||
AudioFocusManager.setVideoFocusChange(true)
|
||||
MediaManager.setVideoFocusChange(true)
|
||||
}
|
||||
else -> {
|
||||
start.setImageResource(R.drawable.notice_video_after_pause)
|
||||
showOrHideStartPlayButton(true)
|
||||
AudioFocusManager.setVideoFocusChange(false)
|
||||
MediaManager.setVideoFocusChange(false)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -314,7 +314,7 @@ class ConsultVideoPlayer : StandardGSYVideoPlayer {
|
||||
|
||||
override fun onCompletion() {
|
||||
start.setImageResource(R.drawable.notice_video_after_pause)
|
||||
AudioFocusManager.setVideoFocusChange(false)
|
||||
MediaManager.setVideoFocusChange(false)
|
||||
}
|
||||
|
||||
override fun onSurfaceUpdated(surface: Surface) {
|
||||
@@ -335,7 +335,7 @@ class ConsultVideoPlayer : StandardGSYVideoPlayer {
|
||||
|
||||
override fun onError(what: Int, extra: Int) {
|
||||
super.onError(what, extra)
|
||||
AudioFocusManager.setVideoFocusChange(false)
|
||||
MediaManager.setVideoFocusChange(false)
|
||||
mThumbImageViewLayout?.visibility = View.VISIBLE
|
||||
ToastUtils.showLong("哎呀,出错了,看看其他视频吧")
|
||||
currentTime = -1
|
||||
|
||||
Reference in New Issue
Block a user