fix: Adjust the cross-fade duration according to the Global animator speed

This commit is contained in:
Prathamesh More 2023-03-20 00:34:57 +05:30
parent bf165c7eff
commit 4a0c83b0a2
2 changed files with 10 additions and 4 deletions

View file

@ -2,21 +2,27 @@ package code.name.monkey.retromusic.service
import android.animation.Animator import android.animation.Animator
import android.animation.ValueAnimator import android.animation.ValueAnimator
import android.content.Context
import android.media.MediaPlayer import android.media.MediaPlayer
import android.provider.Settings
import androidx.core.animation.doOnEnd import androidx.core.animation.doOnEnd
import code.name.monkey.retromusic.service.playback.Playback import code.name.monkey.retromusic.service.playback.Playback
import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.PreferenceUtil
class AudioFader { class AudioFader {
companion object { companion object {
fun createFadeAnimator( fun createFadeAnimator(
context: Context,
fadeInMp: MediaPlayer, fadeInMp: MediaPlayer,
fadeOutMp: MediaPlayer, fadeOutMp: MediaPlayer,
endAction: (animator: Animator) -> Unit, /* Code to run when Animator Ends*/ endAction: (animator: Animator) -> Unit, /* Code to run when Animator Ends*/
): Animator? { ): Animator? {
val duration = PreferenceUtil.crossFadeDuration * 1000 // Get Global animator scale
if (duration == 0) { val animScale = Settings.Global.getFloat(context.contentResolver, Settings.Global.ANIMATOR_DURATION_SCALE, 1f)
// Set duration according to the global animation scale, so cross-fade actually lasts for the duration set by the user
val duration = (PreferenceUtil.crossFadeDuration * 1000 ) / animScale
if (duration == 0F) {
return null return null
} }
return ValueAnimator.ofFloat(0f, 1f).apply { return ValueAnimator.ofFloat(0f, 1f).apply {

View file

@ -236,7 +236,7 @@ class CrossFadePlayer(context: Context) : LocalPlayback(context) {
private fun crossFade(fadeInMp: MediaPlayer, fadeOutMp: MediaPlayer) { private fun crossFade(fadeInMp: MediaPlayer, fadeOutMp: MediaPlayer) {
isCrossFading = true isCrossFading = true
crossFadeAnimator = createFadeAnimator(fadeInMp, fadeOutMp) { crossFadeAnimator = createFadeAnimator(context, fadeInMp, fadeOutMp) {
crossFadeAnimator = null crossFadeAnimator = null
durationListener.start() durationListener.start()
isCrossFading = false isCrossFading = false