QBluetoothLocalDevice 类

QBluetoothLocalDevice 类允许访问本地蓝牙设备。详情...

头文件 #include <QBluetoothLocalDevice>
qmakeQT += 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()
QBluetoothAddressaddress() const
QList<QBluetoothAddress>connectedDevices() const
QBluetoothLocalDevice::HostModehostMode() const
boolisValid() const
QStringname() const
QBluetoothLocalDevice::PairingpairingStatus(const QBluetoothAddress &address) const
voidpowerOn()
voidrequestPairing(const QBluetoothAddress &address, QBluetoothLocalDevice::Pairing pairing)
voidsetHostMode(QBluetoothLocalDevice::HostMode mode)

信号

voiddeviceConnected(const QBluetoothAddress &address)
voiddeviceDisconnected(const QBluetoothAddress &address)
(自 6.2) voiderrorOccurred(QBluetoothLocalDevice::Error error)
voidhostModeStateChanged(QBluetoothLocalDevice::HostMode state)
voidpairingFinished(const QBluetoothAddress &address, QBluetoothLocalDevice::Pairing pairing)

静态公共成员

QList<QBluetoothHostInfo>allDevices()

详细说明

QBluetoothLocalDevice 提供了用于获取和设置本地蓝牙设备状态的函数。

在 iOS 上,无法使用此类,因为平台未公开任何数据或 API,这可能提供有关本地蓝牙设备的信息。

成员类型文档

枚举 QBluetoothLocalDevice::Error

此枚举描述了可能返回的错误

常量描述
QBluetoothLocalDevice::NoError0无已知错误
QBluetoothLocalDevice::PairingError1配对错误
QBluetoothLocalDevice::MissingPermissionsError(自 Qt 6.4 开始)2操作系统请求了由用户未授予的权限。
QBluetoothLocalDevice::UnknownError100未知错误

枚举 QBluetoothLocalDevice::HostMode

此枚举描述了大部分本地蓝牙设备。

常量描述
QBluetoothLocalDevice::HostPoweredOff0关闭设备电源
QBluetoothLocalDevice::HostConnectable1如果之前已经与远程蓝牙设备配对或知道其地址,则远程蓝牙设备可以连接到本地蓝牙设备。如果设备已关闭,这将启动设备。
QBluetoothLocalDevice::HostDiscoverable2远程蓝牙设备可以查找到本地蓝牙设备的存在。该设备也将启用连接,并开启电源。在 Android 上,此模式最多可以激活 5 分钟。
QBluetoothLocalDevice::HostDiscoverableLimitedInquiry3当执行有限查询时,远程蓝牙设备可以发现本地蓝牙设备的存在。这应该用于查找仅在有限时间内可发现的服务。这可以在游戏设备之间加快发现过程,因为可以跳过不在有限查询模式中的设备的寻址。在此模式中,如果需要,设备将连接并开启电源。此模式在 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::Unpaired0蓝牙设备未配对。
QBluetoothLocalDevice::Paired1蓝牙设备已配对。远程设备启动对本地设备的连接时,系统将提示用户授权。
QBluetoothLocalDevice::AuthorizedPaired2蓝牙设备已配对。远程设备启动对本地设备的连接时,系统不会提示用户授权。

成员函数文档

[显式] QBluetoothLocalDevice::QBluetoothLocalDevice(QObject *parent = nullptr)

使用 parent 构造 QBluetoothLocalDevice。

注意:从 Android 12(API 级别 31)开始,此类的构造需要 蓝牙运行时权限BLUETOOTH_SCANBLUETOOTH_CONNECT)。如果未授予这些权限,则设备将无效。

另请参阅isValid

[显式] QBluetoothLocalDevice::QBluetoothLocalDevice(const QBluetoothAddress &address, QObject *parent = 0)

地址 构造新的 QBluetoothLocalDevice。如果 地址 是默认构造的,那么生成的本地设备选择本地默认设备。

注意:从 Android 12(API 级别 31)开始,此类的构造需要 蓝牙运行时权限BLUETOOTH_SCANBLUETOOTH_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上,它可以是 HostPoweredOffHostConnectable

另见:setHostMode

[信号] void QBluetoothLocalDevice::hostModeStateChanged(QBluetoothLocalDevice::HostMode state)

主机模式已转换为不同的 HostMode

bool QBluetoothLocalDevice::isValid() const

如果 QBluetoothLocalDevice 表示一个可用的本地蓝牙设备,则返回 true;否则返回 false。

如果using本类的实例表示的本地蓝牙适配器从系统(例如,移除底层蓝牙适配器)中移除,则此实例将无效。当相同的蓝牙适配器返回到系统时,已无效的 QBluetoothLocalDevice 实例仍然无效。

注意:从 Android 12(API 级别 31)开始,此类的构造需要 蓝牙运行时权限BLUETOOTH_SCANBLUETOOTH_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()会立即发出。对于之前未配对的设备可以请求配对。另外,AuthorizedPairedPaired具有相同的行为。

注意:创建配对可能需要数分钟,可能需要用户确认。

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.的商标。所有其他商标都属于其相应所有者。