QNearFieldManager Class

QNearFieldManager クラスは、NFC イベントの通知へのアクセスを提供します。詳細...

ヘッダー #include <QNearFieldManager>
CMake: find_package(Qt6 REQUIRED COMPONENTS Nfc)
target_link_libraries(mytarget PRIVATE Qt6::Nfc)
qmake: QT += nfc
継承: QObject

パブリックな型

enum class AdapterState { Offline, TurningOn, Online, TurningOff }

パブリック関数

QNearFieldManager(QObject *parent = nullptr)
virtual ~QNearFieldManager()
(since 6.2) bool isEnabled() const
bool isSupported(QNearFieldTarget::AccessMethod accessMethod = QNearFieldTarget::AnyAccess) const
(since 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)
(since 6.2) void targetDetectionStopped()
void targetLost(QNearFieldTarget *target)

詳細説明

NFC フォーラム・デバイスは 2 つの通信モードをサポートします。最初のモードであるピアツーピア通信は、2 つの NFC フォーラム装置間の通信に使用されます。第 2 のモードであるマスタ/スレーブ通信は、NFC フォーラム装置と NFC フォーラム・タグまたは 非接触型カードとの間の通信に使用されます。targetDetected信号はターゲット装置が通信範囲に入ると発せられます。通信はこの信号に接続されたスロットから開始することができます。

NFCフォーラム・デバイスは通常、マスタ/スレーブ通信においてマスタとして動作します。一部のデバイスはスレーブとして動作することも可能で、カード・エミュレーション・モードと呼ばれます。このモードでは、ローカルNFC デバイスはNFC フォーラムタグまたは非接触型カードをエミュレートします。

アプリケーションはtargetDetected() およびtargetLost() 信号に接続することができ、NFC フォーラムタグが近接または離反する際に通知を受けることができます。これらの信号が発信される前に、startTargetDetection ()機能でターゲット検出を開始する必要があります。ターゲット検出はstopTargetDetection() 関数で停止できます。ターゲットが不要になったら、他のアプリケーションがターゲットへのアクセスをブロック する可能性があるため、ターゲットは削除する必要があります。

Linux での NFC

Linux NFC プロジェクトは、Linux プラットフォーム上で NFC をサポートするソフトウェアを提供 しています。neard デーモンは、DBus インターフェース経由でサポートされているハード ウェアにアクセスできるようにします。QtNfc は neard バージョン 0.14 を必要とし、ソースからビルドするか、適切な Linux パッケージ・マネージャー経由でインストールすることができます。現在、すべての API 機能がサポートされているわけではありません。QtNfc が DBus インターフェースにアクセスできるようにするには、 neard デーモンが起動している必要があります。問題が発生した場合は、'qt.nfc.neard' のカテゴリー別ロギングを有効にすることで、デバッグ出力を有効にすることができます。

メンバータイプのドキュメント

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では、このmessage は、スキャンが正常に完了したときに表示される警告メッセージにマッピングされます。他のプラットフォームではmessage は無視されます。

この関数は Qt 6.2 で導入されました。

startTargetDetection() およびstopTargetDetection()も参照してください

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

ターゲットの検出を開始し、ターゲットの検出が正常に開始された場合はtrue を返し、そうでない場合はfalse を返す。ターゲットが近くにいるときにtargetDetected() シグナルを発するようにする。指定されたaccessMethod を持つタグのみが報告される。ターゲット検出は、stopTargetDetection() が呼び出されるまで継続する。

異なるaccessMethod を持つターゲットを検出するには、最初にstopTargetDetection() を呼び出す必要があります。

注: iOS では、NdefAccess と TagTypeSpecificAccess の両方に対して同時にターゲット検出を開始することはできません。そのため、AnyAccess が選択されると、代わりに NdefAccess が使用されます。

注意: neardを使用するプラットフォームでは、タグが検出されるとすぐにターゲット検出が停止します。

stopTargetDetection()も参照してください

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

ターゲットの検出を停止する。startTargetDetection() を再度呼び出すまで、targetDetected() シグナルは発せられなくなる。以前に検出されたターゲットはまだ有効です。

注意: iOSでは、この呼び出しの後、検出されたターゲットは無効になります(たとえば、NDEFメッセージを書き込んだり読み込んだりしようとするとエラーになります)。

errorMessage が提供された場合、アプリケーションの目標が達成されなかったことをシステムに示すヒントとなる。ユーザーには、errorMessage と一致するエラー・アイコンが表示される。空のerrorMessage を指定してこの関数を呼び出すと、操作が正常に終了したことになります。そうでない場合は、errorMessage をこの関数に渡す必要があります。

注意: 現在のところ、errorMessage は iOS でのみ効果があります。これは、スキャン中にシステムがポップアップを表示し、errorMessage が表示されるためです。他のプラットフォームでは、このパラメータは無視される。

setUserInformation()も参照のこと

[signal] void QNearFieldManager::targetDetected(QNearFieldTarget *target)

このシグナルはターゲットが検出されるたびに発せられる。target パラメータは検出されたターゲットを表す。

このシグナルは、検出されたすべてのターゲットに対して発せられる。

QNearFieldManager は の所有権を保持するが、 デストラクタが呼ばれるまで破棄されない。所有権は ()を呼び出すことで移譲できる。target QNearFieldManager setParent

このシグナルに接続されたスロットからtarget を削除しないで、代わりにdeleteLater() を呼び出す。

注意: target が近傍から移動する前に削除された場合、targetLost() シグナルは発せられない。

targetLost()も参照のこと

[signal, since 6.2] void QNearFieldManager::targetDetectionStopped()

このシグナルは、ターゲット検出が停止するたびに発せられる。

注意: 多くの場合、このシグナルはstopTargetDetection() が呼び出されたときに発せられる。また、iOS では、スキャン中にシステムが表示するポップアップで検出を停止することができます。

この関数は Qt 6.2 で導入されました。

[signal] void QNearFieldManager::targetLost(QNearFieldTarget *target)

このシグナルは、ターゲットが近接から外れるたびに発せられる。target パラメータは失われたターゲットを表す。

このシグナルに接続されているスロットからtarget を削除しないでください。代わりにdeleteLater() を使用してください。

QNearFieldTarget::disconnected()も参照

© 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.