我们如何检测 Windows Store 应用程序中的音频终点变化?
How do we detect audio end point changing in a Windows Store app?
对于WINDOW UNIVERSAL APP,我想检测音频结束点何时更改。
对于 Windows 移动应用程序,我使用 Windows.Phone.Media.Devices.AudioRoutingManager 获取回调并进行音频流路由。
对于Windows桌面应用,MMDeviceAPI可能会派上用场。
对于 Windows 商店应用程序,我不知道如何获取它。如何检测?
感谢任何帮助和有用的建议。谢谢。
在UWP中,我们可以使用MediaDevice.DefaultAudioRenderDeviceChanged event to detect default audio render device is changed. This event contains a DefaultAudioRenderDeviceChangedEventArgs argument. With its Id property, we can get the ID of the newly selected default audio render device. Once we have the device ID, we can use DeviceInformation.CreateFromIdAsync method to get DeviceInformation. This class allows access to well-known device properties as well as additional properties specified during device enumeration. For more info, please see 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 method with DeviceInformation.FindAllAsync 方法获取所有可用的音频端点,例如:
var outputDevices = await DeviceInformation.FindAllAsync(MediaDevice.GetAudioRenderSelector());
更多信息,请参阅Output to a specific audio endpoint。
经过长时间的搜索和反向测试,我认为创建一个 DeviceWatcher 是最相关的解决方案。我试过了,每当添加或删除任何 headphone/mic 时都会收到通知。
创建观察器后,您将收到符合您提供条件的任何设备的以下通知。
- 添加新设备时添加通知。
- 更新通知时间
属性您感兴趣的内容已更改。
- 删除通知
设备不再可用或不再符合您的筛选条件。
这是link引用的。
对于WINDOW UNIVERSAL APP,我想检测音频结束点何时更改。
对于 Windows 移动应用程序,我使用 Windows.Phone.Media.Devices.AudioRoutingManager 获取回调并进行音频流路由。
对于Windows桌面应用,MMDeviceAPI可能会派上用场。
对于 Windows 商店应用程序,我不知道如何获取它。如何检测?
感谢任何帮助和有用的建议。谢谢。
在UWP中,我们可以使用MediaDevice.DefaultAudioRenderDeviceChanged event to detect default audio render device is changed. This event contains a DefaultAudioRenderDeviceChangedEventArgs argument. With its Id property, we can get the ID of the newly selected default audio render device. Once we have the device ID, we can use DeviceInformation.CreateFromIdAsync method to get DeviceInformation. This class allows access to well-known device properties as well as additional properties specified during device enumeration. For more info, please see 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 method with DeviceInformation.FindAllAsync 方法获取所有可用的音频端点,例如:
var outputDevices = await DeviceInformation.FindAllAsync(MediaDevice.GetAudioRenderSelector());
更多信息,请参阅Output to a specific audio endpoint。
经过长时间的搜索和反向测试,我认为创建一个 DeviceWatcher 是最相关的解决方案。我试过了,每当添加或删除任何 headphone/mic 时都会收到通知。
创建观察器后,您将收到符合您提供条件的任何设备的以下通知。
- 添加新设备时添加通知。
- 更新通知时间 属性您感兴趣的内容已更改。
- 删除通知 设备不再可用或不再符合您的筛选条件。
这是link引用的。