同时播放多个 SoundPool
Posted
技术标签:
【中文标题】同时播放多个 SoundPool【英文标题】:Playing multiple SoundPool at the same time 【发布时间】:2016-12-13 17:43:01 【问题描述】:我有一个活动,我正在使用 12 个不同声音的按钮。如果用户同时单击两个按钮,则应同时播放按钮。
当我使用MediaPlayer
时,我无法做到这一点,然后我了解了SoundPool
,一切都很好。但是有 12 种不同的声音,我不得不写这么多行,我不认为那是这样做的正确方法。
这是正确的方法吗,当我写这个 12 声音时,它变得很长?
SoundPool sp1,sp2,sp3;
int id1,id2,id3;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.piano);
sp1 = new SoundPool(1, AudioManager.STREAM_MUSIC,1);
sp2 = new SoundPool(1, AudioManager.STREAM_MUSIC,1);
sp3 = new SoundPool(1, AudioManager.STREAM_MUSIC,1);
id1 = sp1.load(this,R.raw.p1,1);
id2 = sp2.load(this,R.raw.p2,1);
id3 = sp3.load(this,R.raw.p3,1);
public void p1Click(View v)
sp1.play(id1,1,1,1,0,1);
public void p2Click(View v)
sp2.play(id1,1,1,1,0,1);
public void p3Click(View v)
sp3.play(id1,1,1,1,0,1);
【问题讨论】:
【参考方案1】:您只需要一个SoundPool
(sp1
):
sp1 = new SoundPool(12, AudioManager.STREAM_MUSIC,1);
id1 = sp1.load(this,R.raw.p1,1);
id2 = sp1.load(this,R.raw.p2,1);
...
sp1.play(id1,1,1,1,0,1);
sp1.play(id2,1,1,1,0,1);
...
(1) 注意 12 表示您可以同时播放 12 种声音。
(2) 注意跟踪你的活动声音,以后会有用。 (sp1.play
返回一个整数):
int streamID = sp1.play(id1,1,1,1,0,1);
【讨论】:
以上是关于同时播放多个 SoundPool的主要内容,如果未能解决你的问题,请参考以下文章