QBluetoothServiceDiscoveryAgent Class
QBluetoothServiceDiscoveryAgent クラスを使用すると、Bluetooth サービスを照会できます。詳細...
Header: | #include <QBluetoothServiceDiscoveryAgent> |
qmake: | QT += bluetooth |
Inherits: | QObject |
パブリック型
enum | DiscoveryMode { MinimalDiscovery, FullDiscovery } |
enum | Error { NoError, PoweredOffError, InputOutputError, InvalidBluetoothAdapterError, MissingPermissionsError, UnknownError } |
パブリック関数
QBluetoothServiceDiscoveryAgent(QObject *parent = nullptr) | |
QBluetoothServiceDiscoveryAgent(const QBluetoothAddress &deviceAdapter, QObject *parent = nullptr) | |
virtual | ~QBluetoothServiceDiscoveryAgent() |
QList<QBluetoothServiceInfo> | discoveredServices() const |
QBluetoothServiceDiscoveryAgent::Error | error() const |
QString | errorString() const |
bool | isActive() const |
QBluetoothAddress | remoteAddress() const |
bool | setRemoteAddress(const QBluetoothAddress &address) |
void | setUuidFilter(const QBluetoothUuid &uuid) |
void | setUuidFilter(const QList<QBluetoothUuid> &uuids) |
QList<QBluetoothUuid> | uuidFilter() const |
パブリックスロット
void | clear() |
void | start(QBluetoothServiceDiscoveryAgent::DiscoveryMode mode = MinimalDiscovery) |
void | stop() |
シグナル
void | canceled() |
(since 6.2) void | errorOccurred(QBluetoothServiceDiscoveryAgent::Error error) |
void | finished() |
void | serviceDiscovered(const QBluetoothServiceInfo &info) |
詳細説明
検出プロセスはBluetooth Service Discovery Process (SDP)に依存します。接触可能なすべてのBluetoothデバイスが提供するサービスを照会するには、以下の手順が必要です:
- QBluetoothServiceDiscoveryAgentのインスタンスを作成する、
- serviceDiscovered() またはfinished() シグナルに接続する、
- に接続し、start() を呼び出します。
void MyClass::startServiceDiscovery() { // Create a discovery agent and connect to its signals QBluetoothServiceDiscoveryAgent *discoveryAgent = new QBluetoothServiceDiscoveryAgent(this); connect(discoveryAgent, SIGNAL(serviceDiscovered(QBluetoothServiceInfo)), this, SLOT(serviceDiscovered(QBluetoothServiceInfo))); // Start a discovery discoveryAgent->start(); //... } // In your local slot, read information about the found devices void MyClass::serviceDiscovered(const QBluetoothServiceInfo &service) { qDebug() << "Found new service:" << service.serviceName() << '(' << service.device().address().toString() << ')'; }
デフォルトでは、最小限のサービス検出が実行されます。このモードでは、返されるQBluetoothServiceInfo オブジェクトには、デバイスとサービスの UUID 情報のみが含まれることが保証されます。プラットフォームとデバイスの機能によっては、他のサービス情報も利用できる。最小サービス検出モードは、プラットフォームのキャッシュされたSDPデータに 依存する。したがって、物理的に利用可能であるにもかかわらず、この検出でデバイス が見つからない可能性がある。このような場合、完全な検出を実行して、プラッ トフォームのキャッシュを強制的に更新する必要がある。しかし、ほとんどのユースケースでは、最小限のディスカバリーがはるかに速いので適切であり、QBluetoothSocket::connectToService ()のような最新情報を必要とする他のクラスは、必要に応じて追加のディスカバリーを実行する。完全なサービス情報が必要な場合は、start() にFullDiscovery を discoveryMode パラメータとして渡す。
このクラスは、未知のデバイスを見つけるために内部的にQBluetoothDeviceDiscoveryAgent 。
ターゲットデバイスがクラシックデバイスとLow Energyデバイスの組み合わせである場合、サービス検出はBluetooth Low Energyサービスも検出する可能性があります。これらのデバイスは、SDPを介してLow Energyサービスをアドバタイズする必要がある。ターゲットデバイ スがBluetooth Low Energyサービスのみをサポートしている場合、SDPを介 してサービスをアドバタイズしない可能性が高い。Low Energyデバイスでサービス検出を実行するには、QLowEnergyController クラスを使用する必要がある。
iOSの場合、プラットフォームがQBluetoothServiceDiscoveryAgent関連機能へのアクセスを許可するAPIを公開していないため、このクラスを使用することはできません。
QBluetoothDeviceDiscoveryAgent およびQLowEnergyControllerも参照してください 。
メンバ型ドキュメント
enum QBluetoothServiceDiscoveryAgent::DiscoveryMode
この enum は、サービス検出モードを記述します。
定数 | 値 | 説明 |
---|---|---|
QBluetoothServiceDiscoveryAgent::MinimalDiscovery | 0 | 最小限のサービス発見を行う。返されるQBluetoothServiceInfo オブジェクトは不完全である可能性があり、デバイスとサービスのUUID情報のみが 含まれていることが保証される。最小限の検出はキャッシュされたSDPデータに依存するため、FullDiscovery が実行されるまで、物理的に存在するデバイスが見つからない可能性がある。 |
QBluetoothServiceDiscoveryAgent::FullDiscovery | 1 | 完全なサービス検出を実行する。 |
enum QBluetoothServiceDiscoveryAgent::Error
この列挙型は、サービス検出中に発生する可能性のあるエラーを記述する。
定数 | 値 | 説明 |
---|---|---|
QBluetoothServiceDiscoveryAgent::NoError | QBluetoothDeviceDiscoveryAgent::NoError | エラーは発生していません。 |
QBluetoothServiceDiscoveryAgent::PoweredOffError | QBluetoothDeviceDiscoveryAgent::PoweredOffError | Bluetoothアダプタの電源がオフになっています。 |
QBluetoothServiceDiscoveryAgent::InputOutputError | QBluetoothDeviceDiscoveryAgent::InputOutputError | デバイスからの書き込みまたは読み込みでエラーが発生しました。 |
QBluetoothServiceDiscoveryAgent::InvalidBluetoothAdapterError (since Qt 5.3) | QBluetoothDeviceDiscoveryAgent::InvalidBluetoothAdapterError | 渡されたローカル・アダプタ・アドレスが、ローカル Bluetooth デバイスの物理アダプタ・アドレスと一致しません。 |
QBluetoothServiceDiscoveryAgent::MissingPermissionsError (since Qt 6.4) | QBluetoothDeviceDiscoveryAgent::MissingPermissionsError | オペレーティングシステムが、ユーザーによって許可されていないパーミッションを要求しています。 |
QBluetoothServiceDiscoveryAgent::UnknownError | QBluetoothDeviceDiscoveryAgent::UnknownError | 不明なエラーが発生しました。 |
メンバ関数ドキュメント
[explicit]
QBluetoothServiceDiscoveryAgent::QBluetoothServiceDiscoveryAgent(QObject *parent = nullptr)
parent を持つ新しい QBluetoothServiceDiscoveryAgent を構築します。検索は、ローカルのデフォルト Bluetooth アダプタを介して実行されます。
[explicit]
QBluetoothServiceDiscoveryAgent::QBluetoothServiceDiscoveryAgent(const QBluetoothAddress &deviceAdapter, QObject *parent = nullptr)
deviceAdapter およびparent で新しい QBluetoothServiceDiscoveryAgent を構築します。
サービス検索にはdeviceAdapter を使用します。deviceAdapter が既定で構築された場合、結果の QBluetoothServiceDiscoveryAgent オブジェクトは、ローカルの既定 Bluetooth アダプタを使用します。
ローカル・アダプタでないdeviceAdapter が指定された場合、error() はInvalidBluetoothAdapterError に設定されます。 したがって、このコンストラクタを使用した直後にエラー・フラグをテストすることをお勧めします。
注意 : WinRT では、渡されたアダプタ・アドレスは無視されます。
deviceAdapter Android 6.0 以降では、ローカルの Bluetooth アドレスが公開されなくなったためです。 そのため、渡されたアダプタ・アドレスをローカル・アダプタ・アドレスと照合することはできません。そのため、start() を呼び出すと、常にInvalidBluetoothAdapterError がトリガされます。
error()も参照してください 。
[virtual noexcept]
QBluetoothServiceDiscoveryAgent::~QBluetoothServiceDiscoveryAgent()
のデストラクタQBluetoothServiceDiscoveryAgent
[signal]
void QBluetoothServiceDiscoveryAgent::canceled()
このシグナルは、stop() への呼び出しによってサービス検出がキャンセルされた場合にトリガされる。
[slot]
void QBluetoothServiceDiscoveryAgent::clear()
以前のサービス発見の結果をクリアし、uuidFilter()をリセットする。この関数は、進行中のサービス発見中(isActive()を参照)には何もしない。
discoveredServices()も参照 。
QList<QBluetoothServiceInfo> QBluetoothServiceDiscoveryAgent::discoveredServices() const
検出されたすべてのサービスのリストを返します。
このサービス一覧には、start() の複数回の呼び出しによって新たに検出されたサービスが累積される。clear() が呼び出されない限り、リストのサイズが小さくなることはない。つまり、start() を 2 回呼び出す間にリモートの Bluetooth 機器が圏外に移動した場合、リストに古いエントリが含まれる可能性がある。
注意: サービスリストは、検出モードを変更する前に常にクリアする必要があります。
clear()も参照のこと 。
QBluetoothServiceDiscoveryAgent::Error QBluetoothServiceDiscoveryAgent::error() const
最後に発生したエラーのタイプを返す。サービス発見が単一のremoteAddress()に対して行われた場合、 そのデバイス上でサービスを発見しようとして発生したエラーを返す。remoteAddress() が設定されておらず、スキャンによってデバイスが検出される場合、個々のデバイスのサービス検出中のエラーは保存されず、シグナルは発せられない。この場合、一部のデバイスが検出に応答しなかったり、検出範囲外になったりすることがあるため、エラーはごく正常なものである。このようなエラーは抑制される。サービスが返されない場合、サービスは発見されなかったと考えることができる。
可能性のある以前のエラーは、発見を再開するときにクリアされます。
[signal, since 6.2]
void QBluetoothServiceDiscoveryAgent::errorOccurred(QBluetoothServiceDiscoveryAgent::Error error)
このシグナルは、error 。error パラメータは、発生したエラーを記述します。
この関数は Qt 6.2 で導入されました。
QString QBluetoothServiceDiscoveryAgent::errorString() const
サービス検出中に発生した最後のエラーの、人間が読める説明を返します。
error() およびerrorOccurred()も参照してください 。
[signal]
void QBluetoothServiceDiscoveryAgent::finished()
このシグナルは、Bluetoothのサービス検出が完了したときに発行されます。
QBluetoothDeviceDiscoveryAgent::finished() シグナルとは異なり、このシグナルはサービス検出中にエラーが発生した場合にも発行されます。したがって、サービス検出の成功を評価するためにerrorOccurred() シグナルをチェックすることを推奨します。
bool QBluetoothServiceDiscoveryAgent::isActive() const
サービス発見が現在アクティブな場合はtrue
を返し、そうでない場合はfalse
を返す。アクティブなディスカバリーは、stop()をコールすることで停止できる。
QBluetoothAddress QBluetoothServiceDiscoveryAgent::remoteAddress() const
リモートデバイスアドレスを返す。setRemoteAddress()がコールされない場合、この関数はデフォルトで構築されたQBluetoothAddress を返す。
setRemoteAddress()も参照 。
[signal]
void QBluetoothServiceDiscoveryAgent::serviceDiscovered(const QBluetoothServiceInfo &info)
このシグナルは、info で記述された Bluetooth サービスが検出されたときに発行されます。
注意: 渡されたQBluetoothServiceInfo パラメータには、ターゲットデバイスがSDPを介してサービ スをアドバタイズしている場合、Bluetooth Low Energyサービスが含まれている可能性があ る。これは、クラシックBluetooth (BaseRate)サービスとLow Energyサービスの両方をサポートするデバイスで必要です。
QBluetoothDeviceInfo::coreConfigurations()も参照 。
bool QBluetoothServiceDiscoveryAgent::setRemoteAddress(const QBluetoothAddress &address)
リモートデバイスアドレスをaddress に設定します。address がデフォルトで構築されている場合、接触可能なすべての Bluetooth デバイスでサービスが検出されます。新しいリモートアドレスは、サービス検出が進行中でない場合にのみ設定できます。
そうでない場合、この関数はfalseを返します。プラットフォームによっては、サービス検出がペアリング要求につながる場合があります。そのため、すべてのデバイスでサービス検出を行うことは推奨されません。この関数を使用すると、サービス検出を特定のデバイスに制限することができます。
remoteAddress()も参照のこと 。
void QBluetoothServiceDiscoveryAgent::setUuidFilter(const QBluetoothUuid &uuid)
これはオーバーロードされたメンバ関数であり、便宜上提供されています。
UUIDフィルターを、単一の要素uuid を含むリストに設定する。マッチングは、サービスのServiceId およびServiceClassIds 属性に適用されます。
uuidFilter()も参照 。
void QBluetoothServiceDiscoveryAgent::setUuidFilter(const QList<QBluetoothUuid> &uuids)
UUID フィルタをuuids に設定します.uuids の UUID に一致するサービスのみが返されます.マッチングは、サービスのServiceId およびServiceClassIds 属性に適用されます。
空のUUIDリストは、QBluetoothUuid::ServiceClassUuid::PublicBrowseGroup のみを含むリストと同じです。
uuidFilter()も参照のこと 。
[slot]
void QBluetoothServiceDiscoveryAgent::start(QBluetoothServiceDiscoveryAgent::DiscoveryMode mode = MinimalDiscovery)
mode は、実行するサービス発見のタイプを指定する。
プラットフォームによっては、デバイス発見がペアリング要求につながるかもしれない。
DiscoveryMode も参照のこと 。
[slot]
void QBluetoothServiceDiscoveryAgent::stop()
サービス検索プロセスを停止します。検索が停止するとcanceled() シグナルが発行されます。
QList<QBluetoothUuid> QBluetoothServiceDiscoveryAgent::uuidFilter() const
UUID フィルタを返します。
setUuidFilter()も参照してください 。
©2024 The Qt Company Ltd. 本文書に含まれる文書の著作権は、それぞれの所有者に帰属します。 ここで提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。