我一直在通過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)適用於我。 –