QNearFieldManager Class

Die Klasse QNearFieldManager ermöglicht den Zugriff auf Benachrichtigungen für NFC-Ereignisse. Mehr...

Kopfzeile: #include <QNearFieldManager>
CMake: find_package(Qt6 REQUIRED COMPONENTS Nfc)
target_link_libraries(mytarget PRIVATE Qt6::Nfc)
qmake: QT += nfc
Vererbungen: QObject

Öffentliche Typen

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

Öffentliche Funktionen

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())

Signale

void adapterStateChanged(QNearFieldManager::AdapterState state)
void targetDetected(QNearFieldTarget *target)
(since 6.2) void targetDetectionStopped()
void targetLost(QNearFieldTarget *target)

Detaillierte Beschreibung

Die Geräte des NFC-Forums unterstützen zwei Arten der Kommunikation. Der erste Modus, die Peer-to-Peer-Kommunikation, wird für die Kommunikation zwischen zwei NFC-Forum-Geräten verwendet. Der zweite Modus, die Master/Slave-Kommunikation, wird für die Kommunikation zwischen einem NFC-Forum-Gerät und einem NFC-Forum-Tag oder einer kontaktlosen Karte verwendet. Das Signal targetDetected() wird ausgesendet, wenn ein Zielgerät in Kommunikationsreichweite kommt. Die Kommunikation kann von dem mit diesem Signal verbundenen Slot aus eingeleitet werden.

NFC-Forum-Geräte arbeiten in der Regel als Master in der Master/Slave-Kommunikation. Einige Geräte sind auch in der Lage, als Slave zu arbeiten, im so genannten Kartenemulationsmodus. In diesem Modus emuliert das lokale NFC-Gerät ein NFC-Forum-Tag oder eine kontaktlose Karte.

Anwendungen können sich mit den Signalen targetDetected() und targetLost() verbinden, um benachrichtigt zu werden, wenn ein NFC Forum Tag in die Nähe kommt oder sie verlässt. Bevor diese Signale ausgesendet werden, muss die Zielerfassung mit der Funktion startTargetDetection() gestartet werden. Die Zielerfassung kann mit der Funktion stopTargetDetection() gestoppt werden. Wenn das Ziel nicht mehr benötigt wird, sollte es gelöscht werden, da andere Anwendungen möglicherweise nicht mehr auf das Ziel zugreifen können.

NFC unter Linux

Das Linux-NFC-Projekt bietet Software zur Unterstützung von NFC auf Linux-Plattformen. Der neard-Daemon ermöglicht den Zugriff auf die unterstützte Hardware über DBus-Schnittstellen. QtNfc erfordert neard Version 0.14, die aus dem Quellcode erstellt oder über den entsprechenden Linux-Paketmanager installiert werden kann. Derzeit werden nicht alle API-Funktionen unterstützt. Um QtNfc den Zugriff auf die DBus-Schnittstellen zu ermöglichen, muss der neard-Daemon laufen. Im Falle von Problemen kann die Debug-Ausgabe aktiviert werden, indem die kategorisierte Protokollierung für 'qt.nfc.neard' eingeschaltet wird.

Member Typ Dokumentation

enum class QNearFieldManager::AdapterState

Diese Aufzählung beschreibt die verschiedenen Zustände, die ein NFC-Adapter haben kann.

KonstanteWertBeschreibung
QNearFieldManager::AdapterState::Offline1Der nfc-Adapter ist offline.
QNearFieldManager::AdapterState::TurningOn2Der nfc-Adapter ist eingeschaltet.
QNearFieldManager::AdapterState::Online3Der nfc-Adapter ist online.
QNearFieldManager::AdapterState::TurningOff4Der nfc-Adapter schaltet sich aus.

Dokumentation der Mitgliedsfunktionen

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

Konstruiert einen neuen Nahfeldmanager mit parent.

[virtual noexcept] QNearFieldManager::~QNearFieldManager()

Zerstört den Nahfeldmanager.

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

Dieses Signal wird ausgegeben, wenn sich die state des NFC-Adapters ändert.

Hinweis: Derzeit wird dieses Signal nur unter Android ausgegeben.

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

Gibt true zurück, wenn das Gerät einen NFC-Adapter hat und dieser eingeschaltet ist; andernfalls wird false zurückgegeben.

Diese Funktion wurde in Qt 6.2 eingeführt.

Siehe auch isSupported().

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

Gibt true zurück, wenn das zugrundeliegende Gerät einen NFC-Adapter hat; andernfalls wird false zurückgegeben. Wenn ein accessMethod angegeben wird, gibt die Funktion true nur zurück, wenn der NFC-Adapter den angegebenen accessMethod unterstützt.

Siehe auch isEnabled().

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

