[包车音乐 部分问题]
This commit is contained in:
yangyakun
2024-03-20 20:20:16 +08:00
parent af6fadb5e5
commit 3a9d6e702a
10 changed files with 96 additions and 8 deletions

View File

@@ -5,6 +5,7 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
import com.mogo.eagle.core.utilcode.util.TAG
import com.mogo.och.common.module.manager.auditionmanager.AuditionManager
import com.mogo.och.common.module.manager.auditionmanager.PlayState
import com.mogo.och.common.module.utils.RxUtils
import io.reactivex.disposables.Disposable
@@ -27,6 +28,12 @@ object MusicModel : IMoGoAutopilotStatusListener, IOrderStatusChangeListener {
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()
}
@@ -36,6 +43,12 @@ object MusicModel : IMoGoAutopilotStatusListener, IOrderStatusChangeListener {
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()
}

View File

@@ -114,6 +114,19 @@ class MusicListItemAdapter(
}
}
fun setSelect(nextMusicData: MusicData, preMusicData: MusicData?) {
dataList.forEachIndexed { index, musicDataIn ->
if(musicDataIn.id==nextMusicData.id){
musicDataIn.select = true
notifyItemChanged(index,0)
}
if(musicDataIn.id == preMusicData?.id){
musicDataIn.select = false
notifyItemChanged(index,0)
}
}
}
inner class TextVH(itemView: View) : RecyclerView.ViewHolder(itemView) {
var musicName: TextView
var tvTag: TextView

View File

@@ -42,6 +42,7 @@ class MusicListView : ConstraintLayout, MusicListViewModel.IMusicListViewCaLillb
val viewModel = findViewTreeViewModelStoreOwner()?.let {
ViewModelProvider(it).get(MusicListViewModel::class.java)
}
CallerLogger.d(TAG,viewModel.toString())
viewModel?.setDistanceCallback(this)
}
@@ -68,6 +69,10 @@ class MusicListView : ConstraintLayout, MusicListViewModel.IMusicListViewCaLillb
CallerLogger.d(TAG,"${Thread.currentThread().name}----更新数据${oldData}-----${musicData}")
}
override fun upDateSelectMusic(nextMusicData: MusicData, preMusicData: MusicData?) {
lineAdapter.setSelect(nextMusicData,preMusicData)
}
override fun clickItem(musicData: MusicData,position: Int) {
// 通知主页面去显示详情
this.checkListener?.checkItem(musicData)

View File

@@ -33,6 +33,7 @@ class MusicListViewModel : ViewModel(),
fun addAllData(data:MutableList<MusicData>)
fun addOneData(it: MusicData)
fun updateMusicData(oldData: MusicData?,musicData: MusicData)
fun upDateSelectMusic(nextMusicData: MusicData, preMusicData: MusicData?)
}
override fun addOneData(it: MusicData) {
@@ -54,4 +55,10 @@ class MusicListViewModel : ViewModel(),
viewCallback?.updateMusicData(musicData, musicData)
}, UiThreadHandler.MODE.QUEUE)
}
fun selectMusic(currentMusicData: MusicData, preMusicData: MusicData?) {
UiThreadHandler.post({
viewCallback?.upDateSelectMusic(currentMusicData,preMusicData)
}, UiThreadHandler.MODE.QUEUE)
}
}

View File

@@ -13,9 +13,11 @@ import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.findViewTreeViewModelStoreOwner
import com.bumptech.glide.Glide
import com.bumptech.glide.request.RequestOptions
import com.mogo.eagle.core.utilcode.kotlin.onClick
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.auditionmanager.MusicData
import com.mogo.och.common.module.manager.auditionmanager.PlayState
import com.mogo.och.common.module.utils.DateTimeUtil
@@ -44,6 +46,7 @@ class MusicPlayingView : ConstraintLayout, MusicPlayingViewModel.IMusicPlayingVi
constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int, defStyleRes: Int) : super(context, attributeSet, defStyleAttr, defStyleRes)
private var viewModel: MusicPlayingViewModel?=null
private var viewListModel: MusicListViewModel?=null
private var animator:ObjectAnimator?=null
@@ -52,7 +55,9 @@ class MusicPlayingView : ConstraintLayout, MusicPlayingViewModel.IMusicPlayingVi
private fun initView() {
LayoutInflater.from(context).inflate(R.layout.charter_p_music_playing, this, true)
setOnClickListener {
CallerLogger.d(TAG,"-----------")
}
iv_toggle.setOnClickListener {
viewModel?.toggle()
}
@@ -62,6 +67,7 @@ class MusicPlayingView : ConstraintLayout, MusicPlayingViewModel.IMusicPlayingVi
iv_show_next.setOnClickListener {
viewModel?.showNextMusic()
}
sb_musuc_progess.thumb.mutate().alpha = 0
sb_musuc_progess.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener{
var seekToProgress = 0
override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
@@ -93,6 +99,10 @@ class MusicPlayingView : ConstraintLayout, MusicPlayingViewModel.IMusicPlayingVi
viewModel = findViewTreeViewModelStoreOwner()?.let {
ViewModelProvider(it).get(MusicPlayingViewModel::class.java)
}
viewListModel = findViewTreeViewModelStoreOwner()?.let {
ViewModelProvider(it).get(MusicListViewModel::class.java)
}
CallerLogger.d("MusicListView",viewListModel.toString())
viewModel?.setDistanceCallback(this)
}
@@ -183,6 +193,10 @@ class MusicPlayingView : ConstraintLayout, MusicPlayingViewModel.IMusicPlayingVi
tv_playing_during.text = TimeTransformUtils.stringForTime(duration.toInt())
}
override fun setSelect(currentMusicData: MusicData,preMusicData: MusicData?) {
viewListModel?.selectMusic(currentMusicData,preMusicData)
}
fun listenerPlaying(){
}

