适用于经典AND BLE设备的Android蓝牙扫描

时间:2014-07-31 17:55:40

标签: android bluetooth-lowenergy android-bluetooth discovery

android documentation声明:

Note: You can only scan for Bluetooth LE devices or scan for Classic Bluetooth devices, as described in Bluetooth. You cannot scan for both Bluetooth LE and classic devices at the same time.

但是我注意到调用mBtAdapter.startDiscovery();正在返回经典设备和btle设备。有人知道这里有什么问题吗?

2 个答案:

答案 0 :(得分:9)

根据我的理解,文档的含义是您不能同时运行startLeScan()startDiscovery()。原因可能是只有一个BluetoothAdapter对象(代表本地蓝牙硬件的对象)因此不能同时使用BluetoothAdapter进行两种不同的操作。(如果有人知道它在如何工作方面有什么不同背景,让我们知道)

startLeScan() - >仅扫描BLE设备
startDiscovery() - >发现所有蓝牙设备,它也只扫描12秒,这不能改变(通过方法描述读取)

注意:在找到BT设备后执行startDiscovery()查询扫描后,您可以获取设备类型以识别每个设备的内容,例如:

    int deviceType = device.getType();

    if(deviceType == BluetoothDevice.DEVICE_TYPE_CLASSIC)
    {

    }
    else if(deviceType == BluetoothDevice.DEVICE_TYPE_LE)
    {

    }
    else if(deviceType == BluetoothDevice.DEVICE_TYPE_DUAL)
    {   

    }
    else if(deviceType == BluetoothDevice.DEVICE_TYPE_UNKNOWN)
    {

    }

答案 1 :(得分:-2)

           device: BluetoothDevice

           when (device.type) {
                1 -> edt.text = "DEVICE_TYPE_CLASSIC"
                2 -> edt.text = "DEVICE_TYPE_LE"
                3 -> edt.text = "DEVICE_TYPE_DUAL"
                else -> edt.text = "DEVICE_TYPE_UNKNOWN"
            }