ExoPlayer 随机播放无法播放所有歌曲

4

我正在使用exoplayer库创建音乐播放器,除了洗牌之外,一切都很正常。

我的问题是:

假设我有5首歌曲:

歌曲1

歌曲2

歌曲3

歌曲4

歌曲5

我正在听第1首歌。然后我点击洗牌按钮并使用exoPlayer.shuffleModeEnabled = true启用洗牌。现在的顺序如下:

歌曲4

歌曲2

歌曲5

歌曲1

歌曲3

由于我正在听歌曲1,因此它将播放歌曲3,然后在未播放歌曲4、2和5的情况下完成。我希望以随机顺序播放所有歌曲。是否有办法在exoplayer中实现这一点?


你找到了任何解决方案或其他方法吗? - Richa Shah
1个回答

0

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

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

这个想法是将其变成一个循环列表。在您的示例中,假设洗牌顺序为4、2、5、1、3,当前正在播放1,您的getFirstIndex()应返回1,getLastIndex()应返回5。对于getNextIndex(int index)getPreviousIndex(int index),执行它们应该执行的操作,但当到达头部/尾部时,只需将其循环即可。

然后,当您想要激活洗牌时,您可以执行以下操作:

concatenatingMediaSource.setShuffleOrder(new MyShuffleOrder());

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接