Значение AudioSource для USB-микрофона на Android

Приложение для захвата звука на корневом MK809 / Android 4.1.1. Нет внутреннего микрофона, поэтому я пытаюсь использовать USB-накопитель, который правильно распознается как «USB-аудиоустройство» в меню « Настройки» / «Звуковые / звуковые устройства» / «Звуковые устройства ввода» при подключении.

Какое значение AudioSource этого устройства передается в конструктор AudioRecord (первый аргумент). Я пробовал все в MediaRecorder.AudioSource, никто не работал. Меня интересует только чтение буфера захвата, а не сохранение в файл.

Отвечая на мой вопрос. Были выполнены следующие значения: DEFAULT, MIC, CAMCORDER, возможно, и другие, так как это единственное устройство ввода.

Я пытался использовать частоту дискретизации 48000 (работает в Windows), а создание AudioRecord не удалось:

ERROR / AudioRecord (1615): не удалось получить аудиовход для источника записи 1 ERROR / AudioRecord-JNI (1615): ошибка при создании экземпляра AudioRecord: проверка инициализации завершилась неудачно. ERROR / AudioRecord-Java (1615): [android.media.AudioRecord] Код ошибки -20 при инициализации собственного объекта AudioRecord.

В некоторой степени вводящей в заблуждение информации, учитывая, что вызов getMinBufferSize () с тем же набором agruments не возвращает ошибку, как предполагается. Я предположил, что это действительная частота дискретизации для устройства. Исправлена ​​проблема с настройкой 4400 (guranteed).

Устройства USB-аудиовхода работают, по крайней мере, на Android, Jelly Bean. Надеюсь, это поможет кому-то.

FWIW, это специфичная реализация (она может различаться между различными поставщиками платформ и OEM-производителями).

На устройствах, на которых я работал, микрофон USB-аксессуаров выбирается, если AudioSource имеет значение DEFAULT , MIC или VOICE_RECOGNITION , и только частоты дискретизации, поддерживаемые в аудио HAL для записи звука USB, были 8, 16 и 48 кГц (хотя AudioFlinger может перепрограммировать другие тарифы в определенном диапазоне).