-
Notifications
You must be signed in to change notification settings - Fork 769
ExoPlayer crashes with ForwardingSimpleBasePlayer #2873
Copy link
Copy link
Closed
Labels
Description
Version
Media3 main branch
More version details
No response
Devices that reproduce the issue
all of them
Devices that do not reproduce the issue
N/A
Reproducible in the demo app?
Yes
Reproduction steps
apply this patch:
diff --git a/demos/session/src/main/java/androidx/media3/demo/session/PlayerActivity.kt b/demos/session/src/main/java/androidx/media3/demo/session/PlayerActivity.kt
index 6556926fa4..dd7e73a5d9 100644
--- a/demos/session/src/main/java/androidx/media3/demo/session/PlayerActivity.kt
+++ b/demos/session/src/main/java/androidx/media3/demo/session/PlayerActivity.kt
@@ -194,7 +194,6 @@ class PlayerActivity : AppCompatActivity() {
returnConvertView
.findViewById<TextView>(R.id.media_item)
.setTextColor(ContextCompat.getColor(context, R.color.white))
- deleteButton.visibility = View.GONE
} else {
// Styles for any other media item list item.
returnConvertView.setBackgroundColor(
@@ -203,11 +202,11 @@ class PlayerActivity : AppCompatActivity() {
returnConvertView
.findViewById<TextView>(R.id.media_item)
.setTextColor(ContextCompat.getColor(context, R.color.white))
- deleteButton.visibility = View.VISIBLE
- deleteButton.setOnClickListener {
+ }
+ deleteButton.visibility = View.VISIBLE
+ deleteButton.setOnClickListener {
controller.removeMediaItem(position)
updateCurrentPlaylistUI()
- }
}
return returnConvertView
diff --git a/demos/session_service/src/main/java/androidx/media3/demo/session/DemoPlaybackService.kt b/demos/session_service/src/main/java/androidx/media3/demo/session/DemoPlaybackService.kt
index c9ff44d381..fe0bd0d64a 100644
--- a/demos/session_service/src/main/java/androidx/media3/demo/session/DemoPlaybackService.kt
+++ b/demos/session_service/src/main/java/androidx/media3/demo/session/DemoPlaybackService.kt
@@ -31,6 +31,7 @@ import androidx.datastore.core.Serializer
import androidx.datastore.dataStore
import androidx.media3.cast.CastPlayer
import androidx.media3.common.AudioAttributes
+import androidx.media3.common.ForwardingSimpleBasePlayer
import androidx.media3.common.Player
import androidx.media3.common.listenTo
import androidx.media3.common.util.UnstableApi
@@ -153,10 +154,10 @@ open class DemoPlaybackService : MediaLibraryService() {
@OptIn(UnstableApi::class)
protected open fun buildPlayer(): Player {
val exoPlayer =
- ExoPlayer.Builder(this)
+ ForwardingSimpleBasePlayer(ExoPlayer.Builder(this)
.setAudioAttributes(AudioAttributes.DEFAULT, /* handleAudioFocus= */ true)
- .build()
- exoPlayer.addAnalyticsListener(EventLogger())
+ .build())
+ //exoPlayer.addAnalyticsListener(EventLogger())
return CastPlayer.Builder(/* context= */ this).setLocalPlayer(exoPlayer).build()
}then build session-demo, play something, enable repeat-one and remove the currently playing song from playlist
Expected result
it works
Actual result
2025-10-31 12:24:26.977 24725-24725 AndroidRuntime androidx.media3.demo.session E FATAL EXCEPTION: main
Process: androidx.media3.demo.session, PID: 24725
java.lang.IllegalArgumentException: isLoading only allowed when not in STATE_IDLE or STATE_ENDED
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:143)
at androidx.media3.common.SimpleBasePlayer$State.<init>(SimpleBasePlayer.java:1071)
at androidx.media3.common.SimpleBasePlayer$State.<init>(SimpleBasePlayer.java:99)
at androidx.media3.common.SimpleBasePlayer$State$Builder.build(SimpleBasePlayer.java:842)
at androidx.media3.common.ForwardingSimpleBasePlayer.getState(ForwardingSimpleBasePlayer.java:187)
at androidx.media3.common.SimpleBasePlayer.invalidateState(SimpleBasePlayer.java:3176)
at androidx.media3.common.ForwardingSimpleBasePlayer$PlayerListener.onEvents(ForwardingSimpleBasePlayer.java:531)
at androidx.media3.exoplayer.ExoPlayerImpl.lambda$new$0$androidx-media3-exoplayer-ExoPlayerImpl(ExoPlayerImpl.java:308)
at androidx.media3.exoplayer.ExoPlayerImpl$$ExternalSyntheticLambda18.invoke(D8$$SyntheticClass:0)
at androidx.media3.common.util.ListenerSet$ListenerHolder.iterationFinished(ListenerSet.java:430)
at androidx.media3.common.util.ListenerSet.handleMessage(ListenerSet.java:374)
at androidx.media3.common.util.ListenerSet.$r8$lambda$rFcF5Pkb99AL585p5-2u78YfNkY(Unknown Source:0)
at androidx.media3.common.util.ListenerSet$$ExternalSyntheticLambda0.handleMessage(D8$$SyntheticClass:0)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loopOnce(Looper.java:232)
at android.os.Looper.loop(Looper.java:317)
at android.app.ActivityThread.main(ActivityThread.java:8934)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:591)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:911)
Media
doesn't matter
Bug Report
- You will email the zip file produced by
adb bugreportto android-media-github@google.com after filing this issue.
Reactions are currently unavailable