如何停止已经播放的声音,并立即开始另一个

问题描述:

当的声音,先前选择正在播放的用户,我怎么能阻止这种声音,并立即打新选定的声音?我到目前为止的代码只能停止新的声音,但用户必须以发挥它再次选择声音。如何停止已经播放的声音,并立即开始另一个

public class MainActivity extends Activity { 
    public MediaPlayer mediaPlayer = null; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Button a = (Button) findViewById(R.id.First); 
     a.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if (mediaPlayer == null) { 
        mediaPlayer = MediaPlayer.create(MainActivity.this, R.raw.firstsound); 
        mediaPlayer.stop(); 
       } 
       else { 
        mediaPlayer.start(); 
        mediaPlayer = null; 
       } 
      } 
     } 
     ); 
     Button b = (Button) findViewById(R.id.Second); 
     b.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if (mediaPlayer == null) { 
        mediaPlayer = MediaPlayer.create(MainActivity.this, R.raw.secondsound); 
        mediaPlayer.stop(); 
       } 
       else { 
        mediaPlayer.start(); 
        mediaPlayer = null; 
       } 
      } 
     } 
     ); 

我制作了超过30种声音的音板,如果有帮助的话。我需要对我的代码进行什么(轻微的假设)更改?任何帮助将不胜感激!

+0

应按钮第一和第二代表什么功能? – 2013-04-06 21:16:08

+0

他们点击时发出声音。如果按钮“第一”被单击开始,然后当用户选择按钮“第二”,通过按钮播放的声音“第一”应该停止和第二声应该开始播放。 – user2250122 2013-04-06 21:25:16

public class MainActivity extends Activity { 

    public MediaPlayer mediaPlayer = null; 
    public Boolean playing=false; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Button a = (Button) findViewById(R.id.First); 
     a.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       (playing)mediaPlayer.stop(); 
       mediaPlayer = MediaPlayer.create(MainActivity.this, R.raw.firstsound); 
       mediaPlayer.start(); 
          playing=true; 
      } 

     }); 

     Button b = (Button) findViewById(R.id.Second); 
     b.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       (playing)mediaPlayer.stop(); 
       mediaPlayer = MediaPlayer.create(MainActivity.this, R.raw.firstsound); 
       mediaPlayer.start(); 
          playing=true; 
      } 
     }); 
    } 
} 
+0

检查mediaPlayer是否在停止它之前为null.if(mediaPlayer!= null && mediaPlayer.isPlaying)mediaPlayer.stop();' – AwadKab 2013-04-06 22:30:10

+0

@ user2250122编辑答案 – 2013-04-06 22:31:41

+0

@ user2250122如果这些答案中的任何一个帮助你,你可以放弃声望,通过接受一个答案(点击左边绿色的勾)和/或upvoting答案(点击橙色向上箭头左)。祝你工作顺利! maurizio – 2013-04-06 22:32:38