让声音切断,而不是自己玩

时间:2011-12-13 06:05:36

标签: java android

我的第一个应用程序是一个音频采样器。一个按钮启动音频循环,其他按钮在顶部播放不同的声音。

如果我多次按下一个按钮,声音会自动播放。 我希望最后一次点击切断仍在同一按钮播放的任何音频。但我不希望它干扰从不同按钮开始的任何音频。

(对于播放某人敲击“我的名字是”的音频的按钮,快速点击同一个按钮会导致“我 - 我 - 我的名字是”。但是循环应该仍然在后台播放)。

我正在使用SoundPool和OnTouchListeners。

感谢。

2 个答案:

答案 0 :(得分:0)

我从未使用过SoundPool,但是使用MediaPlayer,如果你使用release(),它应该停止它。如果你把它放在start()之前,它应该停止它(如果它已经在播放)然后重新启动它。

修改

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

public final void stop(int streamID) 自:API Level 1

停止播放流。停止streamID指定的流。这是play()函数返回的值。如果正在播放流,则会停止播放。它还会释放与此流关联的所有本机资源。如果流没有播放,则无效。

参数 streamID play()函数返回的streamID

您是否尝试过调用stop(streamID)?

答案 1 :(得分:0)

如果您查看SoundPool的文档,则constructor会有maxStreams的参数。同样在概述中:

  

构造SoundPool对象时,maxStreams参数设置从该单个SoundPool一次可以播放的最大流数。 SoundPool跟踪活动流的数量。如果超过最大流数,SoundPool将首先根据优先级自动停止先前播放的流,然后按该优先级内的年龄停止。

您可以为这一个声音创建单独的SoundPool(与循环分开),并将maxStreams设置为1