Android scanLeCallback返回Null BluetoothDevice

时间:2016-08-28 04:59:02

标签: android bluetooth-lowenergy

这是我的扫描仪回调代码。

private BluetoothAdapter.LeScanCallback mLeScanCallback =
    new BluetoothAdapter.LeScanCallback() {
        @Override
        public void onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord) {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    if (device == null) {
                        return;
                    }
                    if (!device.getName().startsWith("DEVICE_NAME")) {
                        System.out.println("Did not start with DEVICE_NAME, removing: " + device.getName());
                        return;
                    }
                    if (!devices.contains(device)) {
                        System.out.println("Valid DEVICE_NAME Adding: " + device.getName());
                        devices.add(device);
                    }
                }
            });
        }
    };

当我在某些地理位置扫描时,我得到一个空的BluetoothDevice对象。例如,它在我的家或工作场所完美地运作。

但是,如果我把我的硬件+电话带到机场或大型万豪酒店,那么它就会混乱,并给我一个空的BluetoothDevice

null设备是什么意思,我该如何解决这个问题?

任何建议都将受到赞赏。

此致

1 个答案:

答案 0 :(得分:1)

  

我在内部扫描时得到一个空BluetoothDevice个对象   某些地理位置。

如果您使用相同的BLE设备,则不会发生这种情况。在您的工作地点或家中,确保周围的BLE设备与测试目的相同。

  

null设备意味着什么

简单,因为没有找到设备。但作为参考,我只是引用developers guide

  

您只能扫描蓝牙LE设备或扫描经典   蓝牙设备,如蓝牙中所述。你无法扫描两者   蓝牙LE和经典设备同时使用。

我想在这里分享我的一些经验。扫描附近的设备时,需要发现一些蓝牙设备。你也需要牢记这一点。

如果有帮助,请告诉我!