QNearFieldManager 类

QNearFieldManager 类提供了对 NFC 事件通知的访问。更多...

头文件 #include <QNearFieldManager>
CMakefind_package(Qt6 REQUIRED COMPONENTS Nfc)
target_link_libraries(mytarget PRIVATE Qt6::Nfc)
qmakeQT += nfc
继承 QObject

公共类型

枚举类型AdapterState { 离线, 打开中, 在线, 关闭中 }

公共函数

QNearFieldManager(QObject *parent = nullptr)
虚拟~QNearFieldManager()
(自 6.2) boolisEnabled() const
boolisSupported(QNearFieldTarget::AccessMethod accessMethod = QNearFieldTarget::AnyAccess) const
(自 6.2) voidsetUserInformation(const QString &message)
boolstartTargetDetection(QNearFieldTarget::AccessMethod accessMethod)
voidstopTargetDetection(const QString &errorMessage = QString())

信号

voidadapterStateChanged(QNearFieldManager::AdapterState state)
voidtargetDetected(QNearFieldTarget *target)
(自 6.2) voidtargetDetectionStopped()
voidtargetLost(QNearFieldTarget *target)

详细描述

NFC 论坛设备支持两种通信模式。第一种模式,对等通信,用于在两个 NFC 论坛设备之间通信。第二种模式,主/从通信,用于在 NFC 论坛设备与 NFC 论坛标签或非接触式卡之间通信。当一个目标设备进入通信范围时,会发出 targetDetected() 信号。可以从连接到该信号的槽中启动通信。

NFC 论坛设备通常在主/从通信中作为主设备运行。一些设备也能够作为从设备运行,称为卡片模拟模式。在此模式下,本地 NFC 设备模拟一个 NFC 论坛标签或非接触式卡。

应用程序可以连接到targetDetected() 和targetLost() 信号,以在NFC论坛标签进入或离开近场时接收通知。在发出这些信号之前,必须使用startTargetDetection() 函数启动目标检测。可以使用 stopTargetDetection() 函数停止目标检测。当不再需要目标时,应该删除目标,因为其他应用程序可能无法访问该目标。

成员类型文档

enum class QNearFieldManager::AdapterState

此枚举描述了NFC适配器可以具有的不同状态。

常量描述
QNearFieldManager::AdapterState::Offline1NFC适配器已离线。
QNearFieldManager::AdapterState::TurningOn2NFC适配器正在打开。
QNearFieldManager::AdapterState::Online3NFC适配器已连接在线。
QNearFieldManager::AdapterState::TurningOff4NFC适配器正在关闭。

成员函数文档

[explicit] QNearFieldManager::QNearFieldManager(QObject *parent = nullptr)

使用 parent 构造一个新近场管理器。

[virtual noexcept] QNearFieldManager::~QNearFieldManager()

销毁近场管理器。

[signal] void QNearFieldManager::adapterStateChanged(QNearFieldManager::AdapterState state)

当NFC适配器的 state 发生变化时,发出此信号。

注意:当前,仅在Android上发出此信号。

[since 6.2] bool QNearFieldManager::isEnabled() const

如果设备有NFC适配器并且它已经打开,则返回 true;否则返回 false

此函数自Qt 6.2以来引入。

另请参阅:isSupported()。

bool QNearFieldManager::isSupported(QNearFieldTarget::AccessMethod accessMethod = QNearFieldTarget::AnyAccess) const

如果底层设备具有NFC适配器,则返回 true;否则返回 false。如果提供了 accessMethod,则仅在NFC适配器支持提供的 accessMethod 时返回 true

另请参阅:isEnabled()。

[since 6.2] void QNearFieldManager::setUserInformation(const QString &message)

设置系统显示给用户的消息。如果目标检测正在运行,则 message 将立即更新,可以用作进度消息。在调用startTargetDetection() 时无错误消息之前设置的最后一个消息用作成功消息。如果目标检测未运行,则 message 将用作下次启动检测时的初始消息。默认情况下不向用户显示任何消息。

注意:当前,此功能仅在iOS上有效,因为系统在扫描过程中会显示弹出窗口。在iOS上,此消息被映射到扫描成功完成后显示的提示消息。其他平台将忽略消息

此函数自Qt 6.2以来引入。

参阅:startTargetDetection() 和 stopTargetDetection

bool QNearFieldManager::startTargetDetection(QNearFieldTarget::AccessMethod accessMethod)

开始检测目标并返回 true 表示目标检测成功启动;否则返回 false。当目标接近时会触发targetDetected() 信号。只有具有给定 accessMethod 的标签才会被传递。检测活动将继续到stopTargetDetection()被调用。

要检测具有不同 accessMethod 的目标,必须先调用stopTargetDetection()。

注意:在iOS上,无法同时开始NdefAccess和TagTypeSpecificAccess的目标检测。所以如果选择AnyAccess,则将使用NdefAccess。

参阅:stopTargetDetection

void QNearFieldManager::stopTargetDetection(const QString &errorMessage = QString())

停止检测目标。在发出startTargetDetection()之前的调用之前,将不再发出targetDetected() 信号。先前检测到的目标仍然有效。

注意:在iOS上,检测到的目标在此次调用后将无效(例如,尝试写入或读取NDEF消息将导致错误)。

如果提供了errorMessage,这将是系统的一个提示,表示应用程序的目标没有达到。将errorMessage和匹配的错误图标显示给用户。使用空errorMessage调用此函数表示操作成功结束;否则应将errorMessage传递给此函数。

注意:目前,errorMessage仅在iOS上有效,因为系统在扫描期间显示弹出窗口,其中可见errorMessage。其他平台将忽略此参数。

参阅:setUserInformation

[信号] void QNearFieldManager::targetDetected(QNearFieldTarget *target)

每当检测到目标时都会发出此信号。参数target代表检测到的目标。

此信号将针对所有检测到的目标发出。

QNearFieldManager保留对 target 的所有权,但是它不会在QNearFieldManager析构函数被调用之前被销毁。所有权可以通过调用setParent()来转移。

不要从连接到此信号的槽中删除target,而是调用deleteLater()。

注意:如果目标在移出接近范围之前被删除,则不会发出targetLost() 信号。

另请参阅 targetLost().

[信号,自6.2以来] void QNearFieldManager::targetDetectionStopped()

每当目标检测停止时,此信号都会发出。

注意: 主要在调用 stopTargetDetection() 时发出此信号。此外,用户可以在iOS扫描期间系统显示的弹出窗口中停止检测,这也会导致该信号发出。

此函数自Qt 6.2以来引入。

[信号] void QNearFieldManager::targetLost(QNearFieldTarget *target)

当目标移出接近范围时,此信号会发出。参数 target 代表丢失的目标。

不要从连接到此信号的任务槽中删除 target,而应使用 deleteLater()。

另请参阅 QNearFieldTarget::disconnected().

© 2024 The Qt Company Ltd. 本文档中包含的贡献是各自所有者的版权。本文档按自由软件基金会发布的 GNU自由文档许可证1.3版本 的条款颁发。Qt及其相应的标志是芬兰和/或全球其他地区的The Qt Company Ltd的商标。所有其他商标均为其各自所有者的财产。