如何在除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(); 

     } 
    }); 
+0

甚至在尝试启动声音之前调用'release()' – eduyayo

如果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();