获取Android范围内的LE设备列表

时间:2015-03-09 11:53:14

标签: android bluetooth-lowenergy ibeacon-android

我需要的是获取我的范围内的每个设备的列表,以便我可以一个接一个地调用它们。

到目前为止,我尝试过使用BluetoothAdapter的startDiscovery()方法,当它返回一个设备列表时,它需要大约12秒才能完成,这对我的任务来说非常重要。

我还设法每2-3秒成功使用LeScanCallback,我确实发现了设备,但在每次扫描时,它一次只返回一个设备。 我正在尝试搜索Beacons,所以这种类型的方法可以返回每个调用一个使用BlutoothLE的其他设备,而不会返回我的Beacon的信息。

那么,有没有办法发现范围内所有设备的列表,而无需等待12秒后startDiscovery()完成?

2 个答案:

答案 0 :(得分:1)

几点:

  1. startDiscovery适用于蓝牙经典设备,而非Bluetooth LE。

  2. Android不包含任何特定于解析信标的API,仅用于处理原始蓝牙LE设备。

  3. 您可以使用免费和开源Android Beacon Library插件来检测和解析信标。它没有12秒延迟并且包装LeScanCallback方法并结合结果,因此您可以每秒获得回调,如:

        public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
            for (Beacon beacon : beacons) {
                Log.i(TAG, "I see a beacon:"+beacon+" that is "+beacon.getDistance()+" meters away.");     
            }
        }
    

答案 1 :(得分:0)

你需要拨打BluetoothLeScanner的startScan(ScanCallback) api开始扫描,这支持Android 21(5.0)。

另请参阅下面的问题,它包含可用于启动/停止Le Scanning的示例代码。

How to restart BluetoothLeScanner?