2016-03-07 68 views
0

我有兩個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

回答

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(); 
    } 
} 

此外,因爲它已allready指出你不能釋放MediaPlayer對象,然後調用start();

相關問題