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() を呼び出します。
void MyClass::startDeviceDiscovery() { // Create a discovery agent and connect to its signals QBluetoothDeviceDiscoveryAgent *discoveryAgent = new QBluetoothDeviceDiscoveryAgent(this); connect(discoveryAgent, SIGNAL(deviceDiscovered(QBluetoothDeviceInfo)), this, SLOT(deviceDiscovered(QBluetoothDeviceInfo))); // Start a discovery discoveryAgent->start(); //... } // In your local slot, read information about the found devices void MyClass::deviceDiscovered(const QBluetoothDeviceInfo &device) { 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)
parent を持つ新しい Bluetooth デバイス発見エージェントを構築します。
デバイス検索にはdeviceAdapter を使用します。deviceAdapter がデフォルトで構築された場合、結果の QBluetoothDeviceDiscoveryAgent オブジェクトは、ローカルのデフォルト Bluetooth アダプタを使用します。
ローカル・アダプタではないdeviceAdapter が指定された場合、error() はInvalidBluetoothAdapterError に設定されます。 したがって、このコンストラクタを使用した直後にエラー・フラグをテストすることをお勧めします。
error()も参照してください 。
[virtual noexcept]
QBluetoothDeviceDiscoveryAgent::~QBluetoothDeviceDiscoveryAgent()
デストラクタ for ~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 がサポートされている場合、Bluetoothデバイス検出を開始します。ディスカバリーmethods は、デバイス検索の範囲を制限します。例えば、ターゲットとなるサービスやデバイスがBluetooth Low Energyデバイスの場合、この関数を使用して検索をBluetooth Low Energyデバイスに限定することで、ディスカバリーにかかる時間を大幅に短縮することができます。
注: methods はディスカバリーのタイプを決定するだけで、結果のフィルタリングを意味するものではありません。たとえば、methods がLowEnergyMethod のみに設定されているにもかかわらず、検索結果にクラシックなブルートゥース・デバイスが含まれる場合があります。これは、以前にキャッシュされた検索結果が検索結果に組み込まれるために起こる可能性があります。
[slot]
void QBluetoothDeviceDiscoveryAgent::stop()
Bluetooth デバイスの検出を停止します。デバイス検出がキャンセルされると cancel() シグナルが発行されます。startcancel()は、cancelシグナルを受信する前に呼び出されることがあります。start()が呼び出されると、前の発見からのキャンセル信号は破棄される。
[static]
QBluetoothDeviceDiscoveryAgent::DiscoveryMethods QBluetoothDeviceDiscoveryAgent::supportedDiscoveryMethods()
この関数は、現在のプラットフォームでサポートされている発見方法を返します。この関数は、デバイス発見の範囲を制限するために使用することができます。
©2024 The Qt Company Ltd. 本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。