QBluetoothLocalDevice
一、描述
QBluetoothLocalDevice 类用于访问本地蓝牙设备,它提供了获取和设置本地蓝牙设备状态的函数。
在 iOS 上,不能使用此类,因为平台不公开任何可能提供本地蓝牙设备信息的数据或 API。
二、类型成员
1、enum QBluetoothLocalDevice::Error:此枚举描述了可能返回的错误
- NoError:没有已知错误
- PairingError:配对错误
- UnknownError:未知错误
2、enum QBluetoothLocalDevice::HostMode:此枚举描述了大部分本地蓝牙设备的状态。
- HostPoweredOff:关闭设备
- HostConnectable:如果远程蓝牙设备已经与本地蓝牙设备配对或者知道它的地址则可以连接到本地蓝牙设备。如果设备关闭,将启动设备。
- HostDiscoverable:远程蓝牙设备可以发现本地蓝牙设备的存在。该设备也可以连接并打开电源。在 Android 上,此模式最多只能激活 5 分钟。
- HostDiscoverableLimitedInquiry:远程蓝牙设备在执行有限查询时可以发现本地蓝牙设备的存在。这应该用于定位仅在有限时间段内可发现的服务。在此模式下,如果需要,设备将可连接并打开电源。Android 不支持此模式。
注意:
- 在 macOS 上,无法将 hostMode() 设置为 HostConnectable 或 HostPoweredOff。
- 在 Windows 上,无法将 hostMode() 设置为 HostDiscoverable 或 HostDiscoverableLimitedInquiry。使用这些模式等效于 HostConnectable。
3、enum QBluetoothLocalDevice::Pairing:此枚举描述了两个蓝牙设备之间的配对状态。
- Unpaired:蓝牙设备未配对。
- Paired:蓝牙设备已配对。当远程设备发起与本地设备的连接时,系统会提示用户授权。
- AuthorizedPaired:蓝牙设备已配对。当远程设备发起与本地设备的连接时,系统不会提示用户授权。
三、成员函数
1、QBluetoothLocalDevice(const QBluetoothAddress &address, QObject *parent = 0)
为 address 构造新的 QBluetoothLocalDevice。如果地址是默认构造的,则生成的本地设备将选择本地默认设备。
在 Android 系统中,该类的构建需要蓝牙运行时权限(BLUETOOTH_SCAN 和 BLUETOOTH_CONNECT)。如果未授予权限,则设备将无效。
2、【信号】void deviceConnected(const QBluetoothAddress &address)
当本地设备与具有地址 address 的远程设备建立连接时,会发出此信号。
3、【信号】void deviceDisconnected(const QBluetoothAddress &address)
当本地设备与具有地址 address 的远程蓝牙设备断开连接时,会发出此信号。
4、【信号】void errorOccurred(QBluetoothLocalDevice::Error error)
如果配对时出现异常错误,则发出信号。
5、【信号】void hostModeStateChanged(QBluetoothLocalDevice::HostMode state)
主机的状态转换时发出此信号。
6、【信号】void pairingFinished(const QBluetoothAddress &address, QBluetoothLocalDevice::Pairing pairing)
已完成与地址 address 的配对或取消配对。
- 如果配对请求不成功,则不会发出此信号。
- 如果配对请求失败,则会发出 errorOccurred() 信号。
此信号仅针对先前通过调用当前对象实例的 requestPairing() 请求的配对请求发出。
7、QBluetoothAddress address()
返回此蓝牙设备的 MAC 地址。
8、【static】QList<QBluetoothHostInfo> allDevices()
返回所有可用本地蓝牙设备的列表。
9、QList<QBluetoothAddress> connectedDevices()
返回已连接设备的列表。此列表不同于当前配对设备的列表。
在 Android 和 macOS 上,无法检索已连接设备的列表。
10、bool isValid()
此 QBluetoothLocalDevice 是否代表一个可用的本地蓝牙设备。
如果由此类的实例表示的本地蓝牙适配器从系统中删除(例如,删除底层蓝牙加密狗),则此实例将变为无效。
11、QString name()
蓝牙设备名称。
12、void powerOn()
如果设备已关闭,则打开设备电源。
由于支持的平台上的安全策略不同,此方法在不同平台上可能具有不同的行为。 例如,系统可能会在打开或关闭蓝牙之前要求用户确认。在 macOS 上,无法打开/关闭蓝牙。
13、void requestPairing(const QBluetoothAddress &address, QBluetoothLocalDevice::Pairing pairing)
使用 address 设置配对状态。 结果由信号 pairingFinished() 返回。
在不同系统会有不同的动作。
QBluetoothHostInfo
一、描述
此类封装了本地蓝牙设备的名称和地址。
二、成员函数
1、QBluetoothAddress address() / void setAddress(const QBluetoothAddress &address)
地址。
2、QString name() / void setName(const QString &name)
名称。