我一直在通过adb外壳在Android设备上运行的本机linux程序中捕获音频。因为我似乎只得到(非常安静)的噪音,即没有实际的信号(有趣的是,一个类似的Android/Java程序没有显示有输入信号),我执行了alsa_amixer,它有一个条目看起来像是正确的:ALSA - 取消静音设备?
Simple mixer control 'Capture',0
Capabilities: cvolume cswitch penum
Capture channels: Front Left - Front Right
Limits: Capture 0 - 63
Front Left: Capture 31 [49%] [0.00dB] [off]
Front Right: Capture 31 [49%] [0.00dB] [off]
“off”。这将解释噪音。 因此,我查找了如何使用alsa_amixer取消静音通道的示例,我发现了诸如“49%上”或“49%取消静音”等参数的不同建议,或者只是“取消静音”,其中任何一个都不起作用。 (如果音量%被省略,则表示“无效的命令!”,否则,音量被设置,但开启/取消静音被忽略)
我还搜索了如何以编程方式做到这一点需要做,虽然手动方法现在会有所帮助),但在那里并不算太幸运。 我发现这听起来像这样的唯一的ALSA lib命令是“snd_mixer_selem_set_capture_switch_all”,但文档没有一天参数(1/0不打开/关闭,我试过;))
这都适用于普通的Linux。也许Android有一个残缺的alsa构建。 –
... set_capture_switch_all? 我把它叫做“Capture”,其值为1. 程序崩溃了,我把它作为控制台输出: ALSA lib external/alsa-lib/src/conf.c:4487:(parse_args)未知参数1,ALSA lib external/alsa-lib/src/conf.c:4620:(snd_config_expand)解析参数错误:无此文件或目录, ALSA lib external/alsa-lib/src/control/control.c:902(snd_ctl_open_noupdate ) CTL hw无效:0,0 – user1847129
[This here program](http://pastebin.com/index/9HZFC9dJ)适用于我。 –