此类用于查找附近的蓝牙设备。
查找附近的蓝牙设备过程:
- #include "widget.h"
- #include "ui_widget.h"
- #include <QBluetoothDeviceDiscoveryAgent>
-
- Widget::Widget(QWidget *parent)
- : QWidget(parent)
- , ui(new Ui::Widget)
- {
- ui->setupUi(this);
-
- discoveryAgent = new QBluetoothDeviceDiscoveryAgent(this);
- connect(discoveryAgent, &QBluetoothDeviceDiscoveryAgent::deviceDiscovered,this, &Widget::deviceDiscovered);
- }
-
- Widget::~Widget()
- {
- delete ui;
- }
-
- void Widget::deviceDiscovered(const QBluetoothDeviceInfo &device)
- {
- qDebug() << "发现新设备:" << device.name() << '(' << device.address().toString() << ')';
- }
-
- void Widget::on_pushButton_clicked()
- {
- qDebug() << "开始搜索";
- discoveryAgent->start();
- }
1、enum QBluetoothDeviceDiscoveryAgent::DiscoveryMethod:此枚举描述了此类使用的搜索蓝牙设备的方法。不一定有用,具体看各操作系统。
2、enum QBluetoothDeviceDiscoveryAgent::Error:在搜索蓝牙设备期间可能出现的错误情况。
1、QBluetoothDeviceDiscoveryAgent(const QBluetoothAddress &deviceAdapter, QObject *parent = nullptr)
构造一个具有父级的新蓝牙设备搜索代理。
它使用 deviceAdapter 进行设备搜索。如果 deviceAdapter 是默认构造的,则生成的 QBluetoothDeviceDiscoveryAgent 对象将使用本地默认蓝牙适配器。
如果指定的 deviceAdapter 不是本地适配器,则 error() 将设置为 InvalidBluetoothAdapterError。 因此建议在使用此构造函数后立即测试错误标志。
2、【信号】void canceled()
当通过调用 stop() 中止设备搜索时会发出此信号。
3、【信号】void deviceDiscovered(const QBluetoothDeviceInfo &info)
当发现 info 描述的蓝牙设备时发出此信号。
一旦收集到的设备信息,就会发出信号。但是,只要还没有发出 finished() 信号,即使对于已经发现的设备,信息收集也会继续。
4、【信号】void deviceUpdated(const QBluetoothDeviceInfo &info, QBluetoothDeviceInfo::Fields updatedFields)
当收到有关由 info 描述的蓝牙设备的附加信息时,会发出此信号。updatedFields 标志告诉哪些信息已被更新。
在搜索过程中,一些信息可以动态变化,例如信号强度和制造商数据。此信号通知用户,如果应用程序正在显示此数据,则可以对其进行更新,而不是等到发现完成。
5、【信号】void errorOccurred(QBluetoothDeviceDiscoveryAgent::Error error)
在蓝牙设备搜索过程中发生错误时发出此信号。error 参数描述了发生的错误。
6、【信号】void finished()
当蓝牙设备搜索完成时发出此信号。如果设备搜索以错误结束,则不会发出信号。
7、void start(QBluetoothDeviceDiscoveryAgent::DiscoveryMethods methods)
启动蓝牙设备搜索(如果尚未启动)。搜索方法限制了设备搜索的范围。
注意:methods 仅确定发现的类型,并不意味着过滤结果。例如,尽管方法仅设置为 LowEnergyMethod,但搜索可能仍包含经典蓝牙设备。这可能是由于先前缓存的搜索结果可能被合并到搜索结果中而发生的。
void start()
启动蓝牙设备发现(如果尚未启动)。
8、void stop()
停止蓝牙设备搜索。一旦设备搜索被取消,就会发出 cancel() 信号。
9、QList<QBluetoothDeviceInfo> discoveredDevices()
返回所有发现的蓝牙设备的列表。
10、QBluetoothDeviceDiscoveryAgent::Error error()
返回最后一个错误。
11、QString errorString()
返回上一个错误的可读描述。
12、bool isActive()
是否正在搜索蓝牙设备。
13、int lowEnergyDiscoveryTimeout()
返回应用于低功耗蓝牙设备搜索的超时(毫秒)。
值为 -1 表示平台不支持此属性,并且无法调整设备搜索的超时时间。
值为 0 表示必须通过 stop() 手动停止的永无止境的搜索。
14、void setLowEnergyDiscoveryTimeout(int timeout)
设置搜索低功耗蓝牙设备的最大搜索时间(以毫秒为单位)。如果超时为 0,则搜索将一直运行,直到调用 stop()。
重新启动设备搜索后,新的超时值才会生效。此外超时不影响经典蓝牙设备搜索。
对于可靠的低功耗蓝牙搜索,至少使用 40000 毫秒。
15、【static】QBluetoothDeviceDiscoveryAgent::DiscoveryMethods supportedDiscoveryMethods()
返回当前平台支持的搜索方法。