gpt4 book ai didi

android - 使用 SoundPool 播放多个声音时如何消除噼啪声

转载 作者:行者123 更新时间:2023-11-29 00:26:16 26 4
gpt4 key购买 nike

每当用户触摸图 block 时,我的应用程序都会发出一声短促的蜂鸣声。听起来很完美。然而,如果用户拖动他们的手指,它会快速连续播放多次哔哔声,这虽然有效,但也会发出噼啪声,静态噪音。我正在努力摆脱爆裂声。

我已经尝试了很多没有的方法:

  • 将 SoundPool 最大流增加到 8 或 16 - 没有效果
  • 递增 sndPriority 以便每次调用 play() 使用比上一次更高的优先级 - 没有效果
  • 在之前的声音上调用 sp.stop(sndPlaying) - 这实际上会使爆音变得更糟
  • 在安装了不同 Android 操作系统版本的两台不同设备上进行了测试,出现相同的爆裂声
  • 我已经在 Audacity 中修改了声音文件,我有理由相信爆裂声不是声音文件的问题

代码:

public void setup() {
sp = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
sndBeep = sp.load(panel.act.getApplicationContext(), R.raw.beep, 1);
}
public void play() {
// sp.stop(sndPlaying); -- this actually makes the crackling noise worse
// sndPriority++; -- this had no effect
sndPlaying = sp.play(sndBeep, 1.0f, 1.0f, sndPriority, 0, sndFreq);
}

最佳答案

噪音是由于上一次和下一次哔声之间的短暂停顿造成的。所以,实际上你应该降低每次调用的优先级。

这应该会结束最后一次蜂鸣声,然后才开始发出新的蜂鸣声。

仍有机会获得一些噪音。只要声音在开始或结束时包含 - 即使是很小的 - 噪音。

关于android - 使用 SoundPool 播放多个声音时如何消除噼啪声,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19202230/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com