当 ExoPlayer 播放列表达到 STATE_ENDED 时,如何将歌曲添加到其末尾并从该添加的歌曲开始播放?

问题描述 投票:0回答:1

我正在尝试等待 ExoPlayer 完成播放播放列表,然后将一首歌曲附加到播放列表的末尾,并从该添加的歌曲开始播放列表。

我尝试这样做,但它不起作用:

        override fun onPlaybackStateChanged(playbackState: Int) {
            super.onPlaybackStateChanged(playbackState)
            if (playbackState == STATE_ENDED) {
                playerHolder.getPlayer().addMediaItem(
                    playerHolder.getPlayer().currentMediaItem!!
                )
                playerHolder.getPlayer().play()
            }
        }

该代码运行后什么也没有播放。

android androidx exoplayer android-media3
1个回答
0
投票

问题中的代码不起作用的原因是因为在回调中玩家的

playWhenReady
字段为true,所以
play()
没有效果。需要进行搜索调用才能开始播放。下面的代码完成了我们想要做的事情。

        override fun onPlaybackStateChanged(playbackState: Int) {
            super.onPlaybackStateChanged(playbackState)
            if (playbackState == STATE_ENDED) {
                val player = playerHolder.getPlayer()
                player.addMediaItem(
                    player.currentMediaItem!!

                )
                player.seekTo(
                    player.mediaItemCount - 1,
                    C.TIME_UNSET
                )
            }
        }
© www.soinside.com 2019 - 2024. All rights reserved.