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 start()
void start(QBluetoothDeviceDiscoveryAgent::DiscoveryMethods methods)
void stop()

シグナル

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::NoMethod0x0検出はできません。利用可能な方法のいずれもサポートされていない。
QBluetoothDeviceDiscoveryAgent::ClassicMethod0x01検出プロセスはBluetooth Classic (BaseRate)デバイスを検索します。
QBluetoothDeviceDiscoveryAgent::LowEnergyMethod0x02検出プロセスはBluetooth Low Energyデバイスを検索します。

DiscoveryMethods型はQFlags<DiscoveryMethod>のtypedefである。これは、DiscoveryMethod値のORの組み合わせを格納する。

supportedDiscoveryMethods()も参照

enum QBluetoothDeviceDiscoveryAgent::Error

Bluetoothデバイス検出中に検出される可能性のあるすべてのエラー状態を示します。

定数説明
QBluetoothDeviceDiscoveryAgent::NoError0エラーは発生していません。
QBluetoothDeviceDiscoveryAgent::PoweredOffError2Bluetoothアダプタの電源がオフになっています。
QBluetoothDeviceDiscoveryAgent::InputOutputError1デバイスからの書き込みまたは読み込みでエラーが発生しました。
QBluetoothDeviceDiscoveryAgent::InvalidBluetoothAdapterError3渡されたローカル・アダプタ・アドレスが、ローカル 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::UnknownError100不明なエラーが発生しました。

メンバー関数ドキュメント

[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つの属性が変更されたときのみ、シグナルが発信される。これは、より正確な情報が入手可能になったときに更新を受け取りたいという要望を反映したものである。この動作の例外は、lowEnergyDiscoveryTimeout0 に設定されている場合である。0 のタイムアウトは、時間の経過とともに低エネルギー機器の出現と消滅を監視したいことを表し ている。この条件では、info が最後のシグナル発信から変化していなくても、 deviceDiscovered()シグナルが発信される。

QBluetoothDeviceInfo::rssi() およびlowEnergyDiscoveryTimeout()も参照

[signal] void QBluetoothDeviceDiscoveryAgent::deviceUpdated(const QBluetoothDeviceInfo &info, QBluetoothDeviceInfo::Fields updatedFields)

このシグナルは、info で記述された Bluetooth デバイスに関する追加情報をエージェントが受信したときに発行されます。updatedFields フラグは、どの情報が更新されたかを示します。

ディスカバリの間、signal strengthmanufacturerData のように、いくつかの情報は動的に変更されることがあります。このシグナルは、アプリケーションがこのデータを表示している場合、ディスカバリーが終了するまで待つのではなく、更新できることを通知します。

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デバイス検出中にerrorerror パラメーターは発生したエラーを記述します。

この関数は 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 に設定する。timeout0 の場合、検索は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 はディスカバリーのタイプを決定するだけで、結果のフィルタリングを意味するものではありません。たとえば、methodsLowEnergyMethod のみに設定されているにもかかわらず、検索結果にクラシックなブルートゥース・デバイスが含まれる場合があります。これは、以前にキャッシュされた検索結果が検索結果に組み込まれるために起こる可能性があります。

[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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。