web-dev-qa-db-ja.com

オーディオケーブルが接続されているかどうかを検出するにはどうすればよいですか?

Ubuntu Lucid(10.04)を使用しています。ルートとして実行されているシェルスクリプトで、オーディオケーブル(アナログジャック)がラップトップに接続されているかどうかを検出したいと思います。それ、どうやったら出来るの?ポータブルソリューションは必要ありません。どんなにハッキーでも、ラップトップで機能するものが必要です。

5
pts

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はカードを指定します。デフォルトの場合、または1つだけの場合は不要です。次に、例:

$ 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台の古いHDDを探しました。いくつかのジャックポートをデバッグするために使用しました。そうです、特定のポートのステータスをポーリングすることは間違いなく可能です。

ジャックは [〜#〜] jack [〜#〜] のためにウェブを検索するのが面倒です。それはそれをほぼ不可能にします。


サウンドカード情報のポーリングを行うCコードがいくつかあります。私がそれを見つけることができるかどうか見なければなりません。

10
Runium

「どんなにハッキーでも」と言ったので。 。 。

USB経由でラップトップに接続できる外部サウンドカードを入手してください。それにアナログジャックを差し込みます。オーディオジャックを接続する場合は外部サウンドカードを接続し、bashスクリプトで外部サウンドカードがUSB経由で接続されているかどうかを検出します。

0
user38810