代码之家  ›  专栏  ›  技术社区  ›  HS.

耳机插入时检测

  •  13
  • HS.  · 技术社区  · 17 年前

    有没有什么方法可以通过编程确定耳机何时插入电脑?

    基本上,我只想写一个简单的工具,将静音我的声音,除非耳机插入。这是可能的吗?

    5 回复  |  直到 17 年前
        1
  •  12
  •   Larry Osterman    17 年前

    在Windows Vista及更高版本中,您可以使用设备到达和删除通知,并检索Endpoint FormFactor以确定音频解决方案的制造商是否将特定端点视为“耳机”。

    在Vista之前,没有办法确定这些信息。

        2
  •  8
  •   GEOCHET S.Lott    17 年前

    许多音频编解码器提供“杰克检测”,这可能是谷歌需要的术语。

    在vista下,您可以使用immDeviceEnumerator::GetDefaultAudioEndpoint()和immDevice::GetState()检查“端点”的状态。还有 'IKsJackDescription Interface' .

    在XP下你可以尝试 'waveInGetNumDevs' -在插入耳机之前,驾驶员可能会报告0。查看中的注释 this discussion 更多信息。

        3
  •  2
  •   Chathuranga Chandrasekara    17 年前

    我认为你不能提供一个通用的解决方案。

    我还指出了nray的解决方案。大多数Realtek声卡,特别是Intel主板上的Realtek都具有此功能。但在这种情况下,硬件不是“标准”的。换句话说,在这些声卡中,应该有特殊的机制来检测输出插座节点上的电阻变化,并“触发事件”。

    如果你有这样的声卡+你只需要一个工作,但不是完美的解决方案,只需修改调用配置程序的例程。(静音/取消静音程序)。然后用新的实用程序替换配置程序(您可以使用ProcessExplorer找到它)。

    注意:我不能百分之百地确定我们是否能清楚地识别插件——即插即用。

        4
  •  1
  •   nray    17 年前

    可能-Realtek有一个弹出的系统托盘实用程序 恼人的 这是一个有用的工具,当你连接到麦克风插孔时,可以调整你的音频,也许耳机插孔是类似的。

        5
  •  1
  •   Chris Arguin    17 年前

    除非你的声卡提供支持,这是值得怀疑的。

    可以想象,有些声卡中有一个微型开关,可以检测耳机是什么时候插上的,或者他们可以测量信号的阻抗,以知道电路何时闭合。我没有在任何廉价的声卡上看到过。

    现在,如果你有一个与麦克风共享的插孔(例如耳机),你可能能够检测到麦克风频道上的“砰”声,但我敢说这仍然是非常不可靠的。你不会知道它是被插入还是被移除,只是发生了变化。

    就我个人而言,我只是把声音一直静音,只有在我真正想要声音的时候才打开它。