我正在使用exoplayer库创建音乐播放器。一切正常,除了不按我期望的那样随机播放。
我遇到的问题如下:
想象一下,我有5首歌:
歌曲1
歌曲2
歌曲3
歌曲4
歌曲5
我在第一个。然后,我单击洗牌按钮并使用exoPlayer.shuffleModeEnabled = true
启用洗牌。现在,顺序如下:
歌曲4
歌曲2
歌曲5
歌曲1
歌曲3
就像我在歌曲1中一样,此后它将转到歌曲3,然后完成而不复制歌曲4、2和5。我指定的行为是按随机顺序复制所有歌曲。有什么办法可以通过exoplayer实现这一目标?
答案 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)