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 调用或一些音频访问库。
我正在使用 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 调用或一些音频访问库。