6

我有Android應用程序公開BLE服務器。我連接BluetoothGattServer#connect。它的工作原理 - 我的應用程序通過STATE_CONNECTED致電BluetoothGattServerCallback#onConnectionStateChange。當我完成客戶端時,我嘗試使用BluetoothGattServer#cancelConnection與我的應用斷開連接。BluetoothGattServer cancelConnection不取消連接

但我不明白來電BluetoothGattServerCallback#onConnectionStateChange,似乎連接仍然活躍,我的BLE客戶沒有開始做廣告(這確實沒事的時候連接到它)。

在logcat中我只看到:

BluetoothGattServer: cancelConnection() - device: XX:XX:XX:XX:XX:XX 

有趣的是,我的應用程序變得只要我完全關閉BT與STATE_DISCONNECTED來電BluetoothGattServerCallback#onConnectionStateChange

Google跟蹤器中的類似問題:6346163464

+0

IIRC cancelConnection被完全破碎上大多數早期的器件時的Android BLE首先出來,谷歌決定不解決這個問題。 – reTs

+0

你有沒有設法找到解決辦法?我正在爲同樣的事情奮鬥 –

+0

不是 - 我決定儘可能遠離BLE,永遠不要再靠近。 –

回答

1

調用disconnect()方法時遇到同樣的問題..我的BluetoothGattCallback中的onConnectionStateChange中沒有給出斷開連接。

自行車藍牙似乎是唯一可行的。

編輯: 也斷開()和close()方法之後是所謂的,我仍然根據這個代碼連接:

public int getConnectedBLEDevices() { 
     int i = 0; 
     List<BluetoothDevice> devices = mBluetoothManager.getConnectedDevices(BluetoothProfile.GATT); 
     for(BluetoothDevice device : devices) { 
      if(device.getType() == BluetoothDevice.DEVICE_TYPE_LE) { 
       Logs.writeEvent(TAG+".getConnectedBLEDevices()", device.getAddress() + "\n"+ getStateAsString(mBluetoothManager.getConnectionState(device, BluetoothProfile.GATT))); 
       i++; 
      } 
     } 
     return i; 
    } 
+0

你是什麼意思「循環藍牙似乎是唯一可行的。」? –

+0

打開和關閉藍牙 – user1064249

+0

您是否設法找到此問題的解決方法?我正在同樣的事情上掙扎 –