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

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

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

图(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包住,这样就可以了。但是谷歌的这个思想会给我带来很多启发,所以我写出来,同样希望给读者带来启发。给大家分享一下。