Как отключить обработку аудио выхода на htc телефоне с Android
Я пытаюсь измерить путь прохождения звука от динамика к микрофону на двух разных телефонах: HTC Wildfire S под управлением Android 2.3.5 и HTC One X под управлением Android 4.0.3. Используя Eclipse, я кодировал приложение, которое воспроизводит волновые файлы, используя android.media.MediaPlayer. Однако мои записи показывают, что к выходу применяется нечто вроде автоматической регулировки усиления, поскольку громкие файлы ослабляются, и записи имеют почти равные амплитуды, хотя воспроизводимые файлы сильно различаются по своим соответствующим амплитудам.
Как я могу отключить любую обработку аудиоданных перед выводом? Я хотел бы получить прямой контроль над необработанным звуком.
Заранее спасибо.
3 ответа
Вы пытались отключить встроенные звуковые эффекты 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);
}
}
Я предполагаю, что из вашего упоминания о Wildfire S вы находитесь за пределами США, поэтому позвольте мне кое-что порассуждать здесь...
Испытываете ли вы одинаковое затухание и другие эффекты эквалайзера на обоих устройствах или только одно по сравнению с другим? Если у вас все в порядке с Wildfire, но у вас возникли проблемы с One X, и вы используете международную версию One X, проблема может заключаться в звуке SoC, включенном в эту трубку.
В выпуске One X/S/XL для США используется ЦАП WCD9310 от Qualcomm. Международный релиз с набором микросхем Tegra 3 с ЦАП Realtek на борту, и он, как известно, плохо звучит.
Кроме того, вы уверены, что проприетарные эквалайзеры Beats Audio на One X отключены и никак не влияют на ваше затухание?
Убедитесь, что вы отключили Beats Audio.
Я работал над проектом, который требовал неизмененного аудиопотока, но Beats Audio на телефонах HTC мешала ему. Вы должны покопаться в настройках, чтобы убедиться, что он полностью выключен, я думаю, что есть две аналогичные настройки, управляющие им. Вы не можете программно отключить это в своем коде, это должно быть сделано на телефоне.