如何检测音频线是否连接?

如何检测音频线是否连接?

我正在使用 Ubuntu Lucid (10.04)。在以 root 身份运行的 shell 脚本中,我想检测音频线(模拟插孔)是否连接到笔记本电脑。我怎么做?我不需要便携式解决方案,我需要一些可以在我的笔记本电脑上运行的东西,无论多么老套。

答案1

一种方法可能是使用amixer.

杰克已插入:

$ amixer -c 0 contents
numid=29,iface=CARD,name='Front Headphone Jack'
  ; type=BOOLEAN,access=r-------,values=1
  : values=on
...

插孔未插入:

$ amixer -c 0 contents
numid=29,iface=CARD,name='Front Headphone Jack'
  ; type=BOOLEAN,access=r-------,values=1
  : values=off
...

因此,对于特定的一个,我可以这样做:

amixer -c 0 contents | \
awk -F"," '
$1 == "numid=29" {
    c=1
} c && /: values/ {
   split($0, a, "=")
   print a[2];
   exit
}'

给出on或的输出off


还可以使用命令并通过iface+name等指定,例如:

获取列表方式:

$ amixer -c 0 controls

其中-c 0指定卡,如果默认或只有一张则不需要。然后例如:

$ amixer -c 0 cget numid=29,iface=CARD

$ amixer -c 0 cget numid=29,iface=CARD | awk -F"=" 'NR == 3 {print $2;}'

我曾经遇到过一个软件,相信它使用了 Tcl/Tk,它显示了计算机上所有端口的引脚功率以及许多其他硬件信息。这是一个很好的软件——但我再也找不到它了。我检查了 12 个旧硬盘,但没有成功。我用它来调试一些插孔端口。所以是的,绝对可以轮询特定端口的状态。

杰克很难在网上搜索,因为杰克。这使得这几乎是不可能的。


我有一些 C 代码可以执行一些声卡信息轮询。得看看我是否能找到它。

答案2

既然你说“无论多么hacky”。 。 。

获取一个可以通过 USB 连接到笔记本电脑的外部声卡。将模拟插孔插入其中。当您想要连接音频插孔时,请插入外部声卡,并让 bash 脚本检测外部声卡是否通过 USB 连接。

相关内容