首页 > 解决方案 > Android:将效果附加到 SoundPool 声音?

问题描述

我有一个 Android 应用程序,它使用 android.media.SoundPool 为用户播放音频提示。它按预期工作,但我希望能够为播放添加效果(通过 android.media.audiofx.AudioEffect 子类)。

我了解音频效果如何在(例如)MediaPlayer 上工作,但我不知道如何将它们与 SoundPool 一起使用。特别是,我不确定会话 ID 使用什么。(我碰巧在使用 Xamarin Android,因为......原因。所以我的例子看起来很奇怪——但我很高兴适应原生 Java 或 Kotlin 的答案!)

int session = ???; // What goes here?
var fx = new LoudnessEnhancer(session);
fx.SetTargetGain(2400);
fx.SetEnabled(true);
Pool.Play(soundID, 1.0F, 1.0F, 1, 0, 1.00F);

我尝试使用会话 ID 0,但是(在运行 Android 7.1.1 的 WT6000 上)它在 LoudnessEnhancer ctor 中崩溃:

Java.Lang.RuntimeException: Cannot initialize effect engine for type: fe3199be-aed0-413f-87bb-11260eb63cf1 Error: -3

(无论如何,我的理解是不推荐将效果应用于会话 ID 零)。

标签: androidaudiosoundpoolaudio-playeraudioeffect

解决方案


推荐阅读