如何在其他java类中播放mp而不是MainActivity?

时间:2016-03-07 16:11:13

标签: java android android-mediaplayer

我有两个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();

        }
    });

1 个答案:

答案 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();