2013-01-10 110 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); 

應該是接收器之外。