Legt die Meldung fest, die das System dem Benutzer anzeigt. Wenn die Zielerkennung läuft, wird die message sofort aktualisiert und kann als Fortschrittsmeldung verwendet werden. Die letzte Nachricht, die vor einem Aufruf von startTargetDetection() ohne Fehlermeldung gesetzt wurde, wird als Erfolgsmeldung verwendet. Wenn die Zielerkennung nicht läuft, wird message als Anfangsmeldung verwendet, wenn die nächste Erkennung gestartet wird. Standardmäßig wird dem Benutzer keine Meldung angezeigt.

Hinweis: Derzeit hat diese Funktion nur unter iOS eine Wirkung, da das System während des Scans ein Popup anzeigt. Unter iOS ist diese message der Warnmeldung zugeordnet, die nach erfolgreichem Abschluss des Scans angezeigt wird. Auf anderen Plattformen wird message ignoriert.

Diese Funktion wurde in Qt 6.2 eingeführt.

Siehe auch startTargetDetection() und stopTargetDetection().

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

Beginnt mit der Zielerfassung und gibt true zurück, wenn die Zielerfassung erfolgreich gestartet wurde; andernfalls wird false zurückgegeben. Bewirkt, dass das Signal targetDetected() ausgegeben wird, wenn sich ein Ziel in der Nähe befindet. Es werden nur Tags mit dem angegebenen accessMethod gemeldet. Die Zielerfassung wird fortgesetzt, bis stopTargetDetection() aufgerufen wird.

Um Ziele mit einem anderen accessMethod zu erkennen, muss zuerst stopTargetDetection() aufgerufen werden.

Hinweis: Unter iOS ist es nicht möglich, die Zielerkennung für NdefAccess und TagTypeSpecificAccess gleichzeitig zu starten. Wenn also AnyAccess ausgewählt ist, wird stattdessen NdefAccess verwendet.

Hinweis: Auf Plattformen, die neard verwenden, wird die Zielerkennung beendet, sobald ein Tag erkannt wurde.

Siehe auch stopTargetDetection().

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

Beendet die Erkennung von Zielen. Das Signal targetDetected() wird nicht mehr ausgegeben, bis ein weiterer Aufruf von startTargetDetection() erfolgt. Zuvor erkannte Ziele sind weiterhin gültig.

Hinweis: Unter iOS werden erkannte Ziele nach diesem Aufruf ungültig (z. B. führt der Versuch, NDEF-Nachrichten zu schreiben oder zu lesen, zu einem Fehler).

Wenn ein errorMessage bereitgestellt wird, ist dies ein Hinweis für das System, dass das Ziel der Anwendung nicht erreicht wurde. Die errorMessage und ein entsprechendes Fehlersymbol werden dem Benutzer angezeigt. Der Aufruf dieser Funktion mit einem leeren errorMessage impliziert ein erfolgreiches Ende der Operation; andernfalls sollte ein errorMessage an diese Funktion übergeben werden.

Hinweis: Derzeit hat errorMessage nur unter iOS eine Auswirkung, da das System während des Scans ein Popup anzeigt, in dem errorMessage sichtbar ist. Auf anderen Plattformen wird dieser Parameter ignoriert.

Siehe auch setUserInformation().

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

Dieses Signal wird ausgegeben, wenn ein Ziel erkannt wird. Der Parameter target steht für das erkannte Ziel.

Dieses Signal wird für alle erkannten Ziele ausgegeben.

QNearFieldManager Der Parameter target behält den Besitz von bei, wird jedoch nicht zerstört, bis der Destruktor QNearFieldManager aufgerufen wird. Die Eigentümerschaft kann durch den Aufruf von setParent() übertragen werden.

Löschen Sie target nicht aus dem mit diesem Signal verbundenen Slot, sondern rufen Sie deleteLater() auf.

Hinweis: Wenn target gelöscht wird, bevor es aus der Nähe kommt, wird das Signal targetLost() nicht ausgegeben.

Siehe auch targetLost().

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

Dieses Signal wird ausgegeben, wenn die Zielerfassung gestoppt wird.

Hinweis: Meistens wird dieses Signal ausgegeben, wenn stopTargetDetection() aufgerufen wurde. Zusätzlich kann der Benutzer die Erkennung unter iOS in einem Popup-Fenster stoppen, das vom System während des Scans angezeigt wird, was ebenfalls zum Ausgeben dieses Signals führt.

Diese Funktion wurde in Qt 6.2 eingeführt.

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

Dieses Signal wird ausgesendet, wenn sich ein Ziel aus der Nähe entfernt. Der Parameter target steht für das verlorene Ziel.

Löschen Sie nicht target aus dem mit diesem Signal verbundenen Slot, sondern verwenden Sie deleteLater().

Siehe auch 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.