我正在使用exoplayer库创建一个音乐播放器。一切都很好,除了洗牌不是我所期望的行为。
我遇到的问题如下:
假设我有5首歌:
歌曲1
歌曲2
歌曲3
歌曲4
歌曲5
而我是第一个。然后我点击shuffle按钮并使用exoPlayer.shuffleModeEnabled = true启用shuffled。然后,现在的顺序如下:
歌曲4
歌曲2
歌曲5
歌曲1
歌曲3
正如我在歌曲1中一样,之后它将转到歌曲3,然后它将结束,而不会再现歌曲4、2和5。我指定的行为是以随机顺序再现所有歌曲。有没有办法用exoplayer来实现这一点呢?
发布于 2020-03-26 09:52:49
您可以实现自己的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());https://stackoverflow.com/questions/56937283
复制相似问题