【发布时间】:2013-05-08 10:17:24
【问题描述】:
有没有办法在 WinRT 应用程序中拔下耳机插孔时收到通知?我希望能够在发生 MediaElement 播放时暂停播放,以防止声音通过扬声器泄漏。
【问题讨论】:
标签: c# .net windows-runtime headphones jack
有没有办法在 WinRT 应用程序中拔下耳机插孔时收到通知?我希望能够在发生 MediaElement 播放时暂停播放,以防止声音通过扬声器泄漏。
【问题讨论】:
标签: c# .net windows-runtime headphones jack
尝试以下方法:
Windows::Devices::Enumeration::DeviceInformation::CreateWatcher(Windows::Devices::Enumeration::DeviceClass::AudioRender);
这适用于 WinRT。
有关该方法的更多详细信息,请参见 MSDN: http://msdn.microsoft.com/en-us/library/ie/windows.devices.enumeration.deviceinformation.createwatcher
【讨论】:
Jack 检测通知通过 IMMNotificationClient::OnDeviceStateChanged 公开。刚刚在 win8 桌面上尝试过,在(取消)插入设备时,使用 DEVICE_STATE_UNPLUGGED 和 DEVICE_STATE_ACTIVE 调用 OnDeviceStateChanged。遗憾的是,wasapi 的那部分仅记录为桌面,所以我想在 WinRT 中没有办法做到这一点。
【讨论】:
唯一可行的方法是通过 WASAPI - Windows 音频会话 API(请参阅 WASAPI sample)。
遗憾的是,WASAPI 并未在 C# 中公开,仅在 C++ 中公开(但我不确定它是否涵盖插孔检测。老实说,我不相信他们在 API 级别公开插孔检测......) .
希望能有所帮助。
【讨论】: