是否有办法在WinRT应用中拔出耳机插孔时收到通知?我希望能够暂停MediaElement播放,以防止声音通过扬声器泄漏。
答案 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级别暴露插孔检测......)
希望这有帮助。