QBluetoothLocalDevice 类
QBluetoothLocalDevice 类允许访问本地蓝牙设备。详情...
头文件 | #include <QBluetoothLocalDevice> |
qmake | QT += bluetooth |
继承 | QObject |
公共类型
枚举 | Error { NoError, PairingError, MissingPermissionsError, UnknownError } |
枚举 | HostMode { HostPoweredOff, HostConnectable, HostDiscoverable, HostDiscoverableLimitedInquiry } |
枚举 | Pairing { Unpaired, Paired, AuthorizedPaired } |
公共函数
QBluetoothLocalDevice(QObject *parent = nullptr) | |
QBluetoothLocalDevice(const QBluetoothAddress &address, QObject *parent = 0) | |
虚拟 | ~QBluetoothLocalDevice() |
QBluetoothAddress | address() const |
QList<QBluetoothAddress> | connectedDevices() const |
QBluetoothLocalDevice::HostMode | hostMode() const |
bool | isValid() const |
QString | name() const |
QBluetoothLocalDevice::Pairing | pairingStatus(const QBluetoothAddress &address) const |
void | powerOn() |
void | requestPairing(const QBluetoothAddress &address, QBluetoothLocalDevice::Pairing pairing) |
void | setHostMode(QBluetoothLocalDevice::HostMode mode) |
信号
void | deviceConnected(const QBluetoothAddress &address) |
void | deviceDisconnected(const QBluetoothAddress &address) |
(自 6.2) void | errorOccurred(QBluetoothLocalDevice::Error error) |
void | hostModeStateChanged(QBluetoothLocalDevice::HostMode state) |
void | pairingFinished(const QBluetoothAddress &address, QBluetoothLocalDevice::Pairing pairing) |
静态公共成员
QList<QBluetoothHostInfo> | allDevices() |
成员类型文档
枚举 QBluetoothLocalDevice::Error
此枚举描述了可能返回的错误
常量 | 值 | 描述 |
---|---|---|
QBluetoothLocalDevice::NoError | 0 | 无已知错误 |
QBluetoothLocalDevice::PairingError | 1 | 配对错误 |
QBluetoothLocalDevice::MissingPermissionsError(自 Qt 6.4 开始) | 2 | 操作系统请求了由用户未授予的权限。 |
QBluetoothLocalDevice::UnknownError | 100 | 未知错误 |
枚举 QBluetoothLocalDevice::HostMode
此枚举描述了大部分本地蓝牙设备。
常量 | 值 | 描述 |
---|---|---|
QBluetoothLocalDevice::HostPoweredOff | 0 | 关闭设备电源 |
QBluetoothLocalDevice::HostConnectable | 1 | 如果之前已经与远程蓝牙设备配对或知道其地址,则远程蓝牙设备可以连接到本地蓝牙设备。如果设备已关闭,这将启动设备。 |
QBluetoothLocalDevice::HostDiscoverable | 2 | 远程蓝牙设备可以查找到本地蓝牙设备的存在。该设备也将启用连接,并开启电源。在 Android 上,此模式最多可以激活 5 分钟。 |
QBluetoothLocalDevice::HostDiscoverableLimitedInquiry | 3 | 当执行有限查询时,远程蓝牙设备可以发现本地蓝牙设备的存在。这应该用于查找仅在有限时间内可发现的服务。这可以在游戏设备之间加快发现过程,因为可以跳过不在有限查询模式中的设备的寻址。在此模式中,如果需要,设备将连接并开启电源。此模式在 Android 上不受支持。 |
注意:在 macOS 上,不能将 hostMode() 设置为 HostConnectable 或 HostPoweredOff。
注意:在 Windows 上,不能将 hostMode() 设置为 HostDiscoverable 或 HostDiscoverableLimitedInquiry。使用这些模式相当于 HostConnectable。
注意:从 Android 13(API 级别 33)开始,HostPoweredOff 状态依赖于非公共 Android API,因为公共 API 已被弃用,请参阅(disable())。这可能会在未来的 Android 版本中更改。
注意:至少从 Android 12 开始,设备的蓝牙可见设置可能会影响将 HostDiscoverable 或 HostConnectable 设置的结果。例如,如果可见性设置为关闭,则可能无法进入 HostDiscoverable 模式,但将使用 HostConnectable。
枚举 QBluetoothLocalDevice::Pairing
此枚举描述了两个蓝牙设备之间的配对状态。
常量 | 值 | 描述 |
---|---|---|
QBluetoothLocalDevice::Unpaired | 0 | 蓝牙设备未配对。 |
QBluetoothLocalDevice::Paired | 1 | 蓝牙设备已配对。远程设备启动对本地设备的连接时,系统将提示用户授权。 |
QBluetoothLocalDevice::AuthorizedPaired | 2 | 蓝牙设备已配对。远程设备启动对本地设备的连接时,系统不会提示用户授权。 |
成员函数文档
[显式]
QBluetoothLocalDevice::QBluetoothLocalDevice(QObject *parent = nullptr)
使用 parent 构造 QBluetoothLocalDevice。
注意:从 Android 12(API 级别 31)开始,此类的构造需要 蓝牙运行时权限(BLUETOOTH_SCAN 和 BLUETOOTH_CONNECT)。如果未授予这些权限,则设备将无效。
另请参阅isValid。
[显式]
QBluetoothLocalDevice::QBluetoothLocalDevice(const QBluetoothAddress &address, QObject *parent = 0)
为 地址 构造新的 QBluetoothLocalDevice。如果 地址 是默认构造的,那么生成的本地设备选择本地默认设备。
注意:从 Android 12(API 级别 31)开始,此类的构造需要 蓝牙运行时权限(BLUETOOTH_SCAN 和 BLUETOOTH_CONNECT)。如果未授予这些权限,则设备将无效。
另请参阅isValid。
[虚函数,不然不抛出异常]
QBluetoothLocalDevice::~QBluetoothLocalDevice()
销毁 QBluetoothLocalDevice。
QBluetoothAddress QBluetoothLocalDevice::address() const
返回此蓝牙设备的 MAC 地址。
注意:在 Android 上,从 Android 6.0 开始,此函数始终返回以 02:00:00:00:00:00
开始的本地地址常量值。已移除对设备的本地 MAC 地址的程序性访问。
[静态]
QList<QBluetoothHostInfo> QBluetoothLocalDevice::allDevices()
返回所有可用本地蓝牙设备的列表。在 macOS 上,只有一个“默认”本地设备。
QList<QBluetoothAddress> QBluetoothLocalDevice::connectedDevices() const
返回连接设备列表。此列表与当前配对设备列表不同。
在 Android 和 macOS 上,无法检索连接设备列表。只能监听(断开)连接变化。为了方便起见,此类在实例化后监测所有连接和断开事件,并在调用此函数时返回当前列表。因此,在创建实例后不久,此函数可能返回一个空列表。
另请参阅:deviceConnected() 和 deviceDisconnected()。
[信号]
void QBluetoothLocalDevice::deviceConnected(const QBluetoothAddress &address)
当本地设备通过 地址 建立与远程设备的连接时发出此信号。
另请参阅:deviceDisconnected() 和 connectedDevices()。
[信号]
void QBluetoothLocalDevice::deviceDisconnected(const QBluetoothAddress &address)
当本地设备从通过 地址 的远程蓝牙设备断开时发出此信号。
另请参阅:deviceConnected() 和 connectedDevices()。
[信号,自 6.2 版起]
void QBluetoothLocalDevice::errorOccurred(QBluetoothLocalDevice::Error error)
如果配对时发生异常 错误,则发出此信号。
此函数是在 Qt 6.2 中引入的。
QBluetoothLocalDevice::HostMode QBluetoothLocalDevice::hostMode() const
获取本地蓝牙设备的当前主模式。在macOS上,它可以是 HostPoweredOff 或 HostConnectable。
另见:setHostMode。
[信号]
void QBluetoothLocalDevice::hostModeStateChanged(QBluetoothLocalDevice::HostMode state)
主机模式已转换为不同的 HostMode。
bool QBluetoothLocalDevice::isValid() const
如果 QBluetoothLocalDevice 表示一个可用的本地蓝牙设备,则返回 true
;否则返回 false。
如果using本类的实例表示的本地蓝牙适配器从系统(例如,移除底层蓝牙适配器)中移除,则此实例将无效。当相同的蓝牙适配器返回到系统时,已无效的 QBluetoothLocalDevice 实例仍然无效。
注意:从 Android 12(API 级别 31)开始,此类的构造需要 蓝牙运行时权限(BLUETOOTH_SCAN 和 BLUETOOTH_CONNECT)。如果未授予这些权限,则设备将无效。
另见:allDevices。
QString QBluetoothLocalDevice::name() const
返回用户分配给此蓝牙设备的名称。
[信号]
void QBluetoothLocalDevice::pairingFinished(const QBluetoothAddress &address, QBluetoothLocalDevice::Pairing pairing)
配对或解除配对已完成,address 已完成。当前配对状态为 pairing。如果配对请求未成功,则不会发出此信号。如果配对请求失败,则发出 errorOccurred() 信号。该信号仅为之前通过调用当前对象实例的 requestPairing() 的配对请求发出。
QBluetoothLocalDevice::Pairing QBluetoothLocalDevice::pairingStatus(const QBluetoothAddress &address) const
返回 address 的当前蓝牙配对状态,如果未配对、已配对或配对并授权。
void QBluetoothLocalDevice::powerOn()
如果设备处于关闭状态,则在将其返回到 hostMode() 状态后打开设备。
注意:由于支持平台的安全性策略不同,此方法在不同的平台上可能有不同的行为。例如,系统可能会要求用户在打开或关闭蓝牙之前确认。在macOS上,无法打开/关闭蓝牙。请参阅特定平台的蓝牙文档以获取详细信息。
void QBluetoothLocalDevice::requestPairing(const QBluetoothAddress &address, QBluetoothLocalDevice::Pairing pairing)
使用地址设置配对状态。结果通过信号pairingFinished()返回。
在Android和macOS上,AuthorizedPaired不可用,其行为与Paired相同。在Windows上,精确的配对模式决策由操作系统负责。
在macOS上,无法解除设备的配对。如果请求解除配对,尽管设备仍然配对,pairingFinished()会立即发出。对于之前未配对的设备可以请求配对。另外,AuthorizedPaired与Paired具有相同的行为。
注意:创建配对可能需要数分钟,可能需要用户确认。
void QBluetoothLocalDevice::setHostMode(QBluetoothLocalDevice::HostMode mode)
将此本地蓝牙设备的宿主模式设置为mode。
一些转换,如开启或关闭设备,可能需要一些时间。因此,后续调用应在hostModeStateChanged()信号完成上一个请求后进行。如果忽略这一点,此类一系列调用的结果定义不良。
注意:由于支持平台上不同的安全策略,此方法可能在各种平台上有不同的行为。例如,系统可能在开启或关闭蓝牙之前要求用户确认,并且可能不支持所有宿主模式。在macOS上,无法以编程方式更改hostMode。用户只能通过系统偏好设置切换蓝牙的开启和关闭。在Windows上,此方法必须从UI线程调用,因为它可能需要用户确认。请查阅平台特定蓝牙文档以获取详细信息。
另请参阅hostMode。
© 2024 The Qt Company Ltd. 本文档中的贡献各自的版权属于其所有者。本提供的文档是根据自由软件基金会发布的GNU自由文档许可证版本1.3的条款授予的。Qt及其相应商标是芬兰及其他国家和地区的The Qt Company Ltd.的商标。所有其他商标都属于其相应所有者。