Android上USB麦克风的AudioSource值

时间:2013-01-12 01:07:11

标签: android audio usb

根植的MK809 / Android 4.1.1上的音频捕获应用程序。没有内置麦克风,因此我尝试使用USB连接时在设置/声音/声音设备管理器/声音输入设备中正确检测为“USB音频设备”。

该设备的AudioSource值是什么传递给AudioRecord构造函数(第一个参数)。我在MediaRecorder.AudioSource中尝试了每一个,没有一个工作。我只对读取捕获缓冲区感兴趣,而不是保存到文件中。

2 个答案:

答案 0 :(得分:5)

回答我自己的问题。以下值确实有效:DEFAULT,MIC,CAMCORDER,也可能是其他值,因为它是唯一的输入设备。

我试图使用48000的采样率(适用于Windows)并且AudioRecord创建失败:

ERROR / AudioRecord(1615):无法获取记录源1的音频输入 ERROR / AudioRecord-JNI(1615):创建AudioRecord实例时出错:初始化检查失败。 ERROR / AudioRecord-Java(1615):[android.media.AudioRecord]初始化本机AudioRecord对象时的错误代码-20。

考虑到使用相同的一组agruments调用getMinBufferSize()并没有像预期的那样返回错误,有些误导性的信息。我认为这是设备的有效采样率。将其设置为44100(保证)解决了问题。

USB音频输入设备至少可以在Android,Jelly Bean上运行。希望这有助于某人。

答案 1 :(得分:5)

FWIW,这是特定于实现的(不同平台供应商和OEM之间可能会有所不同)。

在我使用的设备上,如果AudioSource为DEFAULTMICVOICE_RECOGNITION,则会选择USB配件的麦克风,并且音频支持唯一的采样率USB录音的HAL分别为8,16和48 kHz(尽管AudioFlinger能够重新采样到一定范围内的其他速率)。