我正在使用exoplayer库创建音乐播放器。一切正常,除了不按我预期的那样随机播放。
我的问题如下:
想象一下我有5首歌:
歌曲1
歌曲2
歌曲3
歌曲4
歌曲5
而且我是第一个。然后,我单击洗牌按钮并使用exoPlayer.shuffleModeEnabled = true
启用洗牌。那么现在的顺序如下:
歌曲4
歌曲2
歌曲5
歌曲1
歌曲3
就像我在歌曲1中一样,此后它将转到歌曲3,然后它将完成而不会再现歌曲4、2和5。我指定的行为是以随机顺序再现所有歌曲。有什么办法可以通过exoplayer实现这一目标?
您可以实现自己的ShuffleOrder以实现此目的。一种方法是扩展DefaultShuffleOrder类并使用一个成员字段存储起始索引(在您的示例中,它应该是歌曲1)。您应该重写以下方法:
getNextIndex(int index)
getPreviousIndex(int index)
getFirstIndex()
getLastIndex()
这个想法是使其成为一个循环列表。然后,当您要激活混洗时,请执行以下操作:
concatenatingMediaSource.setShuffleOrder(new MyShuffleOrder());