До сих пор мы рассматривали запись аудиоконтента прямо в файл. Но что если необходимо предпринять некоторую обработку аудиоданных перед помещением их в файл? Или, скажем, вообще не помещать их в файл? Именно для этого случая в Android предусмотрен класс по имени AudioRecord. После настройки объекта AudioRecord среда Android обеспечит запись аудиоданных в свой внутренний буфер, с которым затем приложение может делать все, что угодно. В код активности для чтения и обработки аудио с использованием AudioRecord. У этой активности нет пользовательского интерфейса — мы просто записываем журнальные сообщения в LogCat. Содержимое файла AndroidManifest.xml не, но в него понадобится добавить право доступа android.permission.RECORD_AUDIO.
множества опций, определенных в MediaRecorder.AudioSource. Но здесь следует предупредить: не все устройства реализуют VOICE_CALL, поскольку это действует как два источника вместо одного. Что касается частоты выборки, то для нее должно быть выбрано одно из стандартных значений, таких как,,, или Гц. Конфигурация канала должна быть выбрана из нескольких значений CHANNEL, описанных в AudioFormat. Форматом кодирования будет либо ENCVODING_PCM_BIT, либо ENCVODING_PCM_BIT. Обратите внимание, что ваш выбор здесь повлияет на вид получаемых низкоуровневых аудиоданных. Если вам не нужна точность в бит, ограничьтесь битами; в этом случае будет использовано меньше памяти, и все будет работать быстрее. В документации указано, что только частота Гц гарантированно работает на всех устройствах, но, тем не менее, эмулятор поддерживает лишь комбинацию Гц, CHANNEL_IN_MONO и ENCODING_PCM_BIT.
Класс AudioRecord имеет статический вспомогательный метод по имени getMinBufferSize , принимающий желаемый набор параметров и возвращающий буфер минимального размера, который должен быть указан для правильной инициализации экземпляра AudioRecord. Этот буфер не доступен напрямую, но AudioRecord нуждается в достаточном внутреннем пространстве для хранения аудиоконтента на период обработки данных, извлеченных ранее. Можно работать с минимальным размером буфера или немного увеличить его. Определенно не следует пытаться указать размер буфера меньше, http://meh55.ru/shuba-iz-lici-chernoburki.html чем рекомендовано этим вспомогательным методом. В рассматриваемом примере размер буфера выбран вдвое больше минимального. Если ваши параметры окажутся неприемлемыми для AudioRecord, возникнет исключение IllegalArgumentException. Так, например, если вы попытаетесь установить значение частоты, не поддерживаемое данным устройством, то получите это исключение. К сожалению, нет удобного метода для получения списка поддерживаемых значений частоты, так что вам придется попробовать желаемую частоту, и если будет сгенерировано исключение, пробовать другую, до тех пор, пока вы не найдете работающее значение.
И последняя проверка внутри метода инициализации нужна для того, чтобы удостовериться, что экземпляр AudioRecord правильно инициализирован. После этого все готово к чтению аудиофрагменто.
Опубликовал Kest
February 14 2015 13:32:36 ·
0 Комментариев ·
4001 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.