【问题标题】:Detect headphones in Windows [duplicate]在 Windows 中检测耳机 [重复]
【发布时间】:2011-07-28 11:21:38
【问题描述】:

我正在尝试检测耳机是否已插入 Windows。我已经尝试过 DirectSound 和 NAudio 库,但没有任何成功。有人有什么建议吗?

注意:此问题与 this question 重复,但该问题的答案不包含任何代码示例或教程。

【问题讨论】:

  • 这个问题的重复:stackoverflow.com/questions/861601/… 这个问题没有针对 Windows 进行标记,但 Larry Osterman 是一名微软软件工程师,他在音频子系统方面工作了多年,所以他知道自己在说什么。他没有参考任何关于如何做到这一点的示例或教程,所以我仍然有兴趣看看是否有人在回答这个问题时挖掘了任何东西。
  • 请原谅我对您的问题的编辑,但我想确保它不会因为重复而关闭。
  • 您是要检测插入声卡线路输出插孔的模拟耳机还是 USB 耳机?这将严重影响我的回答。
  • @selbie:只有模拟......但我想我找到了答案......

标签: c# windows directsound naudio headphones


【解决方案1】:

所以...我想我可能会发现一些非常晦涩的东西..

你们中的任何人都可以检查这是否有效吗? - 您必须引用 NAudio 库..

var enumerator = new MMDeviceEnumerator();
var d = enumerator.GetDefaultAudioEndpoint(DataFlow.Render, Role.Multimedia);
Console.WriteLine(d.Properties[new Guid("46d16a2c-5654-41c0-911e-7860d2bce7ee")].Value.ToString());

此属性返回 1(已插入)或 0(未插入).. 它对我来说非常有用..

更新:刚刚在CodePlex - iTunesHead上发布了应用程序

【讨论】:

  • 我已经尝试在我的 PC 上运行这个项目,但该特定 GUID 似乎不存在(空引用),所以我认为它取决于硬件/驱动程序。我还尝试比较插入和拔出耳机之前/之后的所有设备属性,没有任何变化。
  • 是的..当我发现这个 GUID 时我就是这么想的,一定是我的戴尔才有的东西,所以在那之后我有点放弃了这个项目..
【解决方案2】:

Microsoft.DirectX.DirectSound.Speakers 呢?

扬声器对象应将以下扬声器类型属性之一设置为 true:

  • FivePointOne
  • 耳机
  • 单声道
  • 四路
  • 七点一号
  • 立体声
  • 环绕

【讨论】:

  • 所有道具都返回相同的值。我不断插入/拔出耳机,都保持不变.. HeadPhone: False FivePointOne: False Mono: False Quad: False SevenPointOne: False Stereo: True Surround: False
  • 我能找到的唯一其他参考是:mp3car.com/coders-corner/88344-windows-speaker-setup.html> 和 codeproject.com/KB/audio-video/DirectSound9p1.aspx>
猜你喜欢
  • 2015-01-27
  • 1970-01-01
  • 2015-06-02
  • 1970-01-01
  • 2017-04-24
  • 1970-01-01
  • 2020-11-12
  • 2013-03-02
  • 1970-01-01
相关资源
最近更新 更多