昨天编写一个播放软件在软件都完成的时候,首先在模拟器上使用总是提示一个错误: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)
最后在网上查找资料之后,发现这个问题是模拟器的问题,可能是不同的版本系统或硬件对视频的格式支持不同的原因,最后自己就将软件部署到真实的手机上,发现可以正常的运行