如何在带有安卓的 htc 手机上禁用音频输出处理



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

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

提前谢谢。

您是否尝试过禁用内置的AGC和AEC音频效果? 更多信息请访问 http://developer.android.com/reference/android/media/audiofx/AutomaticGainControl.html

例如:

int audioSession = ...;
if(AutomaticGainControl.isAvailable())
{
    AcousticEchoCanceler agcfx = AcousticEchoCanceler.create(audioSession);
    if(agcfx != null)
    {
        agcfx.setEnabled(false);
    }
}

我猜你提到的野火S你在美国之外,所以让我在这里推测一些事情......

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

One X/S/XL的美国版本使用高通的WCD9310 DAC。使用Tegra 3芯片组和Realtek DAC的国际版本,这是出了名的令人讨厌的声音。

另外,您确定One X上的专有Beats Audio均衡器被禁用并且不会对您的衰减产生任何影响吗?

确保关闭 Beats Audio。

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

最新更新