MediaPlayer的抛出IllegalStateException异常 [英] MediaPlayer throws illegalstateexception
问题描述
EDIT3:
Ahaaa! MP崩溃时SP给出的样品14没有准备好......
编辑2:
我也有我的活动的Soundpool扮演什么短的声音效果,显然,它在某种程度上杀死的MediaPlayer。
在MediaPlayer负载,如,扮演一秒钟,然后加载SP时死亡。
如果我在以后的时间加载的MediaPlayer,当已经被加载SP,MP会开始播放罚款,但如果我在SP打了几个声音FX会死...
edit 2: I also have a SoundPool in my activity what plays short sound effects and, obviously, it somehow kills the MediaPlayer. Like the MediaPlayer loads, plays about a second and then dies when SP is loaded. If I load MediaPlayer at a later time, when SP is already loaded, MP will start playing fine, but will die if I play a few sound FX in SP...
老:
我想播放音乐的声音文件,大约2分钟之久...
old: I'm trying to play a music sound file, about 2 minutes long...
try {
MediaPlayer mp = MediaPlayer.create(main.this, R.raw.naturesounds );
mp.prepare();
mp.start();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
但它抛出
06-29 16:50:52.359: E/MediaPlayer(3772): prepareAsync called in state 8
06-29 16:50:52.359: W/System.err(3772): java.lang.IllegalStateException
06-29 16:50:52.359: W/System.err(3772): at android.media.MediaPlayer.prepare(Native Method)
06-29 16:50:52.359: W/System.err(3772): at engineDemo.com.main.fillWorld(main.java:132)
06-29 16:50:52.359: W/System.err(3772): at engineDemo.com.main.onCreate(main.java:83)
06-29 16:50:52.359: W/System.err(3772): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
06-29 16:50:52.359: W/System.err(3772): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
06-29 16:50:52.359: W/System.err(3772): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
06-29 16:50:52.359: W/System.err(3772): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
06-29 16:50:52.359: W/System.err(3772): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
06-29 16:50:52.359: W/System.err(3772): at android.os.Handler.dispatchMessage(Handler.java:99)
06-29 16:50:52.359: W/System.err(3772): at android.os.Looper.loop(Looper.java:130)
06-29 16:50:52.359: W/System.err(3772): at android.app.ActivityThread.main(ActivityThread.java:3683)
06-29 16:50:52.359: W/System.err(3772): at java.lang.reflect.Method.invokeNative(Native Method)
06-29 16:50:52.359: W/System.err(3772): at java.lang.reflect.Method.invoke(Method.java:507)
06-29 16:50:52.359: W/System.err(3772): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
06-29 16:50:52.363: W/System.err(3772): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
06-29 16:50:52.363: W/System.err(3772): at dalvik.system.NativeStart.main(Native Method)
任何想法可能是错误的或者什么播放背景音乐的最佳方式?
Any ideas what might be wrong or what's the best way to play background music?
谢谢!
编辑:
编辑这样
final MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.naturesounds);
mediaPlayer.setOnPreparedListener(new OnPreparedListener(){
public void onPrepared(MediaPlayer arg0) {
Log.e("ready!","ready!");
mediaPlayer.start();
}} );
它确实表明了日志,但仍没有起到......
it does show the Log, but still nothing plays...
推荐答案
例如,从href=\"http://developer.android.com/guide/topics/media/mediaplayer.html\">开发上的MediaPlayer文档的:
Example from the develop docs on MediaPlayer:
mp.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer arg0) {
mp.start();
}
});
//Below this line is the example from docs.
/*----------------------------------------------------*/
MediaPlayer mediaPlayer = MediaPlayer.create(context, R.raw.sound_file_1);
//mediaPlayer.start(); // no need to call prepare(); create() does that for you
您的MediaPlayer已经prepared()你不需要调用创造了。
Your MediaPlayer is already Prepared() you don't need to call that after create.
这篇关于MediaPlayer的抛出IllegalStateException异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!