ExoPlayer随机播放不会重现所有歌曲

时间:2019-07-08 14:37:40

标签: android exoplayer exoplayer2.x

我正在使用exoplayer库创建音乐播放器。一切正常,除了不按我期望的那样随机播放。

我遇到的问题如下:

想象一下,我有5首歌:

歌曲1

歌曲2

歌曲3

歌曲4

歌曲5

我在第一个。然后,我单击洗牌按钮并使用exoPlayer.shuffleModeEnabled = true启用洗牌。现在,顺序如下:

歌曲4

歌曲2

歌曲5

歌曲1

歌曲3

就像我在歌曲1中一样,此后它将转到歌曲3,然后完成而不复制歌曲4、2和5。我指定的行为是按随机顺序复制所有歌曲。有什么办法可以通过exoplayer实现这一目标?

1 个答案:

答案 0 :(得分:0)

您可以实现自己的ShuffleOrder以实现此目的。一种方法是扩展DefaultShuffleOrder类,并使用一个member字段存储起始索引(在您的示例中,它应该是歌曲1)。您应该重写以下方法:

getNextIndex(int index)
getPreviousIndex(int index)
getFirstIndex()
getLastIndex()

这个想法是使其成为一个循环列表。在您的示例中,假设随机播放顺序为4、2、5、1、3和1,当前播放中,您的getFirstIndex()应该返回1,而getLastIndex()应该返回5。对于{{1} }和getNextIndex(int index),按原样进行操作,但是当您到达头部/尾部时,只需将其环绕即可。

然后,当您要激活改组时,您可以执行以下操作:

getPreviousIndex(int index)