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

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

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

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

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

~ # cat /proc/asound/cards

0 [WMTSOC         ]: HWDAC - WMT_SOC

WMT_SOC (HWDAC)

1 [default        ]: USB-Audio - C-Media USB Headphone Set

C-Media USB Headphone Set   at usb-0000:00:06.0-1, full speed

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

pcm.!default {

type asym

playback.pcm {

type plug

slave.pcm "hw:1,0"

}

capture.pcm {

type plug

slave.pcm "hw:1,0"

}

}

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

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

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

在$HOME下新建.asoundrc

$cd $HOME

$nano .asoundrc

输入以下内容

defaults.ctl.card 1

defaults.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.wav

aplay -D "plughw:1,0" temp.wav

Android用usb命令控制音量,如何在Android平台上使用USB Audio设备相关推荐

  1. android 通过adb命令控制wifi开关

    android 通过adb命令控制wifi开关 2017年08月23日 17:47:46 刘国栋 阅读数:14598 版权声明:本文为博主原创文章,转载请声明文章出处. https://blog.cs ...

  2. android机上没有usb调试模式吗,如何在Android上启用USB调试

    Android系统的手机以及平板电脑占有巨大的市场份额,当使用USB数据线完成电脑端与安卓手机端数据传输时,需要将安卓手机开启USB调试模式. 什么是USB调试?USB调试是一种模式,允许Androi ...

  3. android studio shell 命令行自动打包(mac 平台)

    android studio shell 命令行自动打包(mac 平台) 作者 CrazySongHang 关注 2015.04.10 22:56* 字数 494 阅读 4165评论 1喜欢 2 如果 ...

  4. linux arm 汇编学习,如何在LINUX平台上学习GNU ARM汇编

    本例说明如何在LINUX平台上学习GNU ARM汇编. 1.软件环境 vmware 5.0 + redhat 9.0 + skyeye 1.2.4 + arm-elf 工具 2. 源文件 a.s -- ...

  5. 如何在android模拟器中模拟sd卡,如何在Android模拟器中模拟SD卡

    如何在Android模拟器中模拟SD卡 简介 Android允许开发者创建一个SD卡镜像并在启动模拟器加载它, 用于模拟物理设备中的SD卡. 下面将介绍: 1. 如何创建一个SD卡镜像? 2. 如何拷 ...

  6. android+模拟器方向,关于仿真:如何在Android模拟器中更改屏幕方向?

    如何将仿真器屏幕方向更改为横向或纵向? stackoverflow.com/questions/2618967/&hellip: 在Windows7上左Ctrl+F11 在Windows8.1 ...

  7. android 最新sdk版本,详解如何在Android studio中更新sdk版本和build-tools版本

    一.首先看下Android开发用到的sdk目录: build-tools 保存着一些Android平台相关通用工具,比如adb.和aapt.aidl.dx等文件. aapt即Android Asset ...

  8. android点击下拉历史记录,如何在Android上删除浏览历史记录-万兴恢复专家

    第4部分:如何在Android上永久清除历史记录? 只需删除数据或使用恢复出厂设置无法永久擦除Android.在恢复过程的帮助下,数据很容易恢复,Avast已经证明了这一点.dr.fone工具包 - ...

  9. Android多个imei如何获取,如何在Android 10中获取IMEI号,这是获取在Android 10及以下Android 10中获取IMEI号的代码...

    如何在android 10中获取imei编号,这是获取在android 10及以下android 10中获取imei编号的代码. if (android.os.Build.VERSION.SDK_IN ...

最新文章

  1. 中国人工智能学会通讯——人工智能在各医学亚专科的发展现状及趋势 1.3 人工智能在各医学亚专科的发展态势...
  2. DX11 preprocessor Dynamic shader linkage
  3. Prometheus监控业务指标
  4. CES2018:英特尔披露量子计算和神经拟态计算研究最新进展
  5. Learning to Rank 中Listwise关于ListNet算法讲授及实现
  6. Uva536 Tree Recovery二叉树重建(先序和中序确定二叉树,后序输出)
  7. 数据结构和算法,也就那么回事儿
  8. 静态组件_静态网站的出色附加组件,可让您跳舞
  9. win10的11对战平台突然无法启动魔兽
  10. 【java笔记】Properties类
  11. vue怎么使用eval_javascript - 在方法内部的Vue2中使用eval()可以工作,但不能同时工作 - 堆栈内存溢出...
  12. 简述hdfs工作原理_简述HDFS的原理?
  13. Android 将自己的应用改为系统应用
  14. 西门子plc与ABB510变频器modbus通讯
  15. 如何免费下载知网论文
  16. Gossip协议笔记--谣言、流行病协议
  17. MySql 新增数据
  18. html中input type什么意思,HTML中type是什么意思
  19. web自动化(鼠标、键盘操作)
  20. 交大博士血泪自述:不是读博的料,别上博士这条船

热门文章

  1. 训练日志13 (8.7)
  2. 一级市场二级化:区块链正在颠覆风险投资
  3. 联想笔记本计算机在哪里,联想笔记本电脑的麦克风在什么位置
  4. hpm128无法共享打印_HP M128fn打印机共享后无法打印
  5. 2017年 第8届 蓝桥杯 Java B组 省赛真题详解及总结
  6. Cloudera Manager安装之Cloudera Manager安装前准备(CentOS6.5)(一)
  7. android培训学习班,常州android培训学习班
  8. 刘润:思考维度越多,理解商业越深
  9. 5G纯干货|毫米波概述与优缺点
  10. Unity 代码实现形成圆形及形成球形