diff --git a/app/src/main/java/code/name/monkey/retromusic/service/CrossFadePlayer.kt b/app/src/main/java/code/name/monkey/retromusic/service/CrossFadePlayer.kt index d1e0e33f6..4f5e791ad 100644 --- a/app/src/main/java/code/name/monkey/retromusic/service/CrossFadePlayer.kt +++ b/app/src/main/java/code/name/monkey/retromusic/service/CrossFadePlayer.kt @@ -120,20 +120,9 @@ class CrossFadePlayer(val context: Context) : Playback, MediaPlayer.OnCompletion override val isPlaying: Boolean get() = mIsInitialized && getCurrentPlayer()?.isPlaying == true - // This has to run when queue is changed or song is changed manually by user - fun sourceChangedByUser() { - hasDataSource = false - cancelFade() - getCurrentPlayer()?.apply { - if (isPlaying) stop() - } - getNextPlayer()?.apply { - if (isPlaying) stop() - } - } - - override fun setDataSource(path: String): Boolean { + override fun setDataSource(path: String, force: Boolean): Boolean { cancelFade() + if (force) hasDataSource = false mIsInitialized = false /* We've already set DataSource if initialized is true in setNextDataSource */ if (!hasDataSource) { @@ -154,7 +143,7 @@ class CrossFadePlayer(val context: Context) : Playback, MediaPlayer.OnCompletion */ private fun setDataSourceImpl( player: MediaPlayer, - path: String + path: String, ): Boolean { player.reset() player.setOnPreparedListener(null) diff --git a/app/src/main/java/code/name/monkey/retromusic/service/MultiPlayer.java b/app/src/main/java/code/name/monkey/retromusic/service/MultiPlayer.java index 275300f2b..f5c8756bb 100644 --- a/app/src/main/java/code/name/monkey/retromusic/service/MultiPlayer.java +++ b/app/src/main/java/code/name/monkey/retromusic/service/MultiPlayer.java @@ -30,6 +30,8 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.preference.PreferenceManager; +import org.jetbrains.annotations.NotNull; + import code.name.monkey.appthemehelper.util.VersionUtils; import code.name.monkey.retromusic.ConstantsKt; import code.name.monkey.retromusic.R; @@ -66,7 +68,7 @@ public class MultiPlayer * @return True if the player has been prepared and is ready to play, false otherwise */ @Override - public boolean setDataSource(@NonNull final String path) { + public boolean setDataSource(@NotNull final String path, boolean force) { mIsInitialized = false; mIsInitialized = setDataSourceImpl(mCurrentMediaPlayer, path); if (mIsInitialized) { diff --git a/app/src/main/java/code/name/monkey/retromusic/service/MusicService.kt b/app/src/main/java/code/name/monkey/retromusic/service/MusicService.kt index 3cbbf4607..72005339d 100644 --- a/app/src/main/java/code/name/monkey/retromusic/service/MusicService.kt +++ b/app/src/main/java/code/name/monkey/retromusic/service/MusicService.kt @@ -92,6 +92,7 @@ import code.name.monkey.retromusic.util.PreferenceUtil.unregisterOnSharedPrefere import code.name.monkey.retromusic.volume.AudioVolumeObserver import code.name.monkey.retromusic.volume.OnAudioVolumeChangedListener import com.bumptech.glide.request.target.CustomTarget +import com.bumptech.glide.request.target.Target import com.bumptech.glide.request.transition.Transition import org.koin.java.KoinJavaComponent.get import java.util.* @@ -910,14 +911,6 @@ class MusicService : MediaBrowserServiceCompat(), } fun playSongAtImpl(position: Int) { - if (!trackEndedByCrossfade) { - // This is only imp if we are using crossfade - if (playback is CrossFadePlayer) { - (playback as CrossFadePlayer).sourceChangedByUser() - } - } else { - trackEndedByCrossfade = false - } if (openTrackAndPrepareNextAt(position)) { play() } else { @@ -1285,9 +1278,15 @@ class MusicService : MediaBrowserServiceCompat(), @Synchronized private fun openCurrent(): Boolean { + val force = if (!trackEndedByCrossfade) { + true + } else { + trackEndedByCrossfade = false + false + } return try { if (playback != null) { - return playback!!.setDataSource(getTrackUri(currentSong)) + return playback!!.setDataSource(getTrackUri(currentSong), force) } else false } catch (e: Exception) { e.printStackTrace() diff --git a/app/src/main/java/code/name/monkey/retromusic/service/playback/Playback.kt b/app/src/main/java/code/name/monkey/retromusic/service/playback/Playback.kt index 08c81bb05..9a0ef73a7 100644 --- a/app/src/main/java/code/name/monkey/retromusic/service/playback/Playback.kt +++ b/app/src/main/java/code/name/monkey/retromusic/service/playback/Playback.kt @@ -23,7 +23,7 @@ interface Playback { val audioSessionId: Int - fun setDataSource(path: String): Boolean + fun setDataSource(path: String, force: Boolean): Boolean fun setNextDataSource(path: String?)