4

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

4

3 回答 3

4

尝试以下操作:

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

于 2014-08-25T18:10:22.837 回答
3

Jack 检测通知通过 IMMNotificationClient::OnDeviceStateChanged 公开。刚刚在 win8 桌面上尝试过,在(取消)插入设备时,使用 DEVICE_STATE_UNPLUGGED 和 DEVICE_STATE_ACTIVE 调用 OnDeviceStateChanged。遗憾的是,wasapi 的那部分仅记录为桌面,所以我想在 WinRT 中没有办法做到这一点。

于 2013-06-09T09:41:37.677 回答
0

唯一可行的方法是通过WASAPI - Windows 音频会话 API(请参阅WASAPI 示例)。

可悲的是,WASAPI 没有在 C# 中公开,仅在 C++ 中公开(但我不确定它是否涵盖插孔检测。老实说,我不相信他们在 API 级别公开插孔检测......)。

希望这有帮助。

于 2013-05-24T08:22:48.077 回答