5

我正在尝试测量两部不同手机上从扬声器到麦克风的音频路径,一部运行 Android 2.3.5 的 htc Wildfire S 和一部运行 Android 4.0.3 的 htc One X。使用 Eclipse,我编写了一个使用 android.media.MediaPlayer 播放波形文件的应用程序。然而,我的录音显示,像自动增益控制之类的东西被应用于输出,因为响亮的文件被衰减,并且录音具有几乎相等的幅度,尽管播放的文件各自的幅度差异很大。

如何在输出之前关闭音频数据的任何处理?我想直接控制原始音频输出。

提前致谢。

4

3 回答 3

4

Have you tried disabling the built-in AGC and AEC audio effects? More info at http://developer.android.com/reference/android/media/audiofx/AutomaticGainControl.html

For example:

int audioSession = ...;
if(AutomaticGainControl.isAvailable())
{
    AcousticEchoCanceler agcfx = AcousticEchoCanceler.create(audioSession);
    if(agcfx != null)
    {
        agcfx.setEnabled(false);
    }
}
于 2013-10-08T19:38:32.713 回答
3

我从你提到的 Wildfire S 中猜测你不在美国,所以让我在这里推测一下......

您是否在两台设备上体验到相同的衰减和其他均衡类型的效果,或者只是一个与另一个比较?如果您在 Wildfire 上没问题,但在 One X 上遇到问题,并且您正在使用 One X 的国际版本,那么问题可能是该手机中包含的 SoC 音频。

美国版 One X/S/XL 使用 Qualcomm 的 WCD9310 DAC。国际版本的 Tegra 3 芯片组搭载了 Realtek DAC,而且听起来很糟糕。

此外,您确定 One X 上的专有 Beats Audio 均衡器已禁用并且不会影响您的衰减吗?

于 2013-10-06T00:03:48.963 回答
2

确保关闭 Beats Audio。

我正在做一个需要未经修改的音频流的项目,但 HTC 手机上的 Beats Audio 干扰了它。您必须仔细研究设置以确保其完全关闭,我相信有两个类似的设置可以控制它。您不能在代码中以编程方式禁用它,必须在手机上完成。

于 2013-10-07T15:07:55.310 回答