QBluetoothServiceInfo 类

QBluetoothServiceInfo 类允许访问蓝牙服务属性。 更多信息...

头文件 #include <QBluetoothServiceInfo>
qmakeQT += bluetooth

公共类型

备选
序列
枚举AttributeId { ServiceRecordHandle, ServiceClassIds, ServiceRecordState, ServiceId, ProtocolDescriptorList, …, ServiceProvider }
枚举Protocol { UnknownProtocol, L2capProtocol, RfcommProtocol }

公共函数

QBluetoothServiceInfo()
QBluetoothServiceInfo(const QBluetoothServiceInfo &other)
~QBluetoothServiceInfo()
QVariantattribute(quint16 attributeId) const
QList<quint16>attributes() const
boolcontains(quint16 attributeId) const
QBluetoothDeviceInfodevice() const
boolisComplete() const
boolisRegistered() const
boolisValid() const
QBluetoothServiceInfo::SequenceprotocolDescriptor(QBluetoothUuid::ProtocolUuid protocol) const
intprotocolServiceMultiplexer() const
boolregisterService(const QBluetoothAddress &localAdapter = QBluetoothAddress())
voidremoveAttribute(quint16 attributeId)
intserverChannel() const
quint8serviceAvailability() const
QList<QBluetoothUuid>serviceClassUuids() const
QStringserviceDescription() const
QStringserviceName() const
QStringserviceProvider() const
QBluetoothUuidserviceUuid() const
voidsetAttribute(quint16 attributeId, const QVariant &value)
voidsetAttribute(quint16 attributeId, const QBluetoothUuid &value)
voidsetAttribute(quint16 attributeId, const QBluetoothServiceInfo::Sequence &value)
voidsetAttribute(quint16 attributeId, const QBluetoothServiceInfo::Alternative &value)
voidsetDevice(const QBluetoothDeviceInfo &device)
voidsetServiceAvailability(quint8 availability)
voidsetServiceDescription(const QString &description)
voidsetServiceName(const QString &name)
voidsetServiceProvider(const QString &provider)
voidsetServiceUuid(const QBluetoothUuid &uuid)
QBluetoothServiceInfo::协议socketProtocol() const
bool注销服务()
QBluetoothServiceInfo &operator=(const QBluetoothServiceInfo &other)

详细描述

QBluetoothServiceInfo提供了关于蓝牙设备提供的服务的相关信息。此外,还可以用来在本地设备上注册新服务。请注意,此类注册只会影响蓝牙SDP条目。在调用registerService()之前,必须启动任何监听传入连接的服务器(例如RFCOMM服务器)。注销必须按照相反的顺序发生。

QBluetoothServiceInfo在传统意义上不是一个值类型。相同的服务信息对象的所有副本都共享相同的数据,因为它们在更改时不分离。这确保了两个副本可以(解)注册相同的蓝牙服务。

在iOS上,无法使用此类,因为该平台未公开可能允许访问QBluetoothServiceInfo相关特性的API。

成员类型文档

枚举 QBluetoothServiceInfo::AttributeId

蓝牙服务属性。请查阅蓝牙核心规范以获取这些属性更详细的描述。

