如何检测WinRT中未插入的耳机插孔?

时间:2013-05-14 08:05:17

标签: c# .net windows-runtime headphones jack

是否有办法在WinRT应用中拔出耳机插孔时收到通知?我希望能够暂停MediaElement播放,以防止声音通过扬声器泄漏。

3 个答案:

答案 0 :(得分:4)

尝试以下方法:

视窗::设备::枚举:: DeviceInformation :: CreateWatcher(视窗::设备::枚举:: DEVICECLASS :: AudioRender);

这适用于WinRT。

有关该方法的更多详细信息,请参阅MSDN: http://msdn.microsoft.com/en-us/library/ie/windows.devices.enumeration.deviceinformation.createwatcher

答案 1 :(得分:3)

通过IMMNotificationClient :: OnDeviceStateChanged公开杰克检测通知。刚刚在win8桌面上尝试过,当(联合)插入设备时,OnDeviceStateChanged会被DEVICE_STATE_UNPLUGGED和DEVICE_STATE_ACTIVE调用。遗憾的是,wasapi的一部分仅被记录为桌面版,所以我想在WinRT中无法做到这一点。

答案 2 :(得分:0)

应该可行的唯一方法是通过 WASAPI - Windows Audio Session API (请参阅WASAPI sample)。

可悲的是,WASAPI没有暴露在c#中,只是在C ++中暴露(但我不确定它是否包含插孔检测。我真的不相信它们会在API级别暴露插孔检测......)

希望这有帮助。