我的应用目前使用SoundPool
来管理所有不同的声音。当用户点击按钮时,应播放声音。由于他可能会非常快速地按下按钮,因此声音应该可以在彼此之上播放
SoundPool
无法收听声音整理,也无法获得声音文件的长度。因此我正在考虑使用MediaPlayer
我对MediaPlayer
没有经验,但似乎没有那么直接设置快速播放声音的能力。不幸的是我必须检查声音播放完毕的时间,所以我必须使用MediaPlayer
重写。
你如何让MediaPlayer
能够播放很多短音?
答案 0 :(得分:0)
媒体播放器的实例一次播放一个声音。最好使用soundpool ..
尝试使用soundpool ...
1)创建一个int,不要让它为null。在onCreate方法之前的某个地方。
2)在onCreate方法中附加资源
3)最后,将逻辑应用于按钮..
int db1, db2, db3, db4, db5 = 0;
db1 = sp.load(this, R.raw.snd1, 1);
db2 = sp.load(this, R.raw.snd2, 1);
db3 = sp.load(this, R.raw.snd3, 1);
db4 = sp.load(this, R.raw.snd4, 1);
db5 = sp.load(this, R.raw.snd5, 1);
samplebutton5.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (db5 != 0)
sp.play(db5, 1, 1, 1, 0, 1);
}
});
答案 1 :(得分:0)
如果您愿意,若要使用soundpool,可以使用以下方法使用MediaPlayer首先获得声音长度:
private long getSoundDuration(int rawId)
{
MediaPlayer player = MediaPlayer.create(activity, rawId);
int duration = player.getDuration();
player.release();
return duration;
}
然后使用处理程序并编写类似:
的内容handler.postAtTime(this, SystemClock.uptimeMillis() + duration);
处理程序将等到声音完成后再执行下一个任务。