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 Forum デバイスは、2 つの通信モードをサポートしています。1 つ目のモードであるピアツーピア通信は、2 つの NFC Forum デバイス間の通信に使用されます。2 つ目のモードであるマスター/スレーブ通信は、NFC Forum デバイスと NFC Forum タグまたは非接触型カード間の通信に使用されます。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::Offline | 1 | NFC アダプタはオフラインです。 |
QNearFieldManager::AdapterState::TurningOn | 2 | NFC アダプタが起動中です。 |
QNearFieldManager::AdapterState::Online | 3 | NFC アダプタがオンラインです。 |
QNearFieldManager::AdapterState::TurningOff | 4 | NFC アダプタがオフになっています。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では、この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()も参照してください 。
© 2026 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.