2011-12-13 36 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中有循环,所以它不受影响。 –