我在两个不同的应用程序中有两种类型的 MediaPlayer 播放。一种是单个变量,等待完成后再播放下一个单词/声音效果。这似乎工作正常。另一个是一组最多 4 个同时播放的 MediaPlayer 变量。这适用于 2.3.3,似乎也适用于 4.0.3 虚拟设备,但在我的 TF101 上,这两个应用程序都会崩溃。
如果触摸错误,将调用 playse('oops')。
public void playse(String ss){
MediaPlayer tempse;
if(tse1 == null){tempse = tse1;}
else{if(tse2 == null){tempse = tse2;}
else{if(tse3 == null){tempse = tse3;}
else{if(tse4== null){tempse = tse4;}}}}
if(ss == "oops"){ tempse = MediaPlayer.create(mContext, R.raw.seoops); tempse.start();}
}
在应用程序的主循环中,4 个变量的处理方式如下:
if(tse1 != null){ if(tse1.isPlaying()== false){tse1.release(); tse1= null;} }
if(tse2 != null){ if(tse2.isPlaying()== false){tse2.release(); tse2= null;} }
if(tse3 != null){ if(tse3.isPlaying()== false){tse3.release(); tse3= null;} }
if(tse4 != null){ if(tse4.isPlaying()== false){tse4.release(); tse4= null;} }
最佳答案
你可以缩写
MediaPlayer tempse;
if(tse1 == null){tempse = tse1;}
else{if(tse2 == null){tempse = tse2;}
else{if(tse3 == null){tempse = tse3;}
else{if(tse4== null){tempse = tse4;}}}}
到
MediaPlayer tempse = null;
也许您应该将 ==
更改为 !=
这是我在不知道你得到什么错误的情况下能看到的唯一的东西。
关于java - Android ICS MediaPlayer 仅在用于同时播放的变量上崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9763266/