kll85757 发表于 2022-5-11 21:58

万里小路さん 发表于 2022-5-11 23:10

抽象一个父类,播放策略,有两个纯虚函数下一首歌,上一首歌。
应该需要一个实时维护的对应当前播放列表的有序数组。播放策略需要当前歌曲的索引index,列表数量size,以及获取对应索引歌曲的方法。

单曲循环,上一首歌和下一首歌始终返回当前歌曲(可以每次调用全局方法获取当前歌曲,或者保存在类里每次切换歌曲时重新赋值)

列表循环,记录当前索引,下一首就(++index) mod size,上一首--后加上size再mod size

随机可以将一个播放次序对应索引的数组shuffle之后按列表循环写,每次切换后或者循环一遍重新shuffle。或者每次下一首都随机,但下一首纯随机一般体验不太好,所以可能要写点伪随机啥的。

-- 来自 有消息提醒的 Stage1官方 Android客户端

whatd 发表于 2022-5-11 23:31

反正网易和QQ感觉歌单一多感觉就只会在一个范围内随机,大厂都这德行了,

归英章华 发表于 2022-5-11 23:37

einhorn 发表于 2022-5-11 23:41

大部分播放器是以播放列表为核心的,中文虽然写着随机播放,但是绝大多数时候是shuffle playlist,理解成洗牌更准确点

tiantian101 发表于 2022-5-12 12:18

我是用随机数排列,然后列表循环。

win8 发表于 2022-5-12 12:35

本帖最后由 win8 于 2022-5-12 12:37 编辑

本质上还是就播放列表,毕竟还得做“”上一首“”的功能

不可避免 发表于 2022-5-12 12:37

我是隔段时间就按各种加入时间/名称顺序放一边,能听到很多随机播放听不到的歌

schneehertz 发表于 2022-5-12 16:52

这也不是什么复杂的需求吧,单曲循环不说,随机播放shuffle playlist就行了

東京急行 发表于 2022-5-12 17:19

建个环形链表,单曲循环步长为0,循环播放步长为1,随机播放就随机步长播放历史记录步长就好了hhh

22174559 发表于 2022-5-12 18:44

一三五七九 发表于 2022-5-13 08:59

让人觉得随机 得禁止播放器在播放完列表前随机到同一首歌

浅仓透透 发表于 2022-5-13 09:06

我到现在还没弄清楚Poweramp里面的随机分类,随机歌曲/分类是什么意思

spyps 发表于 2022-5-13 09:13

页: [1]
查看完整版本: 单曲循环和随机播放这些播放逻辑,怎么实现起来比较优雅