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

本文关键字:耳机 插孔 WinRT 插入 何检测 检测 | 更新日期: 2023-09-27 18:13:20

是否有一种方法可以在WinRT应用程序中拔掉耳机插孔时获得通知?我希望能够在发生这种情况时暂停MediaElement播放,以防止声音通过扬声器泄漏。

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

尝试如下:

窗口::设备::枚举:DeviceInformation: CreateWatcher (Windows::设备::枚举::DeviceClass:: AudioRender);

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

Jack检测通知通过IMMNotificationClient:: ondevicestatechange暴露。刚刚在win8桌面上尝试过,当(un)插入设备时,ondevicestatechange会被DEVICE_STATE_UNPLUGGED和DEVICE_STATE_ACTIVE调用。遗憾的是,wasapi的一部分被记录为仅用于桌面,所以我想在WinRT中没有办法做到这一点。

唯一可行的方法是通过WASAPI - Windows Audio Session API(参见WASAPI示例)。

遗憾的是,WASAPI在c#中没有暴露,只有在c++中(但我不确定它是否涵盖了jack检测)。老实说,我不相信他们会在API级别暴露jack检测…)。

希望能有所帮助。