对于WINDOW UNIVERSAL APP,我想检测更改的音频终点。
对于Windows Mobile App,我使用Windows.Phone.Media.Devices.AudioRoutingManager来获取回调并进行音频流路由。
对于Windows桌面应用程序,MMDevice API可能会出现。
对于Windows应用商店应用,我不知道如何获得此功能。怎么检测到这个?
任何帮助和有用的建议表示赞赏。谢谢。
答案 0 :(得分:2)
在UWP中,我们可以使用MediaDevice.DefaultAudioRenderDeviceChanged事件来检测默认音频渲染设备是否已更改。此事件包含DefaultAudioRenderDeviceChangedEventArgs参数。使用Id属性,我们可以获取新选择的默认音频渲染设备的ID。获得设备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。
答案 1 :(得分:0)
经过长时间的搜索和完成测试,我认为创建一个DeviceWatcher是最相关的解决方案。我尝试了它,并在添加或删除任何耳机/麦克风时收到通知。
创建观察者后,您将收到符合所提供条件的任何设备的以下通知。
这是link引用它。