是什么让 QBluetoothDeviceDiscoveryAgent::done() 被调用

What makes QBluetoothDeviceDiscoveryAgent::finished() be called?

本文关键字:调用 done QBluetoothDeviceDiscoveryAgent 是什么      更新时间:2023-10-16

我正在使用QBluetoothDeviceDiscoveryAgent在Android手机上搜索BLE设备。

我请求通过调用QBluetoothDeviceDiscoveryAgent::start()来启动设备搜索。几秒钟后,QBluetoothDeviceDiscoveryAgent::done()被发出,但我没有调用QBluetoothDeviceDiscoveryAgent::stop()。

此时,尚未找到我的BLE设备(速度很慢...我知道),它不会因为系统自行决定停止搜索......所以我需要手动重新启动搜索。

为什么系统停止搜索?Qt doc 说关于 QBluetoothDeviceDiscoveryAgent::done():

蓝牙设备发现完成后,将发出此信号。

那是什么意思?谁能决定发现完成?它来自BLE标准吗?作为最终用户,我是唯一知道何时完成的人,即何时找到我正在寻找的设备......

正如Frank Osterfeld所评论的那样,QBluetoothDeviceDiscoveryAgent的android实现(见第273行)静默地创建了一个10秒的超时,自动停止搜索。

对于想要搜索超过 10 秒的用户来说,这是一种痛苦......

在此处填写了错误报告:https://bugreports.qt.io/browse/QTBUG-53012