Fixed CrossFade not working when Fade Audio is enabled

This commit is contained in:
Prathamesh More 2022-06-12 22:08:52 +05:30
parent 8e3a7a097a
commit df382cb539
4 changed files with 18 additions and 19 deletions

View file

@ -10,10 +10,10 @@ import code.name.monkey.retromusic.util.PreferenceUtil
class AudioFader {
companion object {
inline fun createFadeAnimator(
fun createFadeAnimator(
fadeInMp: MediaPlayer,
fadeOutMp: MediaPlayer,
crossinline endAction: (animator: Animator) -> Unit, /* Code to run when Animator Ends*/
endAction: (animator: Animator) -> Unit, /* Code to run when Animator Ends*/
): Animator? {
val duration = PreferenceUtil.crossFadeDuration * 1000
if (duration == 0) {
@ -34,15 +34,14 @@ class AudioFader {
}
}
@JvmStatic
fun startFadeAnimator(
playback: Playback,
fadeIn: Boolean, /* fadeIn -> true fadeOut -> false*/
callback: Runnable, /* Code to run when Animator Ends*/
callback: Runnable? = null, /* Code to run when Animator Ends*/
) {
val duration = PreferenceUtil.audioFadeDuration.toLong()
if (duration == 0L) {
callback.run()
callback?.run()
return
}
val startValue = if (fadeIn) 0f else 1.0f
@ -50,12 +49,10 @@ class AudioFader {
val animator = ValueAnimator.ofFloat(startValue, endValue)
animator.duration = duration
animator.addUpdateListener { animation: ValueAnimator ->
playback.setVolume(
animation.animatedValue as Float
)
playback.setVolume(animation.animatedValue as Float)
}
animator.doOnEnd {
callback.run()
callback?.run()
}
animator.start()
}

View file

@ -37,7 +37,7 @@ class CrossFadePlayer(context: Context) : LocalPlayback(context) {
private var crossFadeAnimator: Animator? = null
override var callbacks: PlaybackCallbacks? = null
private var crossFadeDuration = PreferenceUtil.crossFadeDuration
private var isCrossFading = false
var isCrossFading = false
init {
player1.setWakeMode(context, PowerManager.PARTIAL_WAKE_LOCK)

View file

@ -770,11 +770,10 @@ class MusicService : MediaBrowserServiceCompat(),
@Synchronized
fun play() {
playbackManager.play(onNotInitialized = { playSongAt(getPosition()) }) {
if (notHandledMetaChangedForCurrentTrack) {
handleChangeInternal(META_CHANGED)
notHandledMetaChangedForCurrentTrack = false
}
playbackManager.play { playSongAt(getPosition()) }
if (notHandledMetaChangedForCurrentTrack) {
handleChangeInternal(META_CHANGED)
notHandledMetaChangedForCurrentTrack = false
}
notifyChange(PLAY_STATE_CHANGED)
}

View file

@ -47,16 +47,19 @@ class PlaybackManager(val context: Context) {
playback?.callbacks = callbacks
}
fun play(onNotInitialized: () -> Unit = {}, onPlay: () -> Unit = {}) {
fun play(onNotInitialized: () -> Unit) {
if (playback != null && !playback!!.isPlaying) {
if (!playback!!.isInitialized) {
onNotInitialized()
} else {
openAudioEffectSession()
if (playbackLocation == PlaybackLocation.LOCAL) {
AudioFader.startFadeAnimator(playback!!, true) {
// Code when Animator Ends
onPlay()
if (playback is CrossFadePlayer) {
if (!(playback as CrossFadePlayer).isCrossFading) {
AudioFader.startFadeAnimator(playback!!, true)
}
} else {
AudioFader.startFadeAnimator(playback!!, true)
}
}
if (shouldSetSpeed) {