每当用户触摸磁贴时,我的应用程序都会发出一声短促的哔声。听起来很完美。但是,如果用户拖动手指,它会快速连续播放多次哔哔声,这很有效,但也会产生噼啪声、静态的噪音。我正在努力摆脱裂纹。
我尝试了很多没有用的东西:
- 将 SoundPool 最大流增加到 8 或 16 - 无效
- 增加 sndPriority 以便每次调用 play() 使用比最后一个更高的优先级 - 无效
- 在前一个声音上调用 sp.stop(sndPlaying) - 这实际上使噼啪声更糟
- 在具有不同 Android OS 版本的两台不同设备上进行测试,相同的裂纹
- 我已经修改了 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);
}