常量描述
QBluetoothServiceInfo::ServiceRecordHandle0x0000指定可从中检索属性的服务记录。
QBluetoothServiceInfo::ServiceClassIds0x0001符合该服务的服务类uuid。最常见的服务类在QBluetoothUuid::ServiceClassUuid中定义。
QBluetoothServiceInfo::ServiceRecordState0x0002当添加、删除或修改任何其他服务属性时,属性发生变化。
QBluetoothServiceInfo::ServiceId0x0003唯一识别服务的uuid。
QBluetoothServiceInfo::ProtocolDescriptorList0x0004服务使用的协议列表。最常见的协议uuid在QBluetoothUuid::ProtocolUuid中定义。
QBluetoothServiceInfo::BrowseGroupList0x0005服务所在的浏览组列表。
QBluetoothServiceInfo::LanguageBaseAttributeIdList0x0006支持人类可读属性的语言基础属性ID列表。
QBluetoothServiceInfo::ServiceInfoTimeToLive0x0007服务记录预期保持有效和不变的时间(秒)。
QBluetoothServiceInfo::ServiceAvailability0x0008指示服务可用性的值。
QBluetoothServiceInfo::BluetoothProfileDescriptorList0x0009符合该服务的配置文件列表。
QBluetoothServiceInfo::DocumentationUrl0x000A指向服务文档的URL。
QBluetoothServiceInfo::ClientExecutableUrl0x000B指向可用于利用服务的应用程序位置的URL。
QBluetoothServiceInfo::IconUrl0x000C指向表示服务的图标的URL。
QBluetoothServiceInfo::AdditionalProtocolDescriptorList0x000D服务使用的附加协议。此属性扩展ProtocolDescriptorList
QBluetoothServiceInfo::PrimaryLanguageBase0x0100主要语言文本描述符的基本索引。
QBluetoothServiceInfo::ServiceNamePrimaryLanguageBase + 0x0000主要语言中的蓝牙服务名称。
QBluetoothServiceInfo::ServiceDescriptionPrimaryLanguageBase + 0x0001主要语言中对蓝牙服务的描述。
QBluetoothServiceInfo::ServiceProviderPrimaryLanguageBase + 0x0002提供蓝牙服务主要语言的公司/实体名称。

注意:在Windows上,当创建服务时,ServiceClassIds 和 ProtocolDescriptorList 将自动设置为默认值。手动设置这些属性的值将不起作用,并且在平台上可能导致意外结果。

enum QBluetoothServiceInfo::Protocol

此枚举描述了服务使用的套接字协议。

常量描述
QBluetoothServiceInfo::UnknownProtocol0服务使用一个未知的套接字协议。
QBluetoothServiceInfo::L2capProtocol1服务使用 L2CAP 套接字协议。此协议在 Android 上不支持直接套接字连接。
QBluetoothServiceInfo::RfcommProtocol2服务使用 RFCOMM 套接字协议。

成员函数文档

QBluetoothServiceInfo::QBluetoothServiceInfo()

构造一个新的无效 QBluetoothServiceInfo;

QBluetoothServiceInfo::QBluetoothServiceInfo(const QBluetoothServiceInfo &other)

构造一个新的 QBluetoothServiceInfo,它是 other 的副本。

两个副本继续共享相同的基本数据,不会在写入时分离。

[noexcept] QBluetoothServiceInfo::~QBluetoothServiceInfo()

销毁QBluetoothServiceInfo对象。

QVariant QBluetoothServiceInfo::attribute(quint16 attributeId) const

返回属性 attributeId 的值。

另请参阅:setAttribute().

QList<quint16> QBluetoothServiceInfo::attributes() const

返回 QBluetoothServiceInfo 对象具有的所有属性 ID 的列表。

bool QBluetoothServiceInfo::contains(quint16 attributeId) const

如果 QBluetoothServiceInfo 对象包含属性 attributeId,则返回 true,否则返回 false。

QBluetoothDeviceInfo QBluetoothServiceInfo::device() const

返回提供此服务的蓝牙设备的地址。

另请参阅:setDevice().

bool QBluetoothServiceInfo::isComplete() const

如果 QBluetoothServiceInfo 对象被认为是完整的,则返回 true,否则返回 false。

一个完整的 QBluetoothServiceInfo 对象包含一个 ProtocolDescriptorList 属性。

bool QBluetoothServiceInfo::isRegistered() const

如果服务信息已注册到平台的 Service Discovery Protocol (SDP) 实现,则返回 true,否则返回 false。

bool QBluetoothServiceInfo::isValid() const

如果 QBluetoothServiceInfo 对象是有效的,则返回 true,否则返回 false。

