Запись аудиоданных PCM на аудиоустройство из нативного кода - PullRequest
3 голосов
/ 01 марта 2011

Можно ли записывать сэмплы PCM на аудиоустройство под Android прямо из нативного кода?Я смог воспроизвести сэмплы PCM, отправив данные в сокет и поиграв с AudioTrack.Можно ли избежать всего этого пути к аудиоустройству путем прямого доступа к нативному коду?Спасибо!

Ответы [ 2 ]

4 голосов
/ 03 мая 2011

Да, вы можете попробовать использовать ваши аудио устройства напрямую.Доступ работает через узлы виртуальных устройств Linux, помещенные в /dev/.

На моем HTC Desire это будет

/dev/msm_pcm_out

Я не знаю, как другие устройства разных производителей называют это устройство,Не гарантируется, что этот узел устройства будет иметь то же имя после перезагрузки или обновления ОС.Таким образом, у вас будет много неприятных исправлений после того, как ваше приложение будет отправлено.

ПРЕДУПРЕЖДЕНИЕ, выполнив следующие команды, вы получите бесконечно белый шум, если вы не убьете свою программу "cat" или не перезагрузите своютелефон

Команда (НА ТЕЛЕФОНЕ С ПОГРУЗКОЙ)

su

и

cat /dev/urandom > /dev/msm_pcm_out

будет издавать белый шум издинамик телефона.Поскольку cat - это C-программа, вы должны иметь возможность анализировать исходный код и адаптировать его к вашей программе.

Подвох: ваше устройство должно быть рутировано, чтобы это происходило так же, как и каждое устройство вашего приложения.должен продолжаться.

Я думаю, что способ Android - грязный, но самый портативный и удобный способ воспроизведения звуков через NDK.

0 голосов
/ 19 марта 2013

Перечитывая это, я спрашиваю себя, почему я не подумал о том, чтобы просто использовать AudioTrack из собственного кода с использованием JNI ... Это должно быть лучшим решением.

...