Qt disconnect From Service() 实际上没有断开蓝牙设备?

Qt disconnectFromService() not actaully disconnecting bluetooth device?

我正在使用 Qt 的 QBluetoothSocket class 将一副蓝牙耳机连接到我的 windows 电脑,如下所示:

device->connectToService(QBluetoothAddress(device1Info[1]), QBluetoothUuid(QBluetoothUuid::SerialPort));

并断开我使用的耳机:

if (device->state() == QBluetoothSocket::ConnectedState) {
    device->disconnectFromService();
}

它们连接正常,但当我选择断开连接时,它们实际上并没有断开连接。断开信号 发出这意味着套接字确实断开了服务但是当我在 Windows 中检查我的设备时 设置耳机仍然注册为已连接并按原样运行。这可能是因为我正在使用 QBluetoothUuid::SerialPort 作为连接到服务时的 QBluetoothUuid?还是别的?

断开连接并没有断开设备,它只是断开了插座。就像您关闭网络套接字一样 - 它不会断开您的 PC 与网络的连接:)

虽然我无法重现连接成功 - 除非你的耳机确实提供用于调试或其他东西的串行端口服务。

我猜你的整个程序什么都不做,因为耳机不提供串行端口,而且 OS 通常会立即将音频设备连接到耳机的音频服务,所以你不会能够附加到它。

我认为你想多了:你不需要在这里使用任何蓝牙 API。您只需要使用音频设备 API 找到耳机并通过它们进行音频 I/O。不过,我不确定 Qt 是否会帮助您。在 Qt 的多媒体 API 中查找枚举音频设备的方法。否则,您将需要使用 OS API 调用或一些音频访问库。