Android蓝牙LE一次扫描

时间:2014-10-13 21:42:49

标签: android bluetooth-lowenergy android-bluetooth

有没有办法在Android 4.3 / 4.4中扫描所有bt le ibeacons,而不必以异步方式使用startLeScan?

我正在寻找一种方法来同时获取所有ibeacons的mac地址和rssi值。

是否有任何外部库或低级别方法?

非常感谢你的帮助。

2 个答案:

答案 0 :(得分:1)

您应该考虑硬件在无线电级别的工作方式。

当你打电话给 startLeScan()时,它会打开LE无线电,它有供应商定义的ON - OFF(休眠)周期,通常从几个uSec到一个ms。

只有在扫描了相关频率后,无线电才能将设备列表返回给驱动程序。这决不能以同步方式完成。因此,你必须提供一个回调 - 根据设计被触发:像扫描周期结束时的设备列表突发或者随着发现的继续将设备增加到列表 - 我不确定Android是如何做到的 - 我说话的形式自定义RTOS驱动程序透视图

修改: -
我已经了解了无线电一直处于开启状态的设计 - 当然会对 power 方程造成相当大的影响 - 但这样可以让驱动程序或hal层保持运行扫描设备列表。这里棘手的情况是提出最佳的从列表中移除政策

答案 1 :(得分:0)

我认为没有办法同步实现这一点,如果有,我认为这不是一个好主意 - 一旦扫描速度很慢,你的应用程序就会冻结。