2012-10-21 173 views
3

我試圖在按下按鈕時循環聲音。在按下按鈕時循環聲音

我怎麼能這樣做,而我按下按鈕had the事件「MotionEvent.ACTION_DOWN」不會停止運行聲音?我已經完成的方式只運行一次。我試圖將return語句更改爲false,但它不起作用。

setLoop MediaPlayer選項不能幫助我,因爲我想繼續播放新的聲音,儘管當前聲音沒有完成播放。

這裏是我的代碼:

public boolean onClick(View v, MotionEvent event) { 
    if(event.getAction() == MotionEvent.ACTION_DOWN){ 
     //here should not stop running the soundPool 
     soundPool.play(R.raw.sound1, 1, 1, 1, 0, 1); 
    } 
    if(event.getAction() == MotionEvent.ACTION_UP){ 
     // stop running the soundpool 
    } 
    return true; 
} 

回答

0

更換return false;return true;。獲得ACTION_UP的唯一方法是返回true以通知Android系統您將處理整個onClick事件。

+0

我我試過兩種方法,只能運行一次 – karse23

2

更換第五個參數爲-1:

soundPool.play(R.raw.sound1, 1, 1, 1, -1, 1); 

As的play() doc第五參數loop或者取0(=無環),或-1(=環永遠)

+0

它會產生相同的聲音循環,我想多次運行聲音作爲一個新的獨立聲音池,而不允許它停止其他聲音的執行。 爲了給你一個想法,我想玩一個機槍彈多次發出子彈聲音的聲音。 – karse23

+1

所以,這不是一個原始的聲音,對吧? – iTurki

+0

是的,它只是一個原始的子彈聲音,但我不想循環它,我想重複執行此SoundPool,而事件是ACTION_DOWN。我想這樣做,因爲我想在前一個結束之前開始一個新的聲音,而不會丟失子彈射擊聲的回聲。 問題是,ACTION_DOWN只響應一次,我總是想要一個活動的偵聽器。 謝謝! 如果我沒有正確解釋,請原諒我。 – karse23