有没有办法在 WinRT 应用程序中拔下耳机插孔时收到通知?我希望能够在发生 MediaElement 播放时暂停播放,以防止声音通过扬声器泄漏。
3 回答
尝试以下操作:
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 示例)。
可悲的是,WASAPI 没有在 C# 中公开,仅在 C++ 中公开(但我不确定它是否涵盖插孔检测。老实说,我不相信他们在 API 级别公开插孔检测......)。
希望这有帮助。