按钮和声音?

时间:2014-08-27 14:47:25

标签: android button audio

我试图制作媒体播放器,我的问题是当你点击下一个声音按钮时如何设置声音停止。现在,如果我单击声音按钮它可以工作,但如果我点击一个新的声音,它也可以,但第一个不停止。

这是我的代码:

public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    public void onClick(View v){}
    public void btn1 (View v){
    MediaPlayer mp = MediaPlayer.create(this, R.raw.est1);
    mp.start();
    }
    public void btn2 (View v){
    MediaPlayer mp = MediaPlayer.create(this, R.raw.ast2);
    mp.start();
    }
    public void btn3 (View v){
    MediaPlayer mp = MediaPlayer.create(this, R.raw.dst3);
    mp.start();
    }
    public void btn4 (View v){
    MediaPlayer mp = MediaPlayer.create(this, R.raw.gstd4);
    mp.start();
    }
    public void btn5 (View v){
    MediaPlayer mp = MediaPlayer.create(this, R.raw.bstd5);
    mp.start();
    }
    public void btn6 (View v){
    MediaPlayer mp = MediaPlayer.create(this, R.raw.estd6);
    mp.start();


    }
}

3 个答案:

答案 0 :(得分:1)

问题是您有6种不同的MediaPlayers。 您必须暂停所有媒体播放器,然后启动当前播放器。

答案 1 :(得分:0)

你试过mp.stop();

这应该会停止第一个声音

 public void btn5 (View v){
    mp.stop();
    MediaPlayer mp = MediaPlayer.create(this, R.raw.bstd5);
    mp.start();
    }

喜欢这里: http://developer.android.com/reference/android/media/MediaPlayer.html

答案 2 :(得分:0)

我建议您只使用一个可以重置和重复使用的MediaPlayer。

public class MainActivity extends ActionBarActivity {

    private MediaPlayer mp;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mp = new MediaPlayer();
    }

    public void btn1 (View v){
        mp.release();
        mp = MediaPlayer.create(this, R.raw.est1);
        mp.start();
    }
    public void btn2 (View v){
        mp.release();
        mp = MediaPlayer.create(this, R.raw.est1);
        mp.start();
    }

    @Override
    public void onDestroy() {
       mp.release();
    }

}