Ubuntu 如何通过dbus API扫描蓝牙LE设备?

Ubuntu 如何通过dbus API扫描蓝牙LE设备?,ubuntu,bluetooth-lowenergy,dbus,bluez,Ubuntu,Bluetooth Lowenergy,Dbus,Bluez,我正在尝试使用bluez DBus API扫描蓝牙LE设备。我已经使用 --enable-experimental 配置选项。我可以在构建中看到,已经编译了支持。 诸如心跳、温度计等接口出现在DBU中,而不是 org.bluez.ProximityMonitor1 接口。据我所知,这个接口将需要永久扫描蓝牙LE设备的距离信息。但我刚开始和bluez打交道,所以我不确定 DBUSAPI中是否有所有必要的内容?永久扫描LE设备需要什么?您需要注册org.bluez.Device1代理对象的D

我正在尝试使用bluez DBus API扫描蓝牙LE设备。我已经使用

--enable-experimental 
配置选项。我可以在构建中看到,已经编译了支持。 诸如心跳、温度计等接口出现在DBU中,而不是

org.bluez.ProximityMonitor1 
接口。据我所知,这个接口将需要永久扫描蓝牙LE设备的距离信息。但我刚开始和bluez打交道,所以我不确定


DBUSAPI中是否有所有必要的内容?永久扫描LE设备需要什么?

您需要注册org.bluez.Device1代理对象的DBUS创建。然后,可以使用org.bluez.Adapter1界面开始查看。这将扫描Classic和LE设备。当检测到设备时,将创建一个Device1对象,并调用您注册的回调。

我现在就是这样做的。似乎我需要主动扫描以查看设备。被动扫描不会发出dbus消息。我正试着追踪这些设备。InterfacesAdded仅在首次发现时发出。如果我想知道某个设备是否仍在我身边,该如何实现?我认为这种接近可以用来实现这一点,但它并不存在。不知道bluez是否不工作或设备不支持该配置文件。接近监视器配置文件与扫描不同。您需要先进行扫描,然后才能使用该配置文件(或任何配置文件)。扫描=发现附近的设备(获取其BT地址和服务)。接近监视器=发现后,如果远程设备支持,使用该服务读取rssi值,并根据接近程度选择性地发出警报。我不是很清楚。我扫描了设备,然后检查了每一个已经找到的设备。我希望能找到一个提供ProximityMonitor接口的设备。但我哪儿也没看到。我用--enable-experiative编译了bluez,并用-E启动了守护进程。但是,我不确定只有当接口宣布interdface并且我的信标不支持它时,我是否才能看到该接口。