2014-04-01 145 views
0

我需要一個按鈕,當按下時會啓動,再次按下時會停止。否則,我有重疊的聲音。請問您能幫助我嗎?以下是我目前擁有的功能,並且無法再次單擊時停止按鈕,因此當前只是播放並在聲音完成時停止,導致聲音重疊。當另一個人按下時停下來也是理想的,但我不知道如何輕鬆地加入這一點。啓動後聲音按鈕停止

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_boardone); 

    Button one = (Button) findViewById(R.id.button1); 
    one.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      MediaPlayer mp = MediaPlayer.create(BoardoneActivity.this, R.raw.mouse_laughter); 
      mp.start(); 

     } 
    }); 

    Button two = (Button) findViewById(R.id.button2); 
    two.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      MediaPlayer mp = MediaPlayer.create(BoardoneActivity.this, R.raw.evil_laugh); 
      mp.start(); 
     } 
    }); 
+0

請嘗試下面的代碼,讓我知道它是否工作與否。 – InnocentKiller

回答

3

不使用媒體播放器的兩個對象。 Bleow是我的項目中的一部分方法。如果有任何錯誤讓我知道。

private MediaPlayerManager mRecordingPlayer = null; 



     private void initAudioPlayer(){ 
     if(mRecordingPlayer == null){ 
      mRecordingPlayer = new MediaPlayerManager(); 

     } 
    } 


     private void playMusic(int position){ 
     initAudioPlayer(); 
     mRecordingPlayer.resetPlayer(); 
     mRecordingPlayer.setupPlayback("your reasource"); 
     mRecordingPlayer.startPlaying(); 
    } 

     private void stopPlaying(){ 
     initAudioPlayer(); 
     if(mRecordingPlayer.isPlaying()){ 
      mRecordingPlayer.pausePlaying(); 

     } 

    } 


    @Override 
    public void onPause() { 
     clearAudioPlayer(); 
     super.onPause(); 
    } 


    private void clearAudioPlayer(){ 
     if(mRecordingPlayer != null){ 
      mRecordingPlayer.resetPlayer(); 
     } 
    } 


    @Override 
    public void onClick(View view) { 

     boolean on = ((ToggleButton) view).isChecked(); 
      if(on){ 
       playMusic("play music"); 
       ((ToggleButton) view).setChecked(true); 
      }else{ 
       stopPlaying(); 
      } 

    } 
+0

你好,謝謝你的答覆,我已經試過你的方法無辜,不肯定Ranjith關於錄音。我正在創建一個音板。我嘗試了一下代碼,但還是一無所獲。你能否使用我的代碼來演示一個例子。我花了數小時,仍然無法弄清楚這一點,在Youtube上沒有任何內容。謝謝你們的幫助。我真的希望你們中的一位能夠爲我做這項工作。 – user3365065

+0

選中此項並讓我們知道它的工作 – Ranjith

0

請嘗試使用以下代碼。

mPlayPause.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View arg0) { 
       if (mp.isPlaying()) { 
        if (mp != null) { 
         mp.pause(); 
         mPlayPause.setText("Play"); 
        } 
       } else { 
        if (mp != null) { 
         mp.start(); 
         mPlayPause.setText("Pause"); 
        } 
       } 
      } 
     });