Есть ли способ получить уведомление, когда разъем для наушников отключен от приложения WinRT? Я хочу иметь возможность приостанавливать воспроизведение MediaElement, когда это происходит, чтобы предотвратить утечку звука через громкоговорители.Как обнаружить отсоединенный разъем для наушников в WinRT?
ответ
Уведомление о обнаружении устройства обнаружено через IMMNotificationClient :: OnDeviceStateChanged. Просто попробовав его на рабочем столе win8, OnDeviceStateChanged вызывается с DEVICE_STATE_UNPLUGGED и DEVICE_STATE_ACTIVE, когда (un) подключает устройство. К сожалению, эта часть ваапи документирована как рабочий стол, поэтому я думаю, что в WinRT нет никакого способа сделать это.
Единственный способ, которым это должно быть возможно, - WASAPI - Windows Audio Session API (см. WASAPI sample).
К сожалению, WASAPI не отображается в C#, только на C++ (но я не уверен, что он охватывает обнаружение гнезда или нет. Я честно не считаю, что они обнаруживают обнаружение разъемов на уровне API ...).
Надежды на эту помощь.
Попробуйте следующее:
для Windows :: Устройства :: Перечень :: DeviceInformation :: CreateWatcher (Windows :: Устройства :: Перечень :: DeviceClass :: AudioRender);
Это работает на WinRT.
См MSDN подробнее о методе: http://msdn.microsoft.com/en-us/library/ie/windows.devices.enumeration.deviceinformation.createwatcher