关于MediaPlayer反复调用start和stop报错:MediaPlayer start called in state 0;

关于MediaPlayer反复调用start和stop报错:MediaPlayer start called in state 0;


1.问题

前段时间自己做一个模仿打字效果的小程序显示文字时遇到的一个问题.

报错:MediaPlayer start called in state 0; 主要原因在于start()出现问题,源于start()播放开始之前没有调用prepare()。在初始化MediaPlayer时,通过create()方法设置数据源,则不能写mediaPlayer.prepare()方法,只要成功返回播放器就不需要prepare,但是:如果反复多次调用了start()和stop()方法,就会出现MediaPlayer start called in state 0错误

2.解决方法

需要在start()之前必须重新prepare()的或stop()之后调用prepare(),如果使用pause()暂停则不需要在其之后调用prepare(),直接start()就可以。

@方法一:在stop后调用Prepare()方法

            mMediaPlayer.start();

            if (mMediaPlayer.isPlaying()) {

                mMediaPlayer.stop();

                try {

                    mMediaPlayer.prepare();//要么在stop后调用prepare

                } catch (IOException e) {

                    e.printStackTrace();

                }

            }

@方法二:在start之前调用prepare()方法

  经测试,此方法效果最佳

          try {

                    mMediaPlayer.prepare();//要么在每次start之前调用prepare

                } catch (IOException e) {

                    e.printStackTrace();

                }

            mMediaPlayer.start();

            if (mMediaPlayer.isPlaying()) {

                mMediaPlayer.stop();

            }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本人初学Android,最近做了一个实现安卓简单音乐播放功能的播放器,收获不少,于是便记录下来自己的思路与知识总结...
    落日柳风阅读 19,233评论 2 41
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,547评论 0 17
  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 7,449评论 0 10
  • 2017年5月17日 Kylin_Wu 标注(★☆)为考纲明确给出考点(必考) 常见手机系统(★☆) And...
    Azur_wxj阅读 1,838评论 0 10
  • 幸福 是一杯茶,抿着。 是一本书,捧着。 是一个人,陪着。 是一瓶柴米油盐酱醋茶,活着。 是平淡,但始终走着。
    PaytonWang阅读 254评论 0 2