我有两个java类:MainActivity和Explosion。我想在Explosion java类中使用此代码。 (这,R.raw.explosionsound)不起作用(Explosion.this,R.raw.explosionsound)也不起作用。 我该如何解决这个问题?
MediaPlayer mp = null;
mp = MediaPlayer.create(this, R.raw.explosionsound);
if (mp != null) {
mp.stop();
mp.release();
}
mp.start();
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.stop();
mp.release();
}
});
答案 0 :(得分:0)
如果Explosion不是活动,则必须提供Context以实例化MediaPlayer对象。
Explosion explosion = new Explosion(context);
explosion.play();
class Explosion{
Context context;
public Explosion(Context context){
this.context = context;
}
public void play(){
MediaPlayer mp = MediaPlayer.create(context, R.raw.explosionsound);
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.stop();
mp.release();
}
});
mp.start();
}
}
同样已经指出你无法释放MediaPlayer对象然后调用start();