QNearFieldManager 类
QNearFieldManager 类提供了对 NFC 事件通知的访问。更多...
头文件 | #include <QNearFieldManager> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Nfc) target_link_libraries(mytarget PRIVATE Qt6::Nfc) |
qmake | QT += nfc |
继承 | QObject |
公共类型
枚举类型 | AdapterState { 离线, 打开中, 在线, 关闭中 } |
公共函数
QNearFieldManager(QObject *parent = nullptr) | |
虚拟 | ~QNearFieldManager() |
(自 6.2) bool | isEnabled() const |
bool | isSupported(QNearFieldTarget::AccessMethod accessMethod = QNearFieldTarget::AnyAccess) const |
(自 6.2) void | setUserInformation(const QString &message) |
bool | startTargetDetection(QNearFieldTarget::AccessMethod accessMethod) |
void | stopTargetDetection(const QString &errorMessage = QString()) |
信号
void | adapterStateChanged(QNearFieldManager::AdapterState state) |
void | targetDetected(QNearFieldTarget *target) |
(自 6.2) void | targetDetectionStopped() |
void | targetLost(QNearFieldTarget *target) |
详细描述
NFC 论坛设备支持两种通信模式。第一种模式,对等通信,用于在两个 NFC 论坛设备之间通信。第二种模式,主/从通信,用于在 NFC 论坛设备与 NFC 论坛标签或非接触式卡之间通信。当一个目标设备进入通信范围时,会发出 targetDetected() 信号。可以从连接到该信号的槽中启动通信。
NFC 论坛设备通常在主/从通信中作为主设备运行。一些设备也能够作为从设备运行,称为卡片模拟模式。在此模式下,本地 NFC 设备模拟一个 NFC 论坛标签或非接触式卡。
应用程序可以连接到targetDetected() 和targetLost() 信号,以在NFC论坛标签进入或离开近场时接收通知。在发出这些信号之前,必须使用startTargetDetection() 函数启动目标检测。可以使用 stopTargetDetection() 函数停止目标检测。当不再需要目标时,应该删除目标,因为其他应用程序可能无法访问该目标。
成员类型文档
enum class QNearFieldManager::AdapterState
此枚举描述了NFC适配器可以具有的不同状态。
常量 | 值 | 描述 |
---|---|---|
QNearFieldManager::AdapterState::Offline | 1 | NFC适配器已离线。 |
QNearFieldManager::AdapterState::TurningOn | 2 | NFC适配器正在打开。 |
QNearFieldManager::AdapterState::Online | 3 | NFC适配器已连接在线。 |
QNearFieldManager::AdapterState::TurningOff | 4 | NFC适配器正在关闭。 |
成员函数文档
[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。
void QNearFieldManager::stopTargetDetection(const QString &errorMessage = QString())
停止检测目标。在发出startTargetDetection()之前的调用之前,将不再发出targetDetected() 信号。先前检测到的目标仍然有效。
注意:在iOS上,检测到的目标在此次调用后将无效(例如,尝试写入或读取NDEF消息将导致错误)。
如果提供了errorMessage,这将是系统的一个提示,表示应用程序的目标没有达到。将errorMessage和匹配的错误图标显示给用户。使用空errorMessage调用此函数表示操作成功结束;否则应将errorMessage传递给此函数。
注意:目前,errorMessage仅在iOS上有效,因为系统在扫描期间显示弹出窗口,其中可见errorMessage。其他平台将忽略此参数。
[信号]
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的商标。所有其他商标均为其各自所有者的财产。