Android 有时找不到可编程设备

Android 有时找不到可编程设备,android,bluetooth-lowenergy,Android,Bluetooth Lowenergy,我正在开发安卓系统。 我的问题是: 断开Ble设备的连接后,程序将调用.startedscallback查找Ble设备并重新连接。 但有时,程序试图扫描,但找不到任何设备。我猜这是由于Ble协议栈混乱造成的。 我说得对吗?如果Ble协议栈混乱了,那么发生什么会使Ble协议栈混乱呢? 谁能给我一些提示吗?谢谢 --有扫描代码: private void startBLEScan() { if (isBLEScanStarted) { return; }else {

我正在开发安卓系统。 我的问题是: 断开Ble设备的连接后,程序将调用.startedscallback查找Ble设备并重新连接。 但有时,程序试图扫描,但找不到任何设备。我猜这是由于Ble协议栈混乱造成的。 我说得对吗?如果Ble协议栈混乱了,那么发生什么会使Ble协议栈混乱呢? 谁能给我一些提示吗?谢谢

--有扫描代码:

private void startBLEScan() {
    if (isBLEScanStarted) {
        return; 
    }else {
        isBLEScanStarted = true;
    }
    if (mBluetoothAdapter != null) {
        boolean startResult = mBluetoothAdapter.startLeScan(mLeScanCallback);
        System.out.println("BlueToothScan: startLeScan      "+startResult);
        startBLEScanTimeoutTimer(1000 * 60);   //When scan time reach 60s , stop scan and rescan after 5s.
    }
    else {
        System.out.println("BlueToothScan: adapter is null");
    }
}
--存在gatt回调。OnConnectionStateChange:

@Override
    public void onConnectionStateChange(BluetoothGatt gatt, int status,
            int newState) {
            String intentAction;
            if (newState == BluetoothProfile.STATE_CONNECTED) {
                intentAction = ACTION_GATT_CONNECTED;
                mConnectionState = STATE_CONNECTED;
                broadcastUpdate(intentAction);
                try {
                    Thread.sleep(500);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                mBluetoothGatt.discoverServices();
            } else if (newState == BluetoothProfile.STATE_DISCONNECTED) {
                intentAction = ACTION_GATT_DISCONNECTED;
                mConnectionState = STATE_DISCONNECTED;
                if(mBluetoothGatt != null){
                    mBluetoothGatt.close();
                    mBluetoothGatt = null;
                }
                broadcastUpdate(intentAction);
            }
        }

我不知道是不是同样的问题,因为这个问题是在我升级到安卓5.1之后才出现的。我可以将设备连接并绑定到我的Android,但当涉及到重新连接时,扫描将找不到任何已经绑定的设备

我的代码在安卓5.0中运行良好,蓝牙低能耗的唯一变化是扫描方法。现在我必须使用BluetoothScanner类,不再从BluetoothAdapter类调用StartedScan方法,因为它已被弃用

问题可能来自数据包的长度,因为当设备绑定或未绑定时,广告名称会发生变化。
另一个想法是,谷歌在连接已绑定的设备时会更改安全性,但通常情况下,扫描不会影响发现。

这是什么类型的BLE设备?当连接丢失时,你是否尝试用另一台设备找到它?我尝试用另一台手机找到它,并且可以连接到BLE设备。嗯。。对不起,我不太明白那是什么类型的BLE设备…意味着它是从哪里制造的还是其他的?不,像是健身设备吗?大多数这些BLE设备在长时间不使用时会关闭。是的,但是当我断开与BLE设备的连接时。我找不到任何设备。我认为,如果只是关闭设备,我仍然可以得到其他人的mac,但它不是..所以我猜一些错误的步骤会使Ble协议栈混乱。发布一些代码,没有这些我们无法帮助。