我在Android上连接到绑定的BLE设备时遇到问题。第一次连接到设备,包括绑定成功,我能够读取所有特性,连接保持稳定。
当我杀死应用程序或手动断开连接并尝试使用除绑定本身之外的相同代码再次连接到设备时,我与Android端断开连接,错误代码为22,这意味着"连接由localhost"终止。
在这两个我不知道的情景中,Android方面是否存在任何差异?我基本上使用了我可以提供的教程代码,但是我已经尝试了从更改gatt参数到自动连接/没有的所有内容,添加BluetoothDevice.TRANSPORT_LE
作为传输标志但仍然没有。
我的Pixel,Moto G4和所有最新的Nexus设备都会出现此问题。
外设正在使用高通芯片CSR1010 uEnergy,正在进行广告宣传并需要配对才能建立连接。以下是连接内容的片段:
val bondCreated = device.createBond()
在绑定状态改变的广播接收器中,我调用连接方法。我尝试过这两种方法的实验,省略了其中一种,更改参数但没有任何内容
bluetoothGatt = device.connectGatt(context, false, gattCallback, BluetoothDevice.TRANSPORT_LE)
bluetoothGatt?.connect()
如果收到断开信息,请致电:
bluetoothGatt?.close()
bluetoothGatt?.disconnect()
我尝试使用与上面相同的代码再次连接
我已经尝试在每次gatt操作中处理延迟,但仍然没有成功。我与Android断开连接后将自动连接更改为true无法正常工作。
我还尝试了一些第三方iOS应用,所有这些都连接到设备而没有任何问题。他们的Android版本总是以我的方式断开连接。
你能提供任何帮助吗?非常感谢。
日志在这里:
D / BleGattController:设备已绑定:设备
D / BluetoothGatt:connect() - 设备:40:80:08:AF:DC:6B,auto:false
D / BluetoothGatt:registerApp()
D / BluetoothGatt:onClientRegistered() - status = 0 clientIf = 8
D / BluetoothGatt:onClientConnectionState() - status = 0 clientIf = 8 设备= 40:80:08:AF:DC:6B
D / BleGattController $ gattC:onConnectionStateChange 0 - 已连接
D / BleGattController $ gattC:STATE_CONNECTED
D / BluetoothGatt:onConnectionUpdated() - Device = 40:80:08:AF:DC:6B interval = 6 latency = 0 timeout = 500 status = 0
D / BluetoothGatt:onClientConnectionState() - status = 22 clientIf = 8 设备= 40:80:08:AF:DC:6B
D / BleGattController $ gattC:onConnectionStateChange 22 - 已断开连接
D / BleGattController $ gattC:STATE_DISCONNECTED