2014-12-02 5 views
0

Я пытаюсь получить данные pcm по классу AudioRecord, источник звука с гарнитуры, он связал устройство, устройство отправит какую-нибудь волну в мое приложение (надеюсь, вы поймете, что я говорю). волна], изображение на http://i.stack.imgur.com/5iZnY.pngкак получить данные pcm андроида?

мы видим изображение, волну 1 и волну 2, я могу получить правильный результат, потому что я могу рассчитать точку одного цикла, но используя sony xl36h, я получил волну не близость реальную волна, устройство на самом деле посылает сигнал близость к волне 1. мой вопрос, что вызвало это явление, как получить волну близости, такую ​​как wave1? я думаю, что, может быть, Sony оптимизирует нижний уровень звука, если это так, я должен использовать NDK, чтобы этого избежать?

+0

Я не думаю, что это имело бы значение, если вы используете NDK. Если Sony применяет сильную фильтрацию, она, скорее всего, будет находиться на уровне платформы, что выходит за рамки вашего контроля. – Michael

ответ

0

Должен ли я использовать NDK, чтобы этого избежать?

Нет, вы получите те же результаты с NDK.

AudioRecord предоставляет уже доступ к необработанным данным PCM. Разница между устройствами происходит потому, что они используют разные аудиомодули. Модули имеют различные аппаратные функции (фильтры нижних частот/чувствительность), и вы не можете отключить их через программное обеспечение. Причина этого в том, что эти функции уменьшают шум.