2013-01-10 86 views
0

我在我的项目中有一个按钮。 我想当按钮点击>>>>启动声音 和当按钮再次点击>>>停止声音... 我使用此代码,但不能停止声音,并再次启动它... 我怎样才能做到这一点? 谢谢。如何用按钮启动和停止声音?

Button btritm1 = (Button) findViewById(R.id.button9991); 
btritm1.setOnTouchListener(new View.OnTouchListener() { 

    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     final MediaPlayer mp1_1 = MediaPlayer.create(MainActivity.this, R.raw.ritm1); 
     if (event.getAction() == MotionEvent.ACTION_DOWN ) 
     { 
      if(mp1_1 != null && mp1_1.isPlaying()) 
      { 
       mp1_1.stop(); 
      }   
      else {  
       // xritm1 = 1; 
       // snd.stop_s_ritm1(); 
       mp1_1.setLooping(true); 
       mp1_1.start(); 
      } 
     } // end of if 
     return false; 
    } 
}); // end of ontouch listener/* 
+1

move this line'final MediaPlayer mp1_1 = MediaPlayer.create(MainActivity.this,R.raw.ritm1);'outside the function; –

+0

@SherifelKhatib你应该发布它作为答案。 – ppeterka

+0

@ppeterka你可以做到......技术性 –

回答

1
if(sound.isPlaying()){ 
sound.stop(); 
}else{ 
sound.reset(); 
sound.setDataSource(yourURL);//or InputStream etc. 
    sound.prepare(); 
sound.start(); 
} 
1

要使用一个很好的做法,声明MediaPlayer对象为类变量,并在您的onCreate()方法进行初始化。您的问题在于每次触摸控件时都会创建一个新玩家对象。 所以如上面已经说过,行

final MediaPlayer mp1_1 = MediaPlayer.create(MainActivity.this, R.raw.ritm1); 

应该是接收器之外。