gpt4 book ai didi

android - ExoPlayer shuffle 不会重现所有歌曲

转载 作者:行者123 更新时间:2023-12-03 21:01:51 28 4
gpt4 key购买 nike

我正在使用 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com