2009-05-14 8 views
11

ヘッドフォンがコンピュータに接続されているときにプログラムで判断する方法はありますか?ヘッドホンが差し込まれたときの検出

本質的に、ヘッドホンが差し込まれていない限り、私のサウンドをミュートする簡単なツールを書いています。これも可能ですか?

+1

スピーカーを取り外す!笑...(はい、これは冗談です) – bsneeze

+0

さらに詳しい情報はありますか? OS、サウンドカードモデルなど? –

+0

Dell XPSラップトップの場合(特に他の人がいるかどうかはわかりませんが)、「PC Spkミュート」では「サウンド/オーディオ」コントロールパネルのオプションがあります。ヘッドホンで音が聞こえます。 – mundeep

答えて

12

Windows Vista以降では、デバイスの到着通知と削除通知を使用してエンドポイントのformfactorを取得して、オーディオソリューションの製造元が特定のエンドポイントを「ヘッドフォン」と見なすかどうかを判断できます。

Vistaの前には、この情報を特定する方法がありませんでした。

1

それは可能かもしれない - のRealTekは、あなたがマイクジャックに何かを接続するたびに、あなたのオーディオを調整するための迷惑役立つユーティリティをポップアップするシステムトレイのユーティリティを持っている、多分ヘッドフォンジャックも同様です。

+1

私たちはRealTekボードを搭載したコンピュータを手に入れました。奇妙なのは、アプリはプラグインされたものを聞かなければならないということです。つまり、 "私はちょうど[[]マイク[]ヘッドフォンを接続しました。"というように、あなたは何かを接続していることを知っています。あなたはヘッドホンをヘッドホンジャックに、マイクをマイクジャックに接続するのをユーザーが信頼すると思うでしょうか? –

+0

私は覚えているように、ソケットを検出します。ではない? –

1

あなたのサウンドカードがそれをサポートしていない限り、疑わしいです。

サウンドカードの中には、ヘッドフォンが接続されたときを検出するためのマイクロスイッチが内蔵されているか、回路が閉じられたときに信号のインピーダンスを測定するものがあると考えられます。私は安いサウンドカードでそれを見ていない。

マイクで共有されているジャック(ヘッドセットなど)を使用している場合は、マイクチャンネルの「ポップ」を検出できる可能性がありますが、それでもかなり信頼できない危険性があります。プラグインされているのか削除されているのかはわかりませんが、変更が行われただけです。

個人的には、私はいつも音をミュートし、本当に音が欲しいときにオンにするだけです。

2

あなたは普遍的な解決策を提供できないと思います。

私はまた、髄の溶液を指摘します。ほとんどのRealtekサウンドカード、特にIntelのメインボード上のrealtekにはこの機能があります。しかしその場合、ハードウェアは「標準」ではありません。言い換えれば、それらのサウンドカードには、出力ソケットのノード上での抵抗の変化を検出する特別なメカニズムが必要です。「イベントを発生させる」

この種のサウンドカード+完全な解決策ではありません。単にconfigureプログラムを呼び出すルーチンを変更してください。 (ミュート/ミュート解除するプログラム)。次に、新しいユーティリティを使用してコンフィグラープログラム(プロセスエクスプローラーを使用して見つけることができます)を置き換えます。

N.B私たちがプラグインを識別できるかどうかはっきりとわかりません。

7

多くのオーディオコーデックは「ジャック検出」を提供します。これはおそらくあなたがGoogleに必要な用語です。

Vistaでは、IMMDeviceEnumerator :: GetDefaultAudioEndpoint()とIMMDevice :: GetState()を使用して、「エンドポイント」の状態を確認できます。 'IKsJackDescription Interface'もあります。

XPの場合、試してみると'waveInGetNumDevs' - ヘッドフォンが接続されるまで、ドライバは0を報告する場合があります。詳細はthis discussionのコメントを参照してください。

関連する問題