Framework中按键音是通过SoundPool以DTMF形式播放的,但在机器上按键音比较小,所以改成了STREAM_ALARM,但修改之后,按键音确实变大了,当应用通过SoundPool播放提示音时,两者同时播放造成声音错误,目前怀疑是两个声音比较大,波形混乱造成扬声器不能正常播放。
这样的冲突如何解决,有了解的吗?
Framework中按键音是通过SoundPool以DTMF形式播放的,但在机器上按键音比较小,所以改成了STREAM_ALARM,但修改之后,按键音确实变大了,当应用通过SoundPool播放提示音时,两者同时播放造成声音错误,目前怀疑是两个声音比较大,波形混乱造成扬声器不能正常播放。
这样的冲突如何解决,有了解的吗?
以下回答参考 皆我百晓生、券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。
这个问题可以通过在SoundPool中添加一个参数来解决。这个参数可以设置为0,使得应用程序的声音不会与其他正在播放的应用程序的声音一起播放。以下是一个示例:
int soundPool = SoundPool.Builder()
.setAudioRoundingMode(AudioRoundingMode.CUBIC)
.build();
// 设置键入音量为0
soundPool.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(OnPreparedEvent event) {
// 在这里调用你的方法来处理按键音
}
});
soundPool.setStreamVolume(R.raw.button, 0, AudioManager.STREAM_SYSTEM);
在这个例子中,我们首先创建了一个SoundPool对象,并设置了音频圆角模式为Cubic。然后,我们在onPrepared事件中设置了按键音的音量为0,这样就不会和其他应用程序的声音一起播放了。