Commit 5abdfb2c by 范玉宾

fix play record bug

parent 0637f105
...@@ -22,11 +22,14 @@ import com.ydl.media.view.PlayTypeEnum; ...@@ -22,11 +22,14 @@ import com.ydl.media.view.PlayTypeEnum;
import com.ydl.media.view.PlayerFloatHelper; import com.ydl.media.view.PlayerFloatHelper;
import com.ydl.ydlcommon.utils.LogUtil; import com.ydl.ydlcommon.utils.LogUtil;
import com.yidianling.common.tools.ToastUtil; import com.yidianling.common.tools.ToastUtil;
import com.yidianling.muse.event.MeditationFloatEvent;
import java.util.HashMap; import java.util.HashMap;
import java.util.Locale; import java.util.Locale;
import java.util.Objects; import java.util.Objects;
import de.greenrobot.event.EventBus;
/** /**
* Created by haorui on 2019-10-28 . * Created by haorui on 2019-10-28 .
* Des: * Des:
...@@ -61,6 +64,7 @@ public class PlayFragment extends Fragment implements View.OnClickListener, ...@@ -61,6 +64,7 @@ public class PlayFragment extends Fragment implements View.OnClickListener,
@Override @Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) { public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState); super.onActivityCreated(savedInstanceState);
EventBus.getDefault().register(this);
initPlayMode(); initPlayMode();
onChangeImpl(AudioPlayer.Companion.get().getPlayMusic()); onChangeImpl(AudioPlayer.Companion.get().getPlayMusic());
AudioPlayer.Companion.get().addOnPlayEventListener(this); AudioPlayer.Companion.get().addOnPlayEventListener(this);
...@@ -261,6 +265,9 @@ public class PlayFragment extends Fragment implements View.OnClickListener, ...@@ -261,6 +265,9 @@ public class PlayFragment extends Fragment implements View.OnClickListener,
public void onDestroy() { public void onDestroy() {
AudioPlayer.Companion.get().removeOnPlayEventListener(this); AudioPlayer.Companion.get().removeOnPlayEventListener(this);
PlayerFloatHelper.Companion.onDestroy(); PlayerFloatHelper.Companion.onDestroy();
if(EventBus.getDefault().isRegistered(this)){
EventBus.getDefault().unregister(this);
}
super.onDestroy(); super.onDestroy();
} }
...@@ -290,4 +297,9 @@ public class PlayFragment extends Fragment implements View.OnClickListener, ...@@ -290,4 +297,9 @@ public class PlayFragment extends Fragment implements View.OnClickListener,
ivPrev = bindSource.findViewById(R.id.iv_prev); ivPrev = bindSource.findViewById(R.id.iv_prev);
ivCover = bindSource.findViewById(R.id.iv_cover); ivCover = bindSource.findViewById(R.id.iv_cover);
} }
public void onEventMainThread(MeditationFloatEvent event){
}
} }
...@@ -77,6 +77,8 @@ ...@@ -77,6 +77,8 @@
android:layout_width="200dp" android:layout_width="200dp"
android:layout_height="40dp" android:layout_height="40dp"
android:layout_marginBottom="14dp" android:layout_marginBottom="14dp"
app:tabTextColor="#88FFFFFF"
app:tabSelectedTextColor="#FFFFFF"
style="@style/MeditationTabLayoutStyle" /> style="@style/MeditationTabLayoutStyle" />
<androidx.viewpager2.widget.ViewPager2 <androidx.viewpager2.widget.ViewPager2
......
...@@ -20,14 +20,14 @@ ...@@ -20,14 +20,14 @@
<FrameLayout <FrameLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent"
android:background="#88000000">
<ImageView <ImageView
android:id="@+id/iv_meditation_type" android:id="@+id/iv_meditation_type"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:scaleType="centerCrop" android:scaleType="centerCrop"/>
tools:src="@drawable/play_page_default_bg" />
<TextView <TextView
android:id="@+id/tv_meditation_type" android:id="@+id/tv_meditation_type"
...@@ -35,6 +35,8 @@ ...@@ -35,6 +35,8 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="bottom|start" android:layout_gravity="bottom|start"
tools:text="溪流" tools:text="溪流"
android:singleLine="true"
android:ellipsize="end"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="14sp" android:textSize="14sp"
android:layout_marginStart="6dp" android:layout_marginStart="6dp"
......
...@@ -60,6 +60,7 @@ dependencies { ...@@ -60,6 +60,7 @@ dependencies {
implementation 'com.github.weidongjian:androidWheelView:1.0.0' implementation 'com.github.weidongjian:androidWheelView:1.0.0'
implementation 'com.github.feeeei:CircleSeekbar:v1.1.2' implementation 'com.github.feeeei:CircleSeekbar:v1.1.2'
implementation 'jp.wasabeef:blurry:4.0.1'
// solve build problem // solve build problem
// cannot access 'androidx.lifecycle.hasdefaultviewmodelproviderfactory' // cannot access 'androidx.lifecycle.hasdefaultviewmodelproviderfactory'
// Comment out when compiling // Comment out when compiling
......
package com.yidianling.muse.activity package com.yidianling.muse.activity
import android.content.Intent import android.content.Intent
import android.graphics.Color
import android.os.Bundle import android.os.Bundle
import android.os.Handler
import com.blankj.utilcode.util.SPUtils import com.blankj.utilcode.util.SPUtils
import com.ydl.ydlcommon.base.BaseActivity import com.ydl.ydlcommon.base.BaseActivity
import com.ydl.ydlcommon.utils.StatusBarUtils import com.ydl.ydlcommon.utils.StatusBarUtils
import com.ydl.ydlcommon.utils.remind.ToastHelper import com.ydl.ydlcommon.utils.remind.ToastHelper
import com.yidianling.muse.R import com.yidianling.muse.R
import jp.wasabeef.blurry.Blurry
import kotlinx.android.synthetic.main.activity_play_meditation_time_off.* import kotlinx.android.synthetic.main.activity_play_meditation_time_off.*
import kotlinx.android.synthetic.main.activity_play_meditation_time_off.iv_close
class MeditationTimeOffActivity : BaseActivity() { class MeditationTimeOffActivity : BaseActivity() {
...@@ -20,6 +24,17 @@ class MeditationTimeOffActivity : BaseActivity() { ...@@ -20,6 +24,17 @@ class MeditationTimeOffActivity : BaseActivity() {
} }
private fun initView() { private fun initView() {
Handler().postDelayed({
Blurry.with(this)
.radius(25)
.sampling(1)
.color(Color.parseColor("#FF173F5D"))
.async()
.capture(iv_bg)
.into(iv_bg)
},300)
iv_close?.setOnClickListener { finish() } iv_close?.setOnClickListener { finish() }
tv_save_setting?.setOnClickListener { tv_save_setting?.setOnClickListener {
......
package com.yidianling.muse.activity package com.yidianling.muse.activity
import android.content.Intent import android.content.Intent
import android.graphics.Color
import android.media.MediaPlayer import android.media.MediaPlayer
import android.os.Bundle import android.os.Bundle
import android.os.Handler import android.os.Handler
...@@ -39,6 +40,7 @@ import io.reactivex.android.schedulers.AndroidSchedulers ...@@ -39,6 +40,7 @@ import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable import io.reactivex.disposables.Disposable
import io.reactivex.functions.Consumer import io.reactivex.functions.Consumer
import io.reactivex.schedulers.Schedulers import io.reactivex.schedulers.Schedulers
import jp.wasabeef.blurry.Blurry
import kotlinx.android.synthetic.main.activity_play_meditation.* import kotlinx.android.synthetic.main.activity_play_meditation.*
import kotlinx.android.synthetic.main.activity_play_meditation.iv_close import kotlinx.android.synthetic.main.activity_play_meditation.iv_close
import kotlinx.android.synthetic.main.activity_play_meditation.tv_title import kotlinx.android.synthetic.main.activity_play_meditation.tv_title
...@@ -604,7 +606,8 @@ class PlayMeditationActivity : BaseActivity() { ...@@ -604,7 +606,8 @@ class PlayMeditationActivity : BaseActivity() {
if (isLoop){ if (isLoop){
if (isSingle || meditations.size == 1){ if (isSingle || meditations.size == 1){
MediaPlayerManager.getInstance(this)?.setAudioPath(currentMeditation?.mediaUrl?:"") MediaPlayerManager
.getInstance(this)?.setAudioPath(currentMeditation?.mediaUrl?:"",isLoop = true)
}else{ }else{
currentMeditationIndex = meditations.indexOf(currentMeditation) currentMeditationIndex = meditations.indexOf(currentMeditation)
...@@ -758,7 +761,7 @@ class PlayMeditationActivity : BaseActivity() { ...@@ -758,7 +761,7 @@ class PlayMeditationActivity : BaseActivity() {
mDisposable?.dispose() mDisposable?.dispose()
initRxTimeOff((minute * 60 * 1000).toLong(), 1) initRxTimeOff((minute * 60 * 1000).toLong(), 1)
} }
val event = MeditationFloatEvent(false,(minute * 60 * 1000).toLong()) val event = MeditationFloatEvent(false,time = (minute * 60 * 1000).toLong())
EventBus.getDefault().post(event) EventBus.getDefault().post(event)
} else { } else {
initPlayCompletionListener() initPlayCompletionListener()
...@@ -766,7 +769,7 @@ class PlayMeditationActivity : BaseActivity() { ...@@ -766,7 +769,7 @@ class PlayMeditationActivity : BaseActivity() {
tv_time_off.visibility = View.GONE tv_time_off.visibility = View.GONE
tv_time_off_pure_music.visibility = View.GONE tv_time_off_pure_music.visibility = View.GONE
mMediaPlayer?.isLooping = false mMediaPlayer?.isLooping = false
val event = MeditationFloatEvent(false,0) val event = MeditationFloatEvent(false,time = 0)
EventBus.getDefault().post(event) EventBus.getDefault().post(event)
} }
} }
......
...@@ -4,6 +4,7 @@ import com.yidianling.muse.bean.MeditationPlayModuleBean ...@@ -4,6 +4,7 @@ import com.yidianling.muse.bean.MeditationPlayModuleBean
class MeditationFloatEvent( class MeditationFloatEvent(
val show: Boolean, val show: Boolean,
val stop: Boolean?=null,
val time:Long?=null, val time:Long?=null,
val meditationDetail: MeditationPlayModuleBean.MeditationDetail?=null val meditationDetail: MeditationPlayModuleBean.MeditationDetail?=null
) )
\ No newline at end of file
...@@ -30,8 +30,10 @@ class MediaPlayerManager private constructor() { ...@@ -30,8 +30,10 @@ class MediaPlayerManager private constructor() {
mMediaPlayer?.prepareAsync() mMediaPlayer?.prepareAsync()
mMediaPlayer?.setOnPreparedListener { mMediaPlayer?.setOnPreparedListener {
listener?.onPrepared(it) listener?.onPrepared(it)
if (isLoop){
mMediaPlayer?.seekTo(0)
}
} }
} }
fun getMediaPlayer():MediaPlayer? = mMediaPlayer fun getMediaPlayer():MediaPlayer? = mMediaPlayer
...@@ -65,22 +67,6 @@ class MediaPlayerManager private constructor() { ...@@ -65,22 +67,6 @@ class MediaPlayerManager private constructor() {
this.listener = listener this.listener = listener
} }
fun startPlayList(audioPaths:ArrayList<String>,
playCallBack: MediaPlayCallBack,startIndex:Int){
if(audioPaths.isNullOrEmpty() || startIndex>=mAudioPaths.size){
return
}
mMediaPlayCallBack = playCallBack
mAudioPaths = audioPaths
mCurrentListIndex = startIndex
mMediaPlayCallBack?.mediaPlayCallBack(TYPE_LIST,
MediaPlayCallBack.STATE_START,mCurrentListIndex)
setAudioPath(mAudioPaths[mCurrentListIndex])
}
companion object { companion object {
private var mContext: Context by Delegates.notNull() private var mContext: Context by Delegates.notNull()
......
...@@ -123,6 +123,13 @@ class MeditationWindowService : LifecycleService() { ...@@ -123,6 +123,13 @@ class MeditationWindowService : LifecycleService() {
} }
}else{ }else{
if (!event.show) { if (!event.show) {
if (event.stop == true){
try {
mMediaPlayer?.stop()
}catch (e:Exception){
}
}
hideFloatWindow() hideFloatWindow()
} }
if (event.show && event.meditationDetail != null) { if (event.show && event.meditationDetail != null) {
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@color/_8c"> android:background="#CC282E3F">
<ImageView <ImageView
android:id="@+id/iv_bg" android:id="@+id/iv_bg"
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="#FF173F5D"> android:id="@+id/root_layout">
<ImageView <ImageView
android:id="@+id/iv_close" android:id="@+id/iv_bg"
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="match_parent"
android:layout_marginTop="50dp" android:background="#FF173F5D"/>
android:layout_marginEnd="24dp"
android:padding="12dp"
android:src="@drawable/icon_play_meditation_time_off_close"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="90dp"
android:text="定时关闭"
android:textColor="@color/white"
android:textStyle="bold"
android:textSize="24sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/iv_close" />
<LinearLayout <androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="match_parent"
android:orientation="horizontal" android:background="@color/transparent">
android:gravity="center"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent">
<com.weigan.loopview.LoopView <ImageView
android:id="@+id/wheel_hour" android:id="@+id/iv_close"
android:layout_width="50dp" android:layout_width="wrap_content"
android:layout_height="240dp" android:layout_height="wrap_content"
app:awv_itemsVisibleCount="4" android:layout_marginTop="50dp"
app:awv_textsize="36" android:layout_marginEnd="24dp"
app:awv_dividerTextColor="0x00FFFFFF" android:padding="12dp"
app:awv_isLoop="false" android:src="@drawable/icon_play_meditation_time_off_close"
app:awv_outerTextColor="0x66FFFFFF" app:layout_constraintTop_toTopOf="parent"
app:awv_centerTextColor="@color/white" /> app:layout_constraintEnd_toEndOf="parent" />
<TextView <TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="16dp" android:layout_marginTop="90dp"
android:text="小时" android:text="定时关闭"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="18sp"/> android:textStyle="bold"
android:textSize="24sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/iv_close" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent">
<com.weigan.loopview.LoopView
android:id="@+id/wheel_hour"
android:layout_width="50dp"
android:layout_height="240dp"
app:awv_itemsVisibleCount="4"
app:awv_textsize="36"
app:awv_dividerTextColor="0x00FFFFFF"
app:awv_isLoop="false"
app:awv_outerTextColor="0x66FFFFFF"
app:awv_centerTextColor="@color/white" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:text="小时"
android:textColor="@color/white"
android:textSize="18sp" />
<com.weigan.loopview.LoopView <com.weigan.loopview.LoopView
android:id="@+id/wheel_minute" android:id="@+id/wheel_minute"
android:layout_width="50dp" android:layout_width="50dp"
android:layout_height="240dp" android:layout_height="240dp"
android:layout_marginStart="60dp" android:layout_marginStart="60dp"
app:awv_itemsVisibleCount="4" app:awv_itemsVisibleCount="4"
app:awv_textsize="36" app:awv_textsize="36"
app:awv_dividerTextColor="0x00FFFFFF" app:awv_dividerTextColor="0x00FFFFFF"
app:awv_isLoop="false" app:awv_isLoop="false"
app:awv_outerTextColor="0x66FFFFFF" app:awv_outerTextColor="0x66FFFFFF"
app:awv_centerTextColor="@color/white"/> app:awv_centerTextColor="@color/white" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:text="分钟"
android:textColor="@color/white"
android:textSize="18sp" />
</LinearLayout>
<TextView <TextView
android:layout_width="wrap_content" android:id="@+id/tv_cancel_time_off"
android:layout_height="wrap_content" android:layout_width="match_parent"
android:layout_marginStart="16dp" android:layout_height="48dp"
android:text="分钟" android:layout_marginBottom="50dp"
android:layout_marginHorizontal="16dp"
android:background="@drawable/bg_cancel_play_meditation_time_off"
android:text="关闭定时"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="18sp"/> android:textSize="16sp"
android:gravity="center"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent" />
</LinearLayout> <TextView
android:id="@+id/tv_save_setting"
<TextView android:layout_width="match_parent"
android:id="@+id/tv_cancel_time_off" android:layout_height="48dp"
android:layout_width="match_parent" android:layout_marginBottom="28dp"
android:layout_height="48dp" android:layout_marginHorizontal="16dp"
android:layout_marginBottom="50dp" android:background="@drawable/bg_save_play_meditation_time_off"
android:layout_marginHorizontal="16dp" android:text="保存设置"
android:background="@drawable/bg_cancel_play_meditation_time_off" android:textColor="#FF282E3F"
android:text="关闭定时" android:textSize="16sp"
android:textColor="@color/white" android:gravity="center"
android:textSize="16sp" app:layout_constraintStart_toStartOf="parent"
android:gravity="center" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintBottom_toTopOf="@id/tv_cancel_time_off" />
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent" />
<TextView </androidx.constraintlayout.widget.ConstraintLayout>
android:id="@+id/tv_save_setting"
android:layout_width="match_parent"
android:layout_height="48dp"
android:layout_marginBottom="28dp"
android:layout_marginHorizontal="16dp"
android:background="@drawable/bg_save_play_meditation_time_off"
android:text="保存设置"
android:textColor="#FF282E3F"
android:textSize="16sp"
android:gravity="center"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toTopOf="@id/tv_cancel_time_off" />
</androidx.constraintlayout.widget.ConstraintLayout> </FrameLayout>
\ No newline at end of file \ No newline at end of file
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