按钮和声音?

问题描述:

我试图让mediaplayer,我的问题是如何设置声音停止,当你点击下一个声音按钮。现在,如果我点击声音按钮,它的工作原理,但如果我点击一个新的声音,它的作品,但第一个不停止。按钮和声音?

这里是我的代码:

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


    } 
} 

我建议你只使用一个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(); 
    } 

} 
+0

非常感谢!解决我的问题:) – 2014-08-27 15:15:41

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

你有没有试过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