Android音乐播放器开发的MediaPlayer出现IllegalStateException

集美们哦不兄弟们,鄙人花了一下午到晚上十点的时间,查了又查,总结得出此原因绝对是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);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值