我正在使用 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()
这个想法是让它成为一个循环列表。在您的示例中,假设随机播放顺序为 4、2、5、1、3 和 1 当前正在播放,您的
getFirstIndex()
应该返回 1,并且 getLastIndex()
应该返回 5。对于 getNextIndex(int index)
和 getPreviousIndex(int index)
,做它应该做的事情,但是当你到达头部/尾部时,只需循环它。然后,当您想激活洗牌时,您可以:
concatenatingMediaSource.setShuffleOrder(new MyShuffleOrder());
关于android - ExoPlayer shuffle 不会重现所有歌曲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56937283/