音乐的随机播放

刚刚测试了一下android系统下三个音乐播放器关于随机播放音乐的实现方式:QQ音乐,小米的音乐播放器,以及百度音乐。

把播放模式设定为随机播放,播放存在手机的上的音乐列表。经过测试,大概分析出了3个播放器各自随机播放的实现。

1. 小米的音乐播放器
小米音乐的随机算法:在进入一个列表的时候,一组随机数就已经生成,然后音乐播放的循序就是按随机数进行的。
比如现在有5首歌曲,开始播放的时候生成了一个5,2,1,4,3这样的随机数组,然后顺序取歌曲播放就行了,小米的随机算法一定是这样的。因为你按向左播放(也就是播放前一首歌曲的时候),就会播放上一首播放的,而不是随机抽取的一首歌。这样本来是没有问题的,但是当这5首歌曲已经随机播放完了以后,继续播放的时候的随机顺序还是5,2,1,4,3。一直这样循环下去。我作为一个用户,希望的随机播放绝不是这样的。
小米音乐的随机算法,需要占用额外的内存(歌曲数目*sizeof(int)字节),这个内存消耗是可以接受的。而百度音乐和QQ音乐是得到随机数以后直接去播放音乐,没有这个内存消耗。
2. 百度音乐(版本v2.3.0)
百度音乐的随机很简单,就是每次播放一首歌曲的时候随机生成一个小于歌曲的整数,然后播放对应的歌曲就行了。这样会有以下问题
比如现在还是5首歌曲,它的播放可能会是5,2,5,2,4,5。。。每首歌曲播放的概率是一样的,理论上当播放的次数多了以后,每首歌曲被播放的次数是相等的,但是分布不一定是均匀的。也就是用户可能随机了几次以后都在同样几首歌曲上跳跃。同样我觉得这样的随机播放也不是很好的用户体验。
3. QQ音乐(版本2.4.0.1588)
QQ音乐的随机播放和百度音乐是一样的方式。
关于什么是一个理想的音乐列表随机播放的问题,简单做了一下调研,5个人有4个人希望的随机播放方式为:小米音乐的改进版,即当第一遍把所有的5首歌曲都随机播放完了以后,再重新生成一个随机播放序列,并按新的随机序列播放。改进就是设定一个bool数组,每播放一首歌曲,把数组对应的值设定为true,并且测试bool数组是否全为true。如果全为true,就生成新的随机序列,进行播放。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值