mirror of
https://github.com/antebudimir/tempus.git
synced 2025-12-31 09:33:33 +00:00
avoid rebuffering after track change
This commit is contained in:
parent
1dca1ef68d
commit
38c144c073
1 changed files with 21 additions and 5 deletions
|
|
@ -21,6 +21,8 @@ import android.os.Looper
|
||||||
import android.text.TextUtils
|
import android.text.TextUtils
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import androidx.media3.common.*
|
import androidx.media3.common.*
|
||||||
|
import androidx.media3.common.Player.REPEAT_MODE_ALL
|
||||||
|
import androidx.media3.common.Player.RepeatMode
|
||||||
import androidx.media3.common.util.UnstableApi
|
import androidx.media3.common.util.UnstableApi
|
||||||
import androidx.media3.exoplayer.DefaultLoadControl
|
import androidx.media3.exoplayer.DefaultLoadControl
|
||||||
import androidx.media3.exoplayer.ExoPlayer
|
import androidx.media3.exoplayer.ExoPlayer
|
||||||
|
|
@ -136,9 +138,12 @@ class MediaService : MediaLibraryService() {
|
||||||
Log.d("MediaService", "update item due to network change");
|
Log.d("MediaService", "update item due to network change");
|
||||||
val pos = player.currentPosition
|
val pos = player.currentPosition
|
||||||
val k = player.currentMediaItemIndex
|
val k = player.currentMediaItemIndex
|
||||||
val item = MappingUtil.mapMediaItem(player.getMediaItemAt(k))
|
val old = player.getMediaItemAt(k)
|
||||||
player.replaceMediaItem(k, item)
|
val item = MappingUtil.mapMediaItem(old)
|
||||||
player.seekTo(pos)
|
if (item.requestMetadata.mediaUri != old.requestMetadata.mediaUri) {
|
||||||
|
player.replaceMediaItem(k, item)
|
||||||
|
player.seekTo(pos)
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -397,15 +402,26 @@ class MediaService : MediaLibraryService() {
|
||||||
|
|
||||||
if (currentMediaItem != null) {
|
if (currentMediaItem != null) {
|
||||||
val item = MappingUtil.mapMediaItem(currentMediaItem)
|
val item = MappingUtil.mapMediaItem(currentMediaItem)
|
||||||
player.replaceMediaItem(player.currentMediaItemIndex, item)
|
if (item.requestMetadata.mediaUri != currentMediaItem.requestMetadata.mediaUri)
|
||||||
|
player.replaceMediaItem(player.currentMediaItemIndex, item)
|
||||||
|
|
||||||
if (item.mediaMetadata.extras != null) {
|
if (item.mediaMetadata.extras != null) {
|
||||||
MediaManager.scrobble(item, false)
|
MediaManager.scrobble(item, false)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (player.currentMediaItemIndex + 1 == player.mediaItemCount)
|
if (player.currentMediaItemIndex + 1 < player.mediaItemCount)
|
||||||
|
player.replaceMediaItem(
|
||||||
|
player.currentMediaItemIndex + 1,
|
||||||
|
MappingUtil.mapMediaItem(player.getMediaItemAt(player.currentMediaItemIndex + 1)))
|
||||||
|
|
||||||
|
if (player.currentMediaItemIndex + 1 == player.mediaItemCount) {
|
||||||
|
if (player.repeatMode == REPEAT_MODE_ALL && player.mediaItemCount > 1)
|
||||||
|
player.replaceMediaItem(
|
||||||
|
0,
|
||||||
|
MappingUtil.mapMediaItem(player.getMediaItemAt(0)))
|
||||||
MediaManager.continuousPlay(player.currentMediaItem)
|
MediaManager.continuousPlay(player.currentMediaItem)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onIsPlayingChanged(isPlaying: Boolean) {
|
override fun onIsPlayingChanged(isPlaying: Boolean) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue