集美们哦不兄弟们,鄙人花了一下午到晚上十点的时间,查了又查,总结得出此原因绝对是MediaPlayer的状态不对,也就是它调用某个方法时候不在应该在的状态里面,比如说它在idel空闲状态,你硬是要对其进行播放或者什么操作,这是不允许的。所以要找出问题所在的地方即可,具体步骤如下:
1.通过try…catch先捕获出来,然后通过查看Log你设定的位置信息看看有什么不对劲的地方,比如鄙人出现的问题如下:
快速跳转但是不播放,我思索许久得出,player对象肯定此时是不播放状态,要不然它也不会频繁进入onCompletion这个函数里面,因而得出,我们需要在某个地方判断其为停止状态,我的是在定时器里面(因为我删了定时器,整个程序都可以跑,无论我怎么暴力频繁下一首下一首…),因而在下面对其进行判断:解决问题!!!!!!嘤嘤嘤耗费很多时间,但是解决之后很开心,因为自己也学到了许多,好了,继续备战考研!!!
timerForProcess.schedule(new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
if(!mPlayer.isPlaying()){
Log.e("test","播放器已经停止");
return;
}
Message message = Message.obtain();//Message对象可以重复使用,可以免除一直new Message对象造成无谓的内存压力(不断新建销毁对象),
message.what = MSG_ONPREPARED;
message.arg1 = mPlayer.getCurrentPosition();
try {
mMessengerForSeekbar.send(message);
} catch (RemoteException e) {
e.printStackTrace();
}
}
}, 0,500);