如何在除MainActivity之外的其他Java类中播放mp?
问题描述:
我有两个java类:MainActivity和Explosion。我想在Explosion java类中使用这段代码。 (这个,R.raw.explosionsound)不起作用,并且(Explosion.this,R.raw.explosionsound)也不起作用。 我该如何解决这个问题?如何在除MainActivity之外的其他Java类中播放mp?
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();
}
});
答
如果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();
}
}
此外,因为它已allready指出你不能释放MediaPlayer对象,然后调用start();
甚至在尝试启动声音之前调用'release()' – eduyayo