找回密码
 立即注册
搜索
查看: 2068|回复: 13

[其他] 单曲循环和随机播放这些播放逻辑,怎么实现起来比较优雅

[复制链接]
头像被屏蔽
     
发表于 2022-5-11 21:58 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2022-5-11 23:10 | 显示全部楼层
抽象一个父类,播放策略,有两个纯虚函数下一首歌,上一首歌。
应该需要一个实时维护的对应当前播放列表的有序数组。播放策略需要当前歌曲的索引index,列表数量size,以及获取对应索引歌曲的方法。

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

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

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

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

使用道具 举报

     
发表于 2022-5-11 23:31 | 显示全部楼层
反正网易和QQ感觉歌单一多感觉就只会在一个范围内随机,大厂都这德行了,
回复

使用道具 举报

头像被屏蔽
     
发表于 2022-5-11 23:37 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2022-5-11 23:41 | 显示全部楼层
大部分播放器是以播放列表为核心的,中文虽然写着随机播放,但是绝大多数时候是shuffle playlist,理解成洗牌更准确点
回复

使用道具 举报

     
发表于 2022-5-12 12:18 | 显示全部楼层
我是用随机数排列,然后列表循环。
回复

使用道具 举报

     
发表于 2022-5-12 12:35 来自手机 | 显示全部楼层
本帖最后由 win8 于 2022-5-12 12:37 编辑

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

使用道具 举报

     
发表于 2022-5-12 12:37 | 显示全部楼层
我是隔段时间就按各种加入时间/名称顺序放一边,能听到很多随机播放听不到的歌
回复

使用道具 举报

     
发表于 2022-5-12 16:52 来自手机 | 显示全部楼层
这也不是什么复杂的需求吧,单曲循环不说,随机播放shuffle playlist就行了
回复

使用道具 举报

发表于 2022-5-12 17:19 | 显示全部楼层
建个环形链表,单曲循环步长为0,循环播放步长为1,随机播放就随机步长播放历史记录步长就好了hhh
回复

使用道具 举报

头像被屏蔽
     
发表于 2022-5-12 18:44 来自手机 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2022-5-13 08:59 来自手机 | 显示全部楼层
让人觉得随机 得禁止播放器在播放完列表前随机到同一首歌
回复

使用道具 举报

     
发表于 2022-5-13 09:06 | 显示全部楼层
我到现在还没弄清楚Poweramp里面的随机分类,随机歌曲/分类是什么意思
回复

使用道具 举报

头像被屏蔽
     
发表于 2022-5-13 09:13 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2024-9-22 21:31 , Processed in 0.059652 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表