【问题标题】:How to detect unplugged headphone jack in WinRT?如何在 WinRT 中检测未插入的耳机插孔?
【发布时间】:2013-05-08 10:17:24
【问题描述】:

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

【问题讨论】:

    标签: c# .net windows-runtime headphones jack


    【解决方案1】:

    尝试以下方法:

    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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

        希望能有所帮助。

        【讨论】:

          猜你喜欢
          • 2017-04-24
          • 2011-08-19
          • 2012-01-18
          • 2013-11-11
          • 2010-10-26
          • 2016-04-14
          • 2011-04-04
          • 1970-01-01
          • 2014-06-02
          相关资源
          最近更新 更多