View File

@@ -56,7 +56,9 @@ class MusicPlayingViewModel : ViewModel(), AuditionManager.MusicDataChangeListen
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)
}
@@ -67,7 +69,9 @@ class MusicPlayingViewModel : ViewModel(), AuditionManager.MusicDataChangeListen
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)
}
@@ -78,6 +82,7 @@ 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?)
}
override fun updateState(oldData:MusicData?,musicData: MusicData) {
@@ -109,8 +114,12 @@ 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)
}
showNextMusic()
}
fun seekTo(progress: Int) {

View File

@@ -0,0 +1,3 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@android:color/transparent" />
</shape>

View File

@@ -78,7 +78,8 @@
android:paddingStart="@dimen/dp_0"
android:paddingEnd="@dimen/dp_0"
android:id="@+id/sb_musuc_progess"
android:thumb="@null"
android:thumb="@drawable/charter_p_music_seekbar_thumb"
android:duplicateParentState="true"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_author"

View File

@@ -63,13 +63,19 @@ class MusicPlayingViewModel : ViewModel(), AuditionManager.MusicDataChangeListen
}
}
fun play(){
checkMusicData?.let {
AuditionManager.play(it)
}
}
fun showPreMusic() {
checkMusicData?.let {
val playing = AuditionManager.isPlaying()
val nextMusicData = AuditionManager.getPreMusicData(it)
setMusicData(nextMusicData)
if(playing){
toggle()
play()
}
}
}
@@ -80,7 +86,7 @@ class MusicPlayingViewModel : ViewModel(), AuditionManager.MusicDataChangeListen
val nextMusicData = AuditionManager.getNextMusicData(it)
setMusicData(nextMusicData)
if(playing){
toggle()
play()
}
}
}
@@ -121,8 +127,9 @@ class MusicPlayingViewModel : ViewModel(), AuditionManager.MusicDataChangeListen
}
}
}
showNextMusic()
toggle()
val nextMusicData = AuditionManager.getNextMusicData(musicData)
setMusicData(nextMusicData)
play()
}
fun seekTo(progress: Int) {

View File

@@ -5,6 +5,7 @@ import android.os.Build;
import android.os.IBinder;
import android.os.RemoteException;
import android.provider.Settings;
import android.util.Log;
import androidx.annotation.MainThread;
@@ -19,6 +20,7 @@ import com.mogo.tts.base.MultiLangTtsEntity;
import com.mogo.tts.base.PreemptType;
import com.mogo.tts.base.zhi.AvatarManager;
import com.mogo.tts.base.zhi.IActionCallback;
import com.mogo.xiaozhi.sdk.base.BaseManager;
import com.mogo.xiaozhi.sdk.engine.DMStatusListener;
import com.mogo.xiaozhi.sdk.engine.RecorderDMManager;
import com.mogo.xiaozhi.sdk.engine.tts.AILocalTTS;
@@ -46,6 +48,8 @@ public class ZhiTTS implements IMogoTTS, OnTtsListener {
private AtomicBoolean initStatus = new AtomicBoolean(false);
private IGlobalTtsCallback mGlobalTtsCallback = null;
public void release() {
CallerLogger.d(TAG, "release");
}
@@ -87,6 +91,18 @@ public class ZhiTTS implements IMogoTTS, OnTtsListener {
CallerLogger.d(TAG, "RecorderDMManager---onError---code"+code+"--info"+info);
}
});
ZDTtsManager.getInstance().setCallback(new BaseManager.ActionCallback() {
@Override
public String onActionCallback(String callback, String data) {
if ("mos.action.tts.status".equals(callback)) {
CallerLogger.d(TAG, "callback:"+callback+"-----data"+data);
return "";
} else {
return null;
}
}
});
}
@@ -268,7 +284,7 @@ public class ZhiTTS implements IMogoTTS, OnTtsListener {
@Override
public void registerTtsListener(IGlobalTtsCallback callback) {
mGlobalTtsCallback = callback;
}