如何在Android平台上使用USB Audio设备

来源:互联网 发布:java.util.scanner错误 编辑:程序博客网 时间:2024/06/05 08:51

上网搜了有关USB Audio Hotplug的东西,比较适用的资源如下:

1、Hotplugging USB audio devices (Howto)

题目看起来很吻合我们的问题,事实上并没有多少参考价值。其中脚本/etc/hotplug/usb/extigy或许可以捕捉到USB Audio设备的热插拔事件,应该可以进一步验证和利用,留意这点。

 

2、Example to map USB Ports to ALSA card numbers and add each sound card to a combined, single interface device

这是利用udev来获取USB热插拔事件,虽然Android没有udev,但例子程序对热插拔事件字符串的处理值得参考。

 

3、USB mic on Linux

其实我们工作的第一步:验证USB Headset是否可以回放录音。

3.1、插上USB Headset,可以看到alsa的确加载了USB Audio,如下:

 

  1. ~ # cat /proc/asound/cards  
  2.  0 [WMTSOC         ]: HWDAC - WMT_SOC  
  3.                       WMT_SOC (HWDAC)  
  4.  1 [default        ]: USB-Audio - C-Media USB Headphone Set    
  5.                       C-Media USB Headphone Set   at usb-0000:00:06.0-1, full speed  

 

3.2、参考了这个链接,写了如下的配置文件/etc/asond.conf:

 

  1. pcm.!default {  
  2.          type asym  
  3.          playback.pcm {  
  4.                  type plug  
  5.                  slave.pcm "hw:1,0"  
  6.          }  
  7.          capture.pcm {  
  8.                  type plug  
  9.                  slave.pcm "hw:1,0"  
  10.          }   
  11. }  

 

重启后,声音就从Headset出来了。

 

hw:1,0对应card1即USB-Audio - C-Media USB Headphone Set

1.设置默认声卡为USB声卡

$HOME下新建.asoundrc$cd $HOME$nano .asoundrc输入以下内容defaults.ctl.card 1defaults.pcm.card 1最后的1是USB声卡的编号,可通过以下命令查看$aplay -l$cat /proc/asound/cards然后重启一下alsa就把1号声卡(usb声卡)设置成默认声卡了。测试录音$arecord -d 10 test.wav测试播音$aplay test.wav

2.播音和录音为不同声卡时,可以参考以下配置,修改~/.asoundrc

pcm.!default {    type asym    playback.pcm {        type plug        slave.pcm "hw:0,0"    }    capture.pcm {        type plug        slave.pcm "hw:1,0"}其中,hw:1,0表示card 1 device 0

3.调节声卡音量

打开终端,输入$alsamixer即可调节音量按 f6 会出现声卡列表一般来说,usb 声卡总是第二位的,声卡编号是1(默认声卡是0)

4.测试指定声卡

arecord -D "plughw:5,0" -d 3 temp.wavaplay -D "plughw:1,0" temp.wav

原创粉丝点击