我正在尝试等待 ExoPlayer 完成播放播放列表,然后将一首歌曲附加到播放列表的末尾,并从该添加的歌曲开始播放列表。
我尝试这样做,但它不起作用:
override fun onPlaybackStateChanged(playbackState: Int) {
super.onPlaybackStateChanged(playbackState)
if (playbackState == STATE_ENDED) {
playerHolder.getPlayer().addMediaItem(
playerHolder.getPlayer().currentMediaItem!!
)
playerHolder.getPlayer().play()
}
}
该代码运行后什么也没有播放。
问题中的代码不起作用的原因是因为在回调中玩家的
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
)
}
}