Android开发Mediaplayer总是报prepareAsync called in state 8和error(1,-2147483648)错误

昨天编写一个播放软件在软件都完成的时候,首先在模拟器上使用总是提示一个错误:called in state8.

自己反复的查看代码移植没有发现问题的所在,后来就把android的API对于这个类的介绍又给看了看,发现了问题所在。

一开始的代码如下:

MediaPlayer mPlayer=MediaPlayer.create(MainActivity.this, R.raw.c);
                
                mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
                
                mPlayer.setDisplay(sHolder);
                
                try {
                    mPlayer.prepare();
                    
                } catch (IllegalStateException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                
                mPlayer.start();

后来查看后,发现这句代码MediaPlayer mPlayer=MediaPlayer.create(MainActivity.this, R.raw.c);执行完的时候其实已经相当于执行了mPlayer.prepare(),所以才会总是出现一个错误:prepareAsync called in state 8。

做相应的改变

try {
                    
                    if (mPlayer!=null) {
                        mPlayer.stop();
                    }
                    
                    mPlayer.prepare();

}

就可以解决相应的错误。

当这个问题解决之后,我再次运行之后又发现了一个问题,总是报一个错误:error(1,-2147483648)

最后在网上查找资料之后,发现这个问题是模拟器的问题,可能是不同的版本系统或硬件对视频的格式支持不同的原因,最后自己就将软件部署到真实的手机上,发现可以正常的运行

 

posted @ 2015-08-20 09:40  杨MT  阅读(867)  评论(0编辑  收藏  举报