2011-12-13 75 views
0

我的第一個應用程序是一個音頻採樣器。按鈕啓動音頻循環,其他按鈕在頂部播放不同的聲音。讓聲音自行關閉而不是自己播放

如果我多次點擊一個按鈕,聲音會自動播放。 我希望最後一次點擊切斷仍在播放同一個按鈕的任何音頻。但我不希望它干擾從不同按鈕開始的任何音頻。 (對於播放某人說「我的名字是」的人的音頻的按鈕,同一個按鈕的3個快速點擊應該導致「我的我的名字是」,但是一個循環應該在後臺繼續播放) 。

我正在使用SoundPool和OnTouchListeners。

謝謝。

回答

0

我從來沒有使用SoundPool,但與MediaPlayer,如果你使用release()它應該停止它。如果你把它放在start()之前,它應該停止它(如果它已經在播放),然後再次啓動它。

EDIT

http://developer.android.com/reference/android/media/SoundPool.html#stop%28int%29

公共最終空隙停止(INT流ID) 自:API級別1

停止回放流。停止streamID指定的流。這是play()函數返回的值。如果正在播放流,它將被停止。它還釋放與此流關聯的所有本機資源。如果流不在播放,則不起作用。

參數 流ID由play()函數

你有沒有打過電話站(流ID)返回的流ID?

+0

感謝您的答案,但沒有運氣呢。我嘗試釋放,暫停,並在開始前的幾個地方停下來。似乎沒有影響它。 –

+0

你想釋放()等,soundID或者streamID? –

+0

要更加敏銳,暫停和停止似乎不會影響它。 soundpool.release不會從我所有的按鈕聲音 –

0

如果您查看SoundPool的文檔,constructor的參數爲maxStreams。同樣在概述中:

當構建SoundPool對象時,maxStreams參數設置可從此單個SoundPool一次播放的最大數據流數。 SoundPool跟蹤活動流的數量。如果超過了最大數量的數據流,SoundPool會根據優先級自動停止先前播放的數據流,然後根據該優先級按年齡自動停止。

你可以創建一個單獨的SoundPool(從迴路分開)這一個聲音,並設置maxStreams1

+0

謝謝。這工作正常。無論如何,我在MediaPlayer中有循環,所以它不受影響。 –