我的第一个应用程序是一个音频采样器。一个按钮启动音频循环,其他按钮在顶部播放不同的声音。
如果我多次按下一个按钮,声音会自动播放。 我希望最后一次点击切断仍在同一按钮播放的任何音频。但我不希望它干扰从不同按钮开始的任何音频。
(对于播放某人敲击“我的名字是”的音频的按钮,快速点击同一个按钮会导致“我 - 我 - 我的名字是”。但是循环应该仍然在后台播放)。
我正在使用SoundPool和OnTouchListeners。
感谢。
答案 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
。