2016-03-07 1 views
0

У меня есть два класса java: MainActivity and Explosion. Я хочу использовать этот код в классе Explosion java. (это, R.raw.explosionsound) не работает и (Explosion.this, R.raw.explosionsound) также не работает. Как это исправить?Как играть в mp в другом классе Java, чем MainActivity?

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 не является активностью, вы должны предоставить контекст для создания объекта 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, а затем начала звонка();