2

Для WINDOW UNIVERSAL APP я хочу определить, когда изменяется конечная точка аудио.Как определить изменение конечной точки аудио в приложении Windows Store?

  • для Windows Mobile App, я использовал Windows.Phone.Media.Devices.AudioRoutingManager, чтобы получить обратный вызов и сделать маршрутизацию аудио потока.

  • Для Windows Desktop App может применяться API MMDevice.

  • Для Windows Store App я не знаю, как это получить. Как это обнаружить?

    Любая помощь и полезные предложения приветствуются. Спасибо.

ответ

0

После долгого поиска и проведения теста на реверберации, я думаю, что создание DeviceWatcher является наиболее подходящим решением для этого. Я попробовал и получал уведомления, когда любые наушники/микрофон добавляются или удаляются.

После создания наблюдателя вы получите следующие уведомления для любого устройства, соответствующего вашим критериям.

  • Добавить уведомление, когда новое устройство добавляется.
  • Обновить уведомление, когда объект который интересует недвижимость.
  • Удалить уведомление, когда устройство больше не доступно или не соответствует вашему фильтру.

Это ссылка на link.

2

В UWP мы можем использовать событие MediaDevice.DefaultAudioRenderDeviceChanged, чтобы обнаружить, что устройство звукового рендера по умолчанию изменено. Это событие содержит аргумент DefaultAudioRenderDeviceChangedEventArgs. Свойство Id позволяет получить идентификатор вновь выбранного устройства рендеринга звука по умолчанию. Когда у нас есть идентификатор устройства, мы можем использовать метод DeviceInformation.CreateFromIdAsync для получения DeviceInformation. Этот класс позволяет получить доступ к известным свойствам устройства, а также к дополнительным свойствам, указанным во время перечисления устройств. Для получения дополнительной информации см. Device information properties. И следующий простой пример:

MediaDevice.DefaultAudioRenderDeviceChanged += MediaDevice_DefaultAudioRenderDeviceChanged; 

private async void MediaDevice_DefaultAudioRenderDeviceChanged(object sender, DefaultAudioRenderDeviceChangedEventArgs args) 
{ 
    System.Diagnostics.Debug.WriteLine($"{args.Id} : {args.Role}"); 

    var device = await DeviceInformation.CreateFromIdAsync(args.Id); 

    //TODO 
} 

Кроме того, мы можем получить все доступные аудио конечных точек с помощью метода MediaDevice.GetAudioRenderSelector с DeviceInformation.FindAllAsync методом, как:

var outputDevices = await DeviceInformation.FindAllAsync(MediaDevice.GetAudioRenderSelector()); 

Для получения дополнительной информации, пожалуйста, см Output to a specific audio endpoint.

+0

Привет @Jay, похоже, ваше предложение является хорошим решением. Но вы пробовали это для Windows Phone Store App? Это работает? Для меня я попытался с DeviceWatcher, и он работает хорошо. –

+0

@LuongMinhHiep 'DefaultAudioRenderDeviceChanged' - универсальный API, он должен работать на мобильном устройстве. И я тестировал Lumia 640, он работает хорошо. –