无效的 QBluetoothServiceInfo 对象将没有属性。

QBluetoothServiceInfo::Sequence QBluetoothServiceInfo::protocolDescriptor(QBluetoothUuid::ProtocolUuid protocol) const

返回协议 protocol 的协议参数作为 QBluetoothServiceInfo::Sequence

如果 protocol 不受支持,将返回一个空的 QBluetoothServiceInfo::Sequence

int QBluetoothServiceInfo::protocolServiceMultiplexer() const

这是一个方便函数。如果服务支持 L2CAP 协议,则返回协议/服务多路复用器,否则返回 -1。

此函数等同于从 QBluetoothServiceInfo::Sequence 提取信息,该信息由 QBluetoothServiceInfo::attribute(QBluetoothServiceInfo::ProtocolDescriptorList) 返回。

bool QBluetoothServiceInfo::registerService(const QBluetoothAddress &localAdapter = QBluetoothAddress())

将此服务注册到平台的 Service Discovery Protocol (SDP) 实现,使其在执行服务发现时可以被其他设备找到。如果服务成功注册,则返回 true,否则返回 false。一旦注册,就不能再修改记录。必须先注销服务,然后再使用更改重新注册。

localAdapter 参数确定服务应在其中注册的本地蓝牙适配器。如果 localAdapternull,则使用默认蓝牙适配器。如果此服务信息对象已通过本地适配器注册,并且使用不同本地适配器调用此函数,则将删除以前的注册,并使用新适配器重新注册服务。

void QBluetoothServiceInfo::removeAttribute(quint16 attributeId)

QBluetoothServiceInfo 对象中删除属性 attributeId

如果服务信息已与平台的 SDP 数据库注册,则直到再次调用 registerService() 前,都不会更新数据库条目。

int QBluetoothServiceInfo::serverChannel() const

这是一个方便函数。如果服务支持 RFCOMM 协议,则返回服务器通道,否则返回 -1。

此函数等同于从 QBluetoothServiceInfo::attribute(QBluetootherServiceInfo::ProtocolDescriptorList) 返回的 QBluetoothServiceInfo::Sequence 中提取信息。

quint8 QBluetoothServiceInfo::serviceAvailability() const

这是一个方便函数。它等同于调用 attribute(QBluetoothServiceInfo::ServiceAvailability).toUInt()。

返回服务的可用性。

另请参阅setServiceAvailability() 和 attribute()。

QList<QBluetoothUuid> QBluetoothServiceInfo::serviceClassUuids() const

返回描述服务类 UUID 的列表,该服务等遵从这些服务类。

这是一个便利函数。它等同于调用attribute(QBluetoothServiceInfo::ServiceClassIds)().value(<QBluetoothServiceInfo::Sequence>),然后遍历其QBluetoothUuid条目。

另请参阅 attribute

QString QBluetoothServiceInfo::serviceDescription() const

这是一个便利函数。它等同于调用attribute(QBluetoothServiceInfo::ServiceDescription)().toString()。

返回主语言的业务描述。

另请参阅 setServiceDescriptionattribute

QString QBluetoothServiceInfo::serviceName() const

这是一个便利函数。它等同于调用attribute(QBluetoothServiceInfo::ServiceName)().toString()。

返回主语言的业务名称。

另请参阅 setServiceNameattribute

QString QBluetoothServiceInfo::serviceProvider() const

这是一个便利函数。它等同于调用attribute(QBluetoothServiceInfo::ServiceProvider)().toString()。

返回主语言的业务提供商。

另请参阅 setServiceProviderattribute

QBluetoothUuid QBluetoothServiceInfo::serviceUuid() const

这是一个便利函数。它等同于调用attribute(QBluetoothServiceInfo::ServiceId)().value(<QBluetoothUuid>())。

返回服务的自定义UUID。此UUID可能为空。基于蓝牙SIG标准的UUID应通过serviceClassUuids()检索。

