QBluetoothDeviceDiscoveryAgent Class
QBluetoothDeviceDiscoveryAgent クラスは、近くにある Bluetooth デバイスを検出します。詳細...
Header: | #include <QBluetoothDeviceDiscoveryAgent> |
qmake: | QT += bluetooth |
Inherits: | QObject |
パブリックタイプ
enum | DiscoveryMethod { NoMethod, ClassicMethod, LowEnergyMethod } |
flags | DiscoveryMethods |
enum | Error { NoError, PoweredOffError, InputOutputError, InvalidBluetoothAdapterError, UnsupportedPlatformError, …, UnknownError } |
パブリック関数
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) |
パブリックスロット
シグナル
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() |
静的パブリック・メンバー
QBluetoothDeviceDiscoveryAgent::DiscoveryMethods | supportedDiscoveryMethods() |
詳細説明
近くにあるBluetoothデバイスを検出します:
- QBluetoothDeviceDiscoveryAgent のインスタンスを作成します、
- deviceDiscovered() またはfinished() シグナルに接続します、
- start() を呼び出します。
voidMyClass::startDeviceDiscovery() {// ディスカバリー・エージェントを作成し、そのシグナルに接続します。 QBluetoothDeviceDiscoveryAgent*discoveryAgent = newQBluetoothDeviceDiscoveryAgent(this); connect(discoveryAgent,SIGNAL(deviceDiscovered(QBluetoothDeviceInfo)), this,SLOT(deviceDiscovered(QBluetoothDeviceInfo));// discoveryAgent->start();//...}// ローカルスロットで、見つかったデバイスに関する情報を読み込むvoidMyClass::deviceDiscovered(constQBluetoothDeviceInfoデバイス){ qDebug() << "Found new device:" << device.name() << '(' << device.address().toString() << ')'; }
結果を非同期に取得するには、deviceDiscovered ()シグナルに接続する。検出されたすべてのデバイスのリストを取得するには、finished() シグナルの後にdiscoveredDevices() を呼び出す。
このクラスは、Classic および Low Energy Bluetooth デバイスの検出に使用できます。個々のデバイス・タイプは、QBluetoothDeviceInfo::coreConfigurations() 属性を使用して決定できます。ほとんどの場合、discoveredDevices() が返すリストには両方のタイプのデバイスが含まれています。しかし、すべてのプラットフォームが両方のタイプのデバイスを検出できるわけではありません。このような制限のあるプラットフォーム(例えばiOSはLow Energyディスカバリーにのみ対応)では、ディスカバリー・プロセスはサポートされているタイプに検索を制限します。
注意: Android 6.0以降、デバイスを検出するにはACCESS_COARSE_LOCATIONが必要です。
注: Win32バックエンドは現在、RSSI(Received Signal Strength Indicator)、メーカー固有データ、または検出後にBluetooth LEデバイスによってアドバタイズされるその他のデータ更新をサポートしていません。
メンバータイプのドキュメント
enum QBluetoothDeviceDiscoveryAgent::DiscoveryMethod
flags QBluetoothDeviceDiscoveryAgent::DiscoveryMethods
この列挙型は、QBluetoothDeviceDiscoveryAgent によって採用される発見方法のタイプを記述します。
定数 | 値 | 説明 |
---|---|---|
QBluetoothDeviceDiscoveryAgent::NoMethod | 0x0 | 発見は不可能です。利用可能なメソッドのいずれもサポートされていません。 |
QBluetoothDeviceDiscoveryAgent::ClassicMethod | 0x01 | 検出プロセスはBluetooth Classic (BaseRate)デバイスを検索します。 |
QBluetoothDeviceDiscoveryAgent::LowEnergyMethod | 0x02 | 検出プロセスはBluetooth Low Energyデバイスを検索します。 |
DiscoveryMethods型はQFlags<DiscoveryMethod>のtypedefです。これは、DiscoveryMethod値のORの組み合わせを格納します。
supportedDiscoveryMethods()も参照してください 。
enum QBluetoothDeviceDiscoveryAgent::Error
Bluetoothデバイスの検出中に見つかった可能性のあるすべてのエラー状態を示します。
定数 | 値 | 説明 |
---|---|---|
QBluetoothDeviceDiscoveryAgent::NoError | 0 | エラーは発生していません。 |
QBluetoothDeviceDiscoveryAgent::PoweredOffError | 2 | Bluetoothアダプターの電源がオフになっています。 |
QBluetoothDeviceDiscoveryAgent::InputOutputError | 1 | デバイスからの書き込みまたは読み込みでエラーが発生しました。 |
QBluetoothDeviceDiscoveryAgent::InvalidBluetoothAdapterError | 3 | 渡されたローカル・アダプタ・アドレスが、ローカル Bluetooth デバイスの物理アダプタ・アドレスと一致しない。 |
QBluetoothDeviceDiscoveryAgent::UnsupportedPlatformError (since Qt 5.5) | 4 | 現在のプラットフォームでは、デバイスの検出ができないか、または実装されていない。このエラーは、start() への呼び出しに応答して設定されます。このような場合の例として、Bluetooth デバイス検索をまったくサポートしていない iOS バージョン 5.0 未満が挙げられます。 |
QBluetoothDeviceDiscoveryAgent::UnsupportedDiscoveryMethod (since Qt 5.8) | 5 | 要求された検出方法の1つが、現在のプラットフォームでサポートされていない。 |
QBluetoothDeviceDiscoveryAgent::LocationServiceTurnedOffError (since Qt 6.2) | 6 | 位置情報サービスがオフになっている。位置情報サービスがオフになっている場合、Bluetooth APIを使用できません。 |
QBluetoothDeviceDiscoveryAgent::MissingPermissionsError (since Qt 6.4) | 7 | オペレーティングシステムが、ユーザーによって許可されていないパーミッションを要求しています。 |
QBluetoothDeviceDiscoveryAgent::UnknownError | 100 | 不明なエラーが発生しました。 |
メンバー関数ドキュメント
[explicit]
QBluetoothDeviceDiscoveryAgent::QBluetoothDeviceDiscoveryAgent(QObject *parent = nullptr)
親を持つ新しいBluetoothデバイス発見エージェントを構築するparent 。
[explicit]
QBluetoothDeviceDiscoveryAgent::QBluetoothDeviceDiscoveryAgent(const QBluetoothAddress &deviceAdapter, QObject *parent = nullptr)
新しいBluetoothデバイス発見エージェントをparent で構築する。
デバイス検索にはdeviceAdapter を使用します。deviceAdapter がデフォルトで構築された場合、結果の QBluetoothDeviceDiscoveryAgent オブジェクトはローカルのデフォルト Bluetooth アダプタを使用します。
ローカル・アダプタではないdeviceAdapter が指定された場合、error() はInvalidBluetoothAdapterError に設定されます。 したがって、このコンストラクタを使用した直後にエラー・フラグをテストすることをお勧めします。
error()も参照してください 。
[virtual noexcept]
QBluetoothDeviceDiscoveryAgent::~QBluetoothDeviceDiscoveryAgent()
のデストラクタQBluetoothDeviceDiscoveryAgent()
[signal]
void QBluetoothDeviceDiscoveryAgent::canceled()
このシグナルは、stop ()のコールによってデバイス発見が中止されたときに発せられる。
[signal]
void QBluetoothDeviceDiscoveryAgent::deviceDiscovered(const QBluetoothDeviceInfo &info)
この信号は、info で記述されたBluetoothデバイスが発見されたときに発せられる。
このシグナルは、最も重要なデバイス情報が収集されるとすぐに発せられます。ただし、finished ()信号が発せられない限り、すでに検出されたデバイスであっても情報収集は継続されます。これは特に、信号強度情報(RSSI)と製造元データの更新に当てはまります。製造元データまたはRSSIの継続的な更新が必要なユースケースの場合、検出が終了したらdiscoveredDevices() を介してデバイス情報を取得するか、deviceUpdated() 信号をリッスンすることを推奨する。
lowEnergyDiscoveryTimeout()が0より大きい場合、シグナルは、info の少なくとも1つの属性が変更されたときのみ発信される。これは、より正確な情報が利用可能になったときに更新を受け取りたいという要望を反映している。この動作の例外は、lowEnergyDiscoveryTimeout が0
に設定されている場合である。0
のタイムアウトは、時間の経過とともに低エネルギー機器の出現と消滅を監視したいことを表し ている。この条件では、info が最後のシグナル発信から変化していなくても、 deviceDiscovered()シグナルが発信される。
QBluetoothDeviceInfo::rssi() およびlowEnergyDiscoveryTimeout()も参照のこと 。
[signal]
void QBluetoothDeviceDiscoveryAgent::deviceUpdated(const QBluetoothDeviceInfo &info, QBluetoothDeviceInfo::Fields updatedFields)
このシグナルは、info によって記述された Bluetooth デバイスに関する追加情報をエージェントが受信したときに発行される。updatedFields フラグは、どの情報が更新されたかを示します。
検出中、signal strength やmanufacturerData のように、いくつかの情報は動的に変更されることがあります。このシグナルは、アプリケーションがこのデータを表示している場合、ディスカバリーが終了するまで待つのではなく、更新できることを通知します。
QBluetoothDeviceInfo::rssi() およびlowEnergyDiscoveryTimeout()も参照の こと。
QList<QBluetoothDeviceInfo> QBluetoothDeviceDiscoveryAgent::discoveredDevices() const
検出されたすべてのBluetoothデバイスのリストを返します。
QBluetoothDeviceDiscoveryAgent::Error QBluetoothDeviceDiscoveryAgent::error() const
最後のエラーを返します。
ディスカバリを再開すると、以前のエラーはクリアされます。
[signal, since 6.2]
void QBluetoothDeviceDiscoveryAgent::errorOccurred(QBluetoothDeviceDiscoveryAgent::Error error)
このシグナルは、Bluetoothデバイス検出中にerror 。error パラメータには、発生したエラーが記述されています。
この関数は Qt 6.2 で導入されました。
error() およびerrorString()も参照してください 。
QString QBluetoothDeviceDiscoveryAgent::errorString() const
最後のエラーについて、人間が読める説明を返す。
error() およびerrorOccurred()も参照 。
[signal]
void QBluetoothDeviceDiscoveryAgent::finished()
このシグナルはBluetoothデバイスの検出が完了したときに発行される。デバイス検出がエラーで終了した場合は、このシグナルは発行されません。
bool QBluetoothDeviceDiscoveryAgent::isActive() const
エージェントが現在Bluetoothデバイスを検出している場合はtrueを返し、そうでない場合はfalseを返します。
int QBluetoothDeviceDiscoveryAgent::lowEnergyDiscoveryTimeout() const
Bluetooth Low Energy デバイス検索に適用されるタイムアウトをミリ秒単位で返します。値が-1
の場合、プラットフォームがこのプロパティをサポートしておらず、デバイス検索のタイムアウトを調整できないことを意味する。戻り値が0
の場合、検索が終了しないことを意味し、stop() を使用して手動で停止する必要がある。
setLowEnergyDiscoveryTimeout()も参照のこと 。
void QBluetoothDeviceDiscoveryAgent::setLowEnergyDiscoveryTimeout(int timeout)
Bluetooth Low Energy デバイス検索の最大検索時間をミリ秒単位でtimeout に設定する。timeout が0
の場合、検索はstop() が呼び出されるまで実行される。
これは、Bluetooth Low Energyデバイスの検出プロセスがほとんどオープンエンドであることを反映しています。検索が手動で停止されるまで、プラットフォームはさらにデバイスを探し続けます。タイムアウトにより、timeout ミリ秒後に検索が中止されます。もちろん、stop ()を呼び出すことで、手動で探索を中止することも可能である。
新しいタイムアウト値は、デバイス検索が再開されるまで有効にならない。また、タイムアウトはクラシックなBluetoothデバイス検索には影響しません。プラットフォームによっては、古典的な検索がtimeout を超えて全体の検出プロセスに時間を追加する場合があります。
信頼性の高いBluetooth Low Energy探索を行うには、少なくとも40000ミリ秒を使用してください。
lowEnergyDiscoveryTimeout()も参照してください 。
[slot]
void QBluetoothDeviceDiscoveryAgent::start()
まだ開始されていなければ、Bluetooth デバイス検出を開始する。
各デバイスが検出されるとdeviceDiscovered() シグナルが発せられる。finished() シグナルは、デバイスの検出が完了すると発行される。検出は、プラットフォーム上でサポートされている検出方法の最大セットを利用します。
supportedDiscoveryMethods()も参照のこと 。
[slot]
void QBluetoothDeviceDiscoveryAgent::start(QBluetoothDeviceDiscoveryAgent::DiscoveryMethods methods)
Bluetoothデバイス探索がまだ開始されておらず、提供されたmethods がサポートされている場合、それを開始する。ディスカバリーmethods は、デバイス検索の範囲を制限する。たとえば、対象のサービスまたはデバイスがBluetooth Low Energyデバイスの場合、この関数を使用して検索をBluetooth Low Energyデバイスに限定することで、検出時間を大幅に短縮できます。
注: methods はディスカバリーのタイプを決定するだけであり、結果のフィルタリングを意味するものではない。例えば、methods がLowEnergyMethod だけに設定されているにもかかわらず、検索にクラシックなブルートゥース・デバイスが含まれる場合があります。これは、以前にキャッシュされた検索結果が検索結果に組み込まれるために起こる可能性があります。
[slot]
void QBluetoothDeviceDiscoveryAgent::stop()
Bluetoothデバイス検出を停止します。デバイス検出がキャンセルされると cancel() シグナルが発信されます。startcancel()は、cancelシグナルを受信する前に呼び出されることがあります。start() が呼び出されると、前のディスカバリーからのキャンセルシグナルは破棄されます。
[static]
QBluetoothDeviceDiscoveryAgent::DiscoveryMethods QBluetoothDeviceDiscoveryAgent::supportedDiscoveryMethods()
この関数は、現在のプラットフォームでサポートされている発見方法を返す。これは、デバイス発見の範囲を制限するために使用することができます。
© 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.