QBluetoothDeviceDiscoveryAgent Class
Die Klasse QBluetoothDeviceDiscoveryAgent findet die Bluetooth-Geräte in der Nähe. Mehr...
Header: | #include <QBluetoothDeviceDiscoveryAgent> |
qmake: | QT += bluetooth |
Inherits: | QObject |
Öffentliche Typen
enum | DiscoveryMethod { NoMethod, ClassicMethod, LowEnergyMethod } |
flags | DiscoveryMethods |
enum | Error { NoError, PoweredOffError, InputOutputError, InvalidBluetoothAdapterError, UnsupportedPlatformError, …, UnknownError } |
Öffentliche Funktionen
QBluetoothDeviceDiscoveryAgent(QObject *parent = nullptr) | |
QBluetoothDeviceDiscoveryAgent(const QBluetoothAddress &deviceAdapter, QObject *parent = nullptr) | |
virtual | ~QBluetoothDeviceDiscoveryAgent() |
QList<QBluetoothDeviceInfo> | discoveredDevices() const |
QBluetoothDeviceDiscoveryAgent::Error | error() const |
QString | errorString() const |
bool | isActive() const |
int | lowEnergyDiscoveryTimeout() const |
void | setLowEnergyDiscoveryTimeout(int timeout) |
Öffentliche Slots
Signale
void | canceled() |
void | deviceDiscovered(const QBluetoothDeviceInfo &info) |
void | deviceUpdated(const QBluetoothDeviceInfo &info, QBluetoothDeviceInfo::Fields updatedFields) |
(since 6.2) void | errorOccurred(QBluetoothDeviceDiscoveryAgent::Error error) |
void | finished() |
Statische öffentliche Mitglieder
QBluetoothDeviceDiscoveryAgent::DiscoveryMethods | supportedDiscoveryMethods() |
Detaillierte Beschreibung
Ermittelt die Bluetooth-Geräte in der Nähe:
- Erstellen einer Instanz von QBluetoothDeviceDiscoveryAgent,
- Verbinden Sie sich entweder mit den Signalen deviceDiscovered() oder finished(),
- und rufen Sie start() auf.
void MyClass::startDeviceDiscovery() { // Erstellen Sie einen DiscoveryAgent und verbinden Sie sich mit seinen Signalen QBluetoothDeviceDiscoveryAgent *discoveryAgent = new QBluetoothDeviceDiscoveryAgent(this); connect(discoveryAgent, SIGNAL(deviceDiscovered(QBluetoothDeviceInfo)), this, SLOT(deviceDiscovered(QBluetoothDeviceInfo))); // Starten Sie eine Entdeckung discoveryAgent->start(); //...}// Lesen Sie in Ihrem lokalen Slot Informationen über die gefundenen Gerätevoid MyClass::deviceDiscovered(const QBluetoothDeviceInfo &Gerät){ qDebug() << "Found new device:" << device.name() << '(' << device.address().toString() << ')'; }
Um Ergebnisse asynchron abzurufen, verbinden Sie sich mit dem Signal deviceDiscovered(). Um eine Liste aller gefundenen Geräte zu erhalten, rufen Sie discoveredDevices() nach dem Signal finished() auf.
Diese Klasse kann verwendet werden, um klassische und Low Energy Bluetooth-Geräte zu erkennen. Der individuelle Gerätetyp kann über das Attribut QBluetoothDeviceInfo::coreConfigurations() ermittelt werden. In den meisten Fällen enthält die von discoveredDevices() zurückgegebene Liste beide Gerätetypen. Allerdings kann nicht jede Plattform beide Gerätetypen erkennen. Auf Plattformen mit dieser Einschränkung (z. B. unterstützt iOS nur die Low-Energy-Erkennung) beschränkt der Erkennungsprozess die Suche auf den Typ, der unterstützt wird.
Hinweis: Seit Android 6.0 erfordert die Fähigkeit, Geräte zu erkennen, ACCESS_COARSE_LOCATION.
Hinweis: Das Win32-Backend unterstützt derzeit weder den Received Signal Strength Indicator (RSSI) noch die herstellerspezifischen Daten oder andere Datenaktualisierungen, die von Bluetooth LE-Geräten nach der Erkennung angekündigt werden.
Dokumentation der Mitgliedstypen
enum QBluetoothDeviceDiscoveryAgent::DiscoveryMethod
flags QBluetoothDeviceDiscoveryAgent::DiscoveryMethods
Diese Aufzählung beschreibt die Art der vom QBluetoothDeviceDiscoveryAgent verwendeten Erkennungsmethode.
Konstante | Wert | Beschreibung |
---|---|---|
QBluetoothDeviceDiscoveryAgent::NoMethod | 0x0 | Die Ermittlung ist nicht möglich. Keine der verfügbaren Methoden wird unterstützt. |
QBluetoothDeviceDiscoveryAgent::ClassicMethod | 0x01 | Der Erkennungsprozess sucht nach Bluetooth Classic (BaseRate) Geräten. |
QBluetoothDeviceDiscoveryAgent::LowEnergyMethod | 0x02 | Der Erkennungsprozess sucht nach Bluetooth Low Energy-Geräten. |
Der Typ DiscoveryMethods ist ein Typedef für QFlags<DiscoveryMethod>. Er speichert eine ODER-Kombination von DiscoveryMethod-Werten.
Siehe auch supportedDiscoveryMethods().
enum QBluetoothDeviceDiscoveryAgent::Error
Zeigt alle möglichen Fehlerbedingungen an, die während der Bluetooth-Geräteerkennung gefunden wurden.
Konstante | Wert | Beschreibung |
---|---|---|
QBluetoothDeviceDiscoveryAgent::NoError | 0 | Es ist kein Fehler aufgetreten. |
QBluetoothDeviceDiscoveryAgent::PoweredOffError | 2 | Der Bluetooth-Adapter ist ausgeschaltet, schalten Sie ihn ein, bevor Sie die Erkennung durchführen. |
QBluetoothDeviceDiscoveryAgent::InputOutputError | 1 | Beim Schreiben oder Lesen des Geräts ist ein Fehler aufgetreten. |
QBluetoothDeviceDiscoveryAgent::InvalidBluetoothAdapterError | 3 | Die übergebene lokale Adapteradresse stimmt nicht mit der physischen Adapteradresse eines lokalen Bluetooth-Geräts überein. |
QBluetoothDeviceDiscoveryAgent::UnsupportedPlatformError (since Qt 5.5) | 4 | Die Geräteerkennung ist auf der aktuellen Plattform nicht möglich oder implementiert. Der Fehler wird in Reaktion auf einen Aufruf von start() gesetzt. Ein Beispiel für einen solchen Fall sind iOS-Versionen unter 5.0, die die Bluetooth-Gerätesuche überhaupt nicht unterstützen. |
QBluetoothDeviceDiscoveryAgent::UnsupportedDiscoveryMethod (since Qt 5.8) | 5 | Eine der angeforderten Suchmethoden wird von der aktuellen Plattform nicht unterstützt. |
QBluetoothDeviceDiscoveryAgent::LocationServiceTurnedOffError (since Qt 6.2) | 6 | Der Ortungsdienst ist ausgeschaltet. Die Verwendung von Bluetooth-APIs ist nicht möglich, wenn der Ortungsdienst ausgeschaltet ist. |
QBluetoothDeviceDiscoveryAgent::MissingPermissionsError (since Qt 6.4) | 7 | Das Betriebssystem fordert Berechtigungen an, die vom Benutzer nicht gewährt wurden. |
QBluetoothDeviceDiscoveryAgent::UnknownError | 100 | Es ist ein unbekannter Fehler aufgetreten. |
Dokumentation der Mitgliedsfunktionen
[explicit]
QBluetoothDeviceDiscoveryAgent::QBluetoothDeviceDiscoveryAgent(QObject *parent = nullptr)
Konstruiert einen neuen Bluetooth-Geräteerkennungsagenten mit dem übergeordneten parent.
[explicit]
QBluetoothDeviceDiscoveryAgent::QBluetoothDeviceDiscoveryAgent(const QBluetoothAddress &deviceAdapter, QObject *parent = nullptr)
Konstruiert einen neuen Bluetooth-Geräteerkennungsagenten mit parent.
Er verwendet deviceAdapter für die Gerätesuche. Wenn deviceAdapter als Standardwert angegeben wird, verwendet das resultierende QBluetoothDeviceDiscoveryAgent-Objekt den lokalen Standard-Bluetooth-Adapter.
Wenn ein deviceAdapter angegeben wird, der kein lokaler Adapter ist, wird error() auf InvalidBluetoothAdapterError gesetzt. Daher wird empfohlen, das Fehlerflag unmittelbar nach Verwendung dieses Konstruktors zu testen.
Siehe auch error().
[virtual noexcept]
QBluetoothDeviceDiscoveryAgent::~QBluetoothDeviceDiscoveryAgent()
Destruktor für ~QBluetoothDeviceDiscoveryAgent()
[signal]
void QBluetoothDeviceDiscoveryAgent::canceled()
Dieses Signal wird ausgegeben, wenn die Geräteerkennung durch einen Aufruf von stop() abgebrochen wird.
[signal]
void QBluetoothDeviceDiscoveryAgent::deviceDiscovered(const QBluetoothDeviceInfo &info)
Dieses Signal wird ausgesendet, wenn das durch info beschriebene Bluetooth-Gerät erkannt wird.
Das Signal wird ausgesendet, sobald die wichtigsten Geräteinformationen gesammelt wurden. Solange jedoch das Signal finished() nicht gesendet wurde, wird die Informationssammlung auch für bereits erkannte Geräte fortgesetzt. Dies gilt insbesondere für Informationen über die Signalstärke (RSSI) und die Aktualisierung der Herstellerdaten. Wenn der Anwendungsfall kontinuierliche Herstellerdaten- oder RSSI-Aktualisierungen erfordert, ist es ratsam, die Geräteinformationen über discoveredDevices() abzurufen, sobald die Erkennung beendet ist, oder auf das Signal deviceUpdated() zu hören.
Wenn lowEnergyDiscoveryTimeout() größer als 0 ist, wird das Signal immer nur dann ausgesendet, wenn sich mindestens ein Attribut von info ändert. Dies spiegelt den Wunsch wider, Aktualisierungen zu erhalten, wenn genauere Informationen verfügbar werden. Die Ausnahme von diesem Verhalten ist der Fall, dass lowEnergyDiscoveryTimeout auf 0
gesetzt ist. Eine Zeitüberschreitung von 0
drückt den Wunsch aus, das Auftauchen und Verschwinden von Geräten mit niedrigem Energieverbrauch im Laufe der Zeit zu überwachen. Unter dieser Bedingung wird das Signal deviceDiscovered() auch dann ausgegeben, wenn sich info seit der letzten Signalausgabe nicht geändert hat.
Siehe auch QBluetoothDeviceInfo::rssi() und lowEnergyDiscoveryTimeout().
[signal]
void QBluetoothDeviceDiscoveryAgent::deviceUpdated(const QBluetoothDeviceInfo &info, QBluetoothDeviceInfo::Fields updatedFields)
Dieses Signal wird ausgegeben, wenn der Agent zusätzliche Informationen über das durch info beschriebene Bluetooth-Gerät erhält. Die Flaggen updatedFields geben an, welche Informationen aktualisiert wurden.
Während der Erkennung können sich einige Informationen dynamisch ändern, z. B. signal strength und manufacturerData. Dieses Signal informiert Sie darüber, dass Ihre Anwendung diese Daten aktualisieren kann, anstatt zu warten, bis die Erkennung abgeschlossen ist.
Siehe auch QBluetoothDeviceInfo::rssi() und lowEnergyDiscoveryTimeout().
QList<QBluetoothDeviceInfo> QBluetoothDeviceDiscoveryAgent::discoveredDevices() const
Gibt eine Liste aller erkannten Bluetooth-Geräte zurück.
QBluetoothDeviceDiscoveryAgent::Error QBluetoothDeviceDiscoveryAgent::error() const
Gibt den letzten Fehler zurück.
Eventuelle frühere Fehler werden bei einem Neustart der Suche gelöscht.
[signal, since 6.2]
void QBluetoothDeviceDiscoveryAgent::errorOccurred(QBluetoothDeviceDiscoveryAgent::Error error)
Dieses Signal wird ausgegeben, wenn bei der Bluetooth-Geräteerkennung ein error auftritt. Der Parameter error beschreibt den aufgetretenen Fehler.
Diese Funktion wurde in Qt 6.2 eingeführt.
Siehe auch error() und errorString().
QString QBluetoothDeviceDiscoveryAgent::errorString() const
Gibt eine menschenlesbare Beschreibung des letzten Fehlers zurück.
Siehe auch error() und errorOccurred().
[signal]
void QBluetoothDeviceDiscoveryAgent::finished()
Dieses Signal wird ausgesendet, wenn die Bluetooth-Geräteerkennung abgeschlossen ist. Das Signal wird nicht ausgegeben, wenn die Geräteerkennung mit einem Fehler abgeschlossen wurde.
bool QBluetoothDeviceDiscoveryAgent::isActive() const
Gibt true zurück, wenn der Agent gerade Bluetooth-Geräte erkennt, andernfalls false.
int QBluetoothDeviceDiscoveryAgent::lowEnergyDiscoveryTimeout() const
Gibt eine Zeitüberschreitung in Millisekunden zurück, die auf die Bluetooth Low Energy Gerätesuche angewendet wird. Ein Wert von -1
bedeutet, dass die Plattform diese Eigenschaft nicht unterstützt und der Timeout für die Gerätesuche nicht angepasst werden kann. Ein Rückgabewert von 0
impliziert eine nicht endende Suche, die manuell über stop() gestoppt werden muss.
Siehe auch setLowEnergyDiscoveryTimeout().
void QBluetoothDeviceDiscoveryAgent::setLowEnergyDiscoveryTimeout(int timeout)
Setzt die maximale Suchzeit für die Bluetooth Low Energy Gerätesuche auf timeout in Millisekunden. Wenn timeout 0
ist, läuft die Suche, bis stop() aufgerufen wird.
Dies spiegelt die Tatsache wider, dass der Erkennungsprozess für Bluetooth-Low-Energy-Geräte größtenteils unbefristet ist. Die Plattform sucht so lange nach weiteren Geräten, bis die Suche manuell gestoppt wird. Die Zeitüberschreitung sorgt dafür, dass die Suche nach timeout Millisekunden abgebrochen wird. Natürlich ist es immer noch möglich, die Suche manuell abzubrechen, indem man stop() aufruft.
Der neue Timeout-Wert wird erst wirksam, wenn die Gerätesuche neu gestartet wird. Darüber hinaus hat die Zeitüberschreitung keine Auswirkungen auf die klassische Bluetooth-Gerätesuche. Je nach Plattform kann die klassische Suche mehr Zeit für den gesamten Erkennungsprozess in Anspruch nehmen als timeout.
Für eine zuverlässige Bluetooth Low Energy-Erkennung sollten Sie mindestens 40000 Millisekunden verwenden.
Siehe auch lowEnergyDiscoveryTimeout().
[slot]
void QBluetoothDeviceDiscoveryAgent::start()
Startet die Erkennung von Bluetooth-Geräten, sofern sie noch nicht gestartet wurde.
Das Signal deviceDiscovered() wird ausgegeben, wenn jedes Gerät erkannt wird. Das Signal finished() wird ausgegeben, sobald die Geräteerkennung abgeschlossen ist. Die Erkennung verwendet den maximalen Satz an unterstützten Erkennungsmethoden auf der Plattform.
Siehe auch supportedDiscoveryMethods().
[slot]
void QBluetoothDeviceDiscoveryAgent::start(QBluetoothDeviceDiscoveryAgent::DiscoveryMethods methods)
Startet die Bluetooth-Gerätesuche, sofern sie noch nicht gestartet ist und die bereitgestellten methods unterstützt werden. Die Suche methods schränkt den Umfang der Gerätesuche ein. Wenn es sich bei dem Zieldienst oder -gerät beispielsweise um ein Bluetooth Low Energy-Gerät handelt, kann diese Funktion verwendet werden, um die Suche auf Bluetooth Low Energy-Geräte zu beschränken und dadurch die Erkennungszeit erheblich zu verkürzen.
Hinweis: methods bestimmt nur die Art der Suche und bedeutet nicht, dass die Ergebnisse gefiltert werden. Zum Beispiel kann die Suche immer noch klassische Bluetooth-Geräte enthalten, obwohl methods nur auf LowEnergyMethod eingestellt ist. Dies kann aufgrund von zuvor zwischengespeicherten Suchergebnissen geschehen, die in die Suchergebnisse aufgenommen werden können.
[slot]
void QBluetoothDeviceDiscoveryAgent::stop()
Beendet die Bluetooth-Geräteerkennung. Das Signal cancel() wird ausgesendet, sobald die Geräteerkennung abgebrochen wird. start() kann aufgerufen werden, bevor das Signal cancel() empfangen wird. Nach dem Aufruf von start() wird das Abbruchsignal der vorherigen Erkennung verworfen.
[static]
QBluetoothDeviceDiscoveryAgent::DiscoveryMethods QBluetoothDeviceDiscoveryAgent::supportedDiscoveryMethods()
Diese Funktion gibt die Erkennungsmethoden zurück, die von der aktuellen Plattform unterstützt werden. Sie kann verwendet werden, um den Umfang der Geräteerkennung einzuschränken.
© 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.