另请参阅 setServiceUuidattribute

void QBluetoothServiceInfo::setAttribute(quint16 attributeId, const QVariant &value)

attributeId标识的属性设置为value

如果服务信息已注册到平台的SDP数据库中,则不会更新数据库条目,直到再次调用registerService()。

注意: 如果某个属性期望字节数组值的编码(例如蓝牙HID服务),则应将其设置为QByteArray

另请参阅 attributeisRegisteredregisterService

void QBluetoothServiceInfo::setAttribute(quint16 attributeId, const QBluetoothUuid &value)

这是一个便利函数。

attributeId标识的属性设置为value

如果服务信息已注册到平台的SDP数据库中,则不会更新数据库条目,直到再次调用registerService()。

void QBluetoothServiceInfo::setAttribute(quint16 attributeId, const QBluetoothServiceInfo::Sequence &value)

这是一个便利函数。

attributeId标识的属性设置为value

如果服务信息已注册到平台的SDP数据库中,则不会更新数据库条目,直到再次调用registerService()。

void QBluetoothServiceInfo::setAttribute(quint16 attributeId, const QBluetoothServiceInfo::Alternative &value)

这是一个便利函数。

attributeId标识的属性设置为value

如果服务信息已注册到平台的SDP数据库中,则不会更新数据库条目,直到再次调用registerService()。

void QBluetoothServiceInfo::setDevice(const QBluetoothDeviceInfo &device)

将提供此服务的蓝牙设备设置为device

另请参阅 device()。

void QBluetoothServiceInfo::setServiceAvailability(quint8 availability)

这是一个便利函数。它与调用setAttribute(QBluetoothServiceInfo::ServiceAvailability, availability)等价。

将服务的可用性设置为availability

另请参阅 serviceAvailability() 和 setAttribute

void QBluetoothServiceInfo::setServiceDescription(const QString &description)

这是一个便利函数。它与调用setAttribute(QBluetoothServiceInfo::ServiceDescription, description)等价。

将主要语言的-service描述设置为description

另请参阅 serviceDescription() 和 setAttribute

void QBluetoothServiceInfo::setServiceName(const QString &name)

这是一个便利函数。它与调用setAttribute(QBluetoothServiceInfo::ServiceName, name)等价。

将主要语言的服务名称设置为name

另请参阅 serviceName() 和 setAttribute

void QBluetoothServiceInfo::setServiceProvider(const QString &provider)

这是一个便利函数。它与调用setAttribute(QBluetoothServiceInfo::ServiceProvider, provider)等价。

将主要语言的服务提供者设置为provider

另请参阅 serviceProvider() 和 setAttribute

void QBluetoothServiceInfo::setServiceUuid(const QBluetoothUuid &uuid)

这是一个便利函数。它与调用setAttribute(QBluetoothServiceInfo::ServiceId, uuid)等价。

将自定义服务UUID设置为uuid。此函数不应用于设置标准化的服务UUID。

另请参阅 serviceUuid() 和 setAttribute

QBluetoothServiceInfo::Protocol QBluetoothServiceInfo::socketProtocol() const

返回QBluetoothServiceInfo对象使用的协议。

bool QBluetoothServiceInfo::unregisterService()

此函数将从平台的Service Discovery Protocol (SDP) 实现中注销此服务。之后,服务将无法通过服务发现被其他设备找到。

如果服务成功注销,则返回true,否则返回false。

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

复制other并将其分配给此QBluetoothServiceInfo对象。这两个副本将继续共享相同的服务和注册详细信息。

© 2024 The Qt Company Ltd. 包含在此处的文档贡献是各自所有者的版权。提供的文档受GNU自由文档许可版1.3条款的许可,由自由软件基金会发布。Qt及其相应徽标为芬兰和/或其他地区的The Qt Company Ltd.的商标。所有其他商标均为其各自所有者的财产。