QLowEnergyAdvertisingData Class

QLowEnergyAdvertisingData 类表示蓝牙低功耗广告期间要广播的数据。更多

Header: #include <QLowEnergyAdvertisingData>
qmake: QT += bluetooth

公共类型

enum Discoverability { DiscoverabilityNone, DiscoverabilityLimited, DiscoverabilityGeneral }

公共函数

QLowEnergyAdvertisingData()
QLowEnergyAdvertisingData(const QLowEnergyAdvertisingData &other)
~QLowEnergyAdvertisingData()
QLowEnergyAdvertisingData::Discoverability discoverability() const
bool includePowerLevel() const
QString localName() const
QByteArray manufacturerData() const
quint16 manufacturerId() const
QByteArray rawData() const
QList<QBluetoothUuid> services() const
void setDiscoverability(QLowEnergyAdvertisingData::Discoverability mode)
void setIncludePowerLevel(bool doInclude)
void setLocalName(const QString &name)
void setManufacturerData(quint16 id, const QByteArray &data)
void setRawData(const QByteArray &data)
void setServices(const QList<QBluetoothUuid> &services)
void swap(QLowEnergyAdvertisingData &other)
QLowEnergyAdvertisingData &operator=(const QLowEnergyAdvertisingData &other)

静态公共成员

bool operator!=(const QLowEnergyAdvertisingData &data1, const QLowEnergyAdvertisingData &data2)
bool operator==(const QLowEnergyAdvertisingData &data1, const QLowEnergyAdvertisingData &data2)

详细说明

该数据包括设备名称、设备提供的 GATT 服务等。当调用QLowEnergyController::startAdvertising() 启动广告时,将使用通过该类设置的数据。该类对象可表示广告数据包或扫描响应包。

广告数据限制

广告数据的最大长度取决于蓝牙设备和平台蓝牙协议栈。为获得最大兼容性,建议将广告数据大小限制在传统广告限制的 31 字节以内。

如果通过该类设置的可变长度数据超出了支持的限制,其行为将取决于底层蓝牙协议栈的实现。最典型的可能性是

  • 多余数据被截断或完全省略;
  • 广告无法启动。

例如,在 Android 系统上,如果广告数据大于 31 字节,广告就会失败。在 BlueZ DBus 后端,广告长度限制和超出限制时的行为由 BlueZ 决定;例如,它可能支持扩展广告,也可能无法启动广告。

另请参阅 QLowEnergyAdvertisingParametersQLowEnergyController::startAdvertising()。

成员类型文档

enum QLowEnergyAdvertisingData::Discoverability

通用访问配置文件所定义的广告设备的可发现性。

常数说明
QLowEnergyAdvertisingData::DiscoverabilityNone0广告设备不希望被扫描设备发现。
QLowEnergyAdvertisingData::DiscoverabilityLimited1广告设备希望以高优先级被发现。请注意,这种模式与使用白名单不兼容。使用有限可发现性时,QLowEnergyAdvertisingParameters::filterPolicy() 的值总是假定为QLowEnergyAdvertisingParameters::IgnoreWhiteList
QLowEnergyAdvertisingData::DiscoverabilityGeneral2广告设备希望被扫描设备发现。

成员函数文档

QLowEnergyAdvertisingData::QLowEnergyAdvertisingData()

创建该类的新对象。所有值均根据蓝牙低功耗规范初始化为默认值。

QLowEnergyAdvertisingData::QLowEnergyAdvertisingData(const QLowEnergyAdvertisingData &other)

构造一个本类的新对象,它是other 的副本。

[noexcept] QLowEnergyAdvertisingData::~QLowEnergyAdvertisingData()

销毁该对象。

QLowEnergyAdvertisingData::Discoverability QLowEnergyAdvertisingData::discoverability() const

返回广告设备的可发现模式。默认为DiscoverabilityNone

另请参阅 setDiscoverability()。

bool QLowEnergyAdvertisingData::includePowerLevel() const

返回是否在广告数据中包含设备的发射功率级别。默认值是false

