首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ExoPlayer shuffle不会重现所有的歌曲

ExoPlayer shuffle不会重现所有的歌曲
EN

Stack Overflow用户
提问于 2019-07-08 22:37:41
回答 1查看 627关注 0票数 4

我正在使用exoplayer库创建一个音乐播放器。一切都很好,除了洗牌不是我所期望的行为。

我遇到的问题如下:

假设我有5首歌:

歌曲1

歌曲2

歌曲3

歌曲4

歌曲5

而我是第一个。然后我点击shuffle按钮并使用exoPlayer.shuffleModeEnabled = true启用shuffled。然后,现在的顺序如下:

歌曲4

歌曲2

歌曲5

歌曲1

歌曲3

正如我在歌曲1中一样,之后它将转到歌曲3,然后它将结束,而不会再现歌曲4、2和5。我指定的行为是以随机顺序再现所有歌曲。有没有办法用exoplayer来实现这一点呢?

EN

回答 1

Stack Overflow用户

发布于 2020-03-26 09:52:49

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

代码语言:javascript
复制
getNextIndex(int index)
getPreviousIndex(int index)
getFirstIndex()
getLastIndex()

这个想法是让它成为一个循环列表。在你的例子中,假设随机播放的顺序是4、2、5、1、3和1,你的getFirstIndex()应该返回1,getLastIndex()应该返回5。对于getNextIndex(int index)getPreviousIndex(int index),做它应该做的事情,但是当你到达头部/尾部时,只需循环它。

然后,当您想要激活随机播放时,您可以这样做:

代码语言:javascript
复制
concatenatingMediaSource.setShuffleOrder(new MyShuffleOrder());
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56937283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档