Android中music播放器源码要点详解【安卓music源码进化一】

安卓music应用的bug及改进思路
本文讨论了安卓music应用中存在的bug,即播放音乐时点击上一首导致从头开始播放的问题。分析了谷歌设计思路背后的初衷与实际操作中的矛盾,并提出了一种简化的设计方案。此外,文章还探讨了该设计对用户体验的影响,以及如何通过代码修改解决这一问题。

最近来了个安卓music的bug,播放music的时候,点击上一首播放当前歌,从头开始播放。谷歌公司当初设计的思想是按照以前cd的思想,点击一下回到当前歌的开始点,再点击一下(时间间隔要短,就像双击的效果就可以了)就回到上一首歌了。谷歌的这种思想初衷是好的,但是有个拖动条可以拖动,歌曲可以在任何位置播放,就没有必要这么设计了。对开发来说这个设计没什么,但是对用户来说,用户体验相当不好。个人观点:其实谷歌公司也没有从中国用户的角度来考虑这个问题吧,或许在美国这个设计思路,美国公民是接受的。闲话少说,先来看看截图:图(1),图(2)。大明原创,转载请标明出处:http://blog.youkuaiyun.com/wdaming1986/article/details/6990477

图(1) 图(2)

下面来看代码:

在源码中..\packages\apps\Music\src\com\android\music\MediaPlaybackActivity.java类中,423行代码:

mPrevListener 监听器,监听播放前一首button按钮,大明提醒:安卓点击屏幕的button键,点击一下事件发出一个消息,一直按着也发一个消息,这点和实体键有区别。双击的效果就可以用播放歌大小(这个大小我个人感觉是size,byte字节的大小,没有细细研究,个人猜测。),但是这种设计会有弊端,用户在刚播放音乐的时候,1秒内点击播放上一首歌,同样可以返回到上一首歌,这点谷歌没有想到吧,用户什么情况都可能发生的。

private View.OnClickListener mPrevListener = new View.OnClickListener() { public void onClick(View v) { if (mService == null) return; try { if (mService.position() < 2000) { mService.prev(); //如果播放点击时间比较短,在1秒内点击,这个就是双击的效果,但是有个弊端,单击时间特别短也可以进入到上一首歌。 } else { mService.seek(0);//如果歌播放超过1秒,点击播放歌曲上一首,播放当前歌曲的开始处。 mService.play(); } } catch (RemoteException ex) { } } };

如果想修改,很简单,就在onClick()方法中,不做判断,直接mService.prev(); 就行了,记得try--catch包住,这样就可以了。但是谷歌的这个思想会给我带来很多启发,所以我写出来,同样希望给读者带来启发。给大家分享一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值