6

BLE 서버를 노출하는 Android 애플리케이션이 있습니다. 나는 BluetoothGattServer#connect와 연결한다. 작동합니다 - 내 앱이 BluetoothGattServerCallback#onConnectionStateChangeSTATE_CONNECTED으로 전화를 겁니다. 클라이언트가 끝나면 BluetoothGattServer#cancelConnection으로 앱과의 연결을 끊습니다.BluetoothGattServer cancelConnection이 연결을 취소하지 않습니다.

하지만 BluetoothGattServerCallback#onConnectionStateChange에 전화를하지 않고 내 BLE 클라이언트가 광고를 시작하지 않는 연결이 (아무것도 그것에 연결되어 있지 않은 경우는 않습니다) 여전히 활성화되어있는 것으로 보인다. 로그 캣에서

는 난 단지 참조 :

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

재미있는 부분은, 내 앱이 바로 내가 완전히 BT를 해제로 STATE_DISCONNECTED으로 BluetoothGattServerCallback#onConnectionStateChange에 전화를 가져옵니다.

Google 트래커의 비슷한 문제 : 6346163464

+0

IIRC의 cancelConnection이 완전히 초기 대부분의 장치에 고장 안드로이드 BLE 먼저 나와서 Google은이를 고치지 않기로 결정했습니다. – 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

해결 방법을 찾으셨습니까? 나는 똑같은 고민 중이다. –

관련 문제