另请参阅 setIncludePowerLevel()。

[static] quint16 QLowEnergyAdvertisingData::invalidManufacturerId()

返回无效的制造商 ID。如果将此值设为制造商 ID(默认情况下是),则广告数据中将不会出现制造商数据。

QString QLowEnergyAdvertisingData::localName() const

返回要发布广告的本地设备名称。

另请参阅 setLocalName()。

QByteArray QLowEnergyAdvertisingData::manufacturerData() const

返回制造商数据。默认为空字节数组。

另请参见 setManufacturerData()。

quint16 QLowEnergyAdvertisingData::manufacturerId() const

返回制造商 ID。默认值是QLowEnergyAdvertisingData::invalidManufacturerId() ,这意味着数据不会被公布。

QByteArray QLowEnergyAdvertisingData::rawData() const

返回用户提供的要发布的原始数据。默认为空字节数组。

另请参阅 setRawData()。

QList<QBluetoothUuid> QLowEnergyAdvertisingData::services() const

返回要发布广告的服务 UUID 列表。默认情况下,该列表为空。

另请参阅 setServices()。

void QLowEnergyAdvertisingData::setDiscoverability(QLowEnergyAdvertisingData::Discoverability mode)

将广告设备的可发现性类型设置为mode

注意: 可探测性信息只能出现在实际的广告数据包中。如果此对象作为扫描响应数据,调用此函数将不会对发送的扫描响应产生任何影响。

另请参阅 discoverability()。

void QLowEnergyAdvertisingData::setIncludePowerLevel(bool doInclude)

指定是否在广告数据中包含设备的发射功率级别。如果doIncludetrue ,则包含该数据,否则不包含。

另请参阅 includePowerLevel()。

void QLowEnergyAdvertisingData::setLocalName(const QString &name)

指定name 作为设备名称广播。如果全名无法放入广告数据包,则会按照蓝牙低功耗规范的规定发送缩写名称。

在 Android 系统上,本地名称无法更改。Android 始终使用设备名称。如果本地名称不为空,Android 实现会在广告数据包中包含设备名称;否则,广告数据包中将省略设备名称。

另请参阅 localName()。

void QLowEnergyAdvertisingData::setManufacturerData(quint16 id, const QByteArray &data)

设置制造商 ID 和数据。id 参数是蓝牙技术联盟指定的公司标识符。data 参数为任意值。

注意: macOS 和 iOS 不支持制造商 ID 或数据广告,因此在这些平台上提供的参数将被忽略。

另请参阅 manufacturerData().

void QLowEnergyAdvertisingData::setRawData(const QByteArray &data)

设置要发送到data 的广告数据。如果该值不是空字节数组,它将作为广告数据原样发送,该对象中的所有其他数据将被忽略。这可用于发送非标准数据。

注意: 如果data 超过 31 字节,将被截断。调用者有责任确保data 格式良好。

只有Linux 蓝牙内核 API后端支持设置原始广告数据。其他后端不允许将原始广告数据指定为全局字段。

另请参阅 rawData()。

void QLowEnergyAdvertisingData::setServices(const QList<QBluetoothUuid> &services)

指定应公布services 中的服务 UUID。如果整个列表无法包含在数据包中,则按照蓝牙低功耗规范的规定发送不完整列表。

另请参阅 services()。

[noexcept] void QLowEnergyAdvertisingData::swap(QLowEnergyAdvertisingData &other)

将此对象与other 互换。

QLowEnergyAdvertisingData &QLowEnergyAdvertisingData::operator=(const QLowEnergyAdvertisingData &other)

使该对象成为other 的副本,并返回该对象的新值。

相关非成员

bool operator!=(const QLowEnergyAdvertisingData &data1, const QLowEnergyAdvertisingData &data2)

如果data1data2 的公共状态不相等,则返回true ,否则返回false

bool operator==(const QLowEnergyAdvertisingData &data1, const QLowEnergyAdvertisingData &data2)

如果data1data2 的公共状态相等,则返回true ,否则返回false

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.