You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在UWP应用中断开蓝牙设备的A2DP连接?

实现UWP断开蓝牙A2DP连接的方案

UWP中没有直接针对A2DP协议的单独断开接口,但可以通过蓝牙音频设备的连接管理API实现断开A2DP连接的需求,核心是使用Windows.Devices.Bluetooth.BluetoothAudioDevice类的相关方法。

步骤1:配置应用权限

在Package.appxmanifest中添加蓝牙权限,确保应用能访问蓝牙设备:

<Capabilities>
    <DeviceCapability Name="bluetooth" />
</Capabilities>

步骤2:获取已连接的蓝牙音频设备

先筛选出已配对且支持音频的蓝牙设备:

using Windows.Devices.Bluetooth;
using Windows.Devices.Enumeration;

// 获取已配对的蓝牙设备选择器
string selector = BluetoothDevice.GetDeviceSelectorFromPairingState(true);
DeviceInformationCollection devices = await DeviceInformation.FindAllAsync(selector);

// 筛选出支持音频的设备(A2DP设备属于音频设备范畴)
List<DeviceInformation> audioDevices = new List<DeviceInformation>();
foreach (var devInfo in devices)
{
    // 检查设备是否支持音频服务
    bool isAudioDevice = devInfo.Id.Contains("audio");
    if (isAudioDevice)
    {
        audioDevices.Add(devInfo);
    }
}

步骤3:断开A2DP连接

通过BluetoothAudioDevice的DisconnectAsync方法断开音频连接(该操作会终止A2DP协议的连接,若设备同时支持HFP等其他音频协议,也会一并断开):

using Windows.Devices.Bluetooth.Audio;

foreach (var audioDevInfo in audioDevices)
{
    // 替换为你目标设备的名称或ID判断逻辑
    if (audioDevInfo.Name == "你的蓝牙设备名称")
    {
        BluetoothDevice bluetoothDevice = await BluetoothDevice.FromIdAsync(audioDevInfo.Id);
        if (bluetoothDevice != null)
        {
            BluetoothAudioDevice audioDevice = await BluetoothAudioDevice.FromIdAsync(audioDevInfo.Id);
            if (audioDevice != null && audioDevice.IsConnected)
            {
                await audioDevice.DisconnectAsync();
                // 断开成功后的处理
            }
        }
        break;
    }
}

注意事项

  • 此API要求Windows 10 1709(Build 16299)及以上版本,若目标系统版本过低,可能无法找到该接口。
  • 若需要仅断开A2DP而保留其他蓝牙音频协议(如HFP),UWP原生API暂不支持这种细粒度控制,此时可能需要调用Win32的蓝牙API(如BthRemoveService),但这需要将UWP应用转为桌面桥接应用才能实现。

内容的提问来源于stack exchange,提问作者MARJAN KHAN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 04:58:15