В 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.
Привет @Jay, похоже, ваше предложение является хорошим решением. Но вы пробовали это для Windows Phone Store App? Это работает? Для меня я попытался с DeviceWatcher, и он работает хорошо. –
@LuongMinhHiep 'DefaultAudioRenderDeviceChanged' - универсальный API, он должен работать на мобильном устройстве. И я тестировал Lumia 640, он работает хорошо. –