2014-12-04 82 views
3

我正在尝试使用bluez DBus API扫描蓝牙LE设备。我已经安装bluez-5.25使用如何通过dbus API扫描蓝牙LE设备?

--enable-experimental 

配置选项。我可以在支持已经被编译构建看到。 接口,如心跳,温度计等出现的DBus但不是

org.bluez.ProximityMonitor1 

接口。据我了解,这个接口将需要永久扫描蓝牙LE设备的距离信息。但我刚开始处理bluez,所以我不确定。

DBus API中是否有所有必需的东西?为了永久扫描LE设备需要什么?

回答

3

您需要注册org.bluez.Device1代理对象的DBUS创建。然后可以使用org.bluez.Adapter1接口来启动发现。这将扫描Classic和LE设备。当一个设备被检测到时,一个Device1对象将被创建并且你的注册回调将被调用。

+0

我正在这样做。看来我需要主动扫描以查看设备。被动扫描不发送dbus消息。我试图跟踪LE设备。 InterfacesAdded仅在第一次发现时发出。如果我想知道设备是否仍在我附近,那么实现的方式是什么?我认为可以使用接近度,但它不在那里。不知道bluez是否工作不正常或设备不支持该配置文件。 – 2014-12-12 07:42:44

+0

感应监视器配置文件与扫描不同。您甚至需要先扫描才能使用该配置文件(或任何配置文件)。扫描=发现附近的设备(以获得其BT地址和服务)。 Proximity Monitor =发现后,如果远程设备支持,则使用该服务读取rssi值并根据接近程度选择性地发出警报。 – kaylum 2014-12-13 20:40:59

+0

我不是很清楚。我扫描设备,然后检查找到的每个设备。我希望能找到一个提供ProximityMonitor接口的设备。但是我看不到。我用--enable-experimental编译了bluez,并用-E启动了守护进程。但是,我不确定只有当它宣布了接口并且我的信标不支持时才能看到接口。 – 2014-12-17 09:31:05