我试图连接到UA UA-651BLE血压计,并在android应用中获取值。该应用程序能够找到该设备,但在“ onConnectionStateChange”中出现Type_Gatt_Error。
这对于某些设备(如三星银河S5,Moto G4等)运行良好,但不适用于某些设备,如redmi 3s prime等。
这很好用,当我取消配对设备并每次重新配对时,我都能读取数据。我不了解任何东西,因为我是android-ble集成的新手。我尝试将目标SDK版本更改为21和23,因为我主要使用的是android 5.0.1及更高版本的设备。但没有运气
我发现门户网站中的许多人提出了类似的问题,但是没有找到适合我的解决方案。
任何人都可以让我理解为什么会发生这种情况以及可能的解决方法吗?
以下是我在Android Studio中获得的日志:
D/MYTAG: DashBoard UnBonded Device false true
D/MYTAG: Found device - =*******************A&D_UA-651BLE_459701
D/SN: RESU connectDevice device 6C:EC:EB:45:97:01
D/BluetoothManager: getConnectionState()
D/BluetoothManager: getConnectedDevices
W/SN: RESU Attempt to connect in state: 0
D/BluetoothGatt: connect() - device: 6C:EC:EB:45:97:01, auto: false
D/BluetoothGatt: registerApp()
D/BluetoothGatt: registerApp() - UUID=e7ed0993-f27a-4e2a-bc08-93b76d55a4d5
D/SN: RESU bluetoothGatt android.bluetooth.BluetoothGatt@47015f2
D/MYTAG: CAlling connectDevice from Dashboard REPLY= true
D/BluetoothAdapter: stopLeScan()
D/BluetoothGatt: onClientRegistered() - status=0 clientIf=10
D/BluetoothAdapter: STATE_ON
D/MYTAG: DashBoard UnBonded Device true true
D/BluetoothGatt: onClientConnectionState() - status=133 clientIf=10 device=6C:EC:EB:45:97:01
D/SN: RESU Inside bluetoothGattCallback : onConnectionStateChange
D/SN: MYTAG DashBoard onReceive TYPE_GATT_ERROR
D/SN: RESU onConnectionStateChange()6C:EC:EB:45:97:01, A&D_UA-651BLE_459701, status=133 newState=0
D/SN: MYTAG Disconnect Device
D/SN: MYTAG DashBoard onReceive TYPE_GATT_DISCONNECTED
D/BluetoothGatt: close()
D/BluetoothGatt: unregisterApp() - mClientIf=10
D/BluetoothGatt: cancelOpen() - device: 6C:EC:EB:45:97:01
D/MYTAG: *********** CAlling startLeScan
D/BluetoothAdapter: startLeScan(): null
D/BluetoothAdapter: STATE_ON
D/BluetoothLeScanner: onClientRegistered() - status=0 clientIf=9
I/Choreographer: Skipped 60 frames! The application may be doing too much work on its main thread.
D/MYTAG: Found device - =*******************A&D_UA-651BLE_459701
D/SN: RESU connectDevice device 6C:EC:EB:45:97:01
D/BluetoothManager: getConnectionState()
D/BluetoothManager: getConnectedDevices
W/SN: RESU Attempt to connect in state: 0
D/BluetoothGatt: connect() - device: 6C:EC:EB:45:97:01, auto: false
D/BluetoothGatt: registerApp()
D/BluetoothGatt: registerApp() - UUID=c9f450d6-a78e-4190-8c8c-89ce7c5bcb17
D/SN: RESU bluetoothGatt android.bluetooth.BluetoothGatt@a2caac0
D/MYTAG: CAlling connectDevice from Dashboard REPLY= true
D/BluetoothAdapter: stopLeScan()
D/BluetoothGatt: onClientRegistered() - status=0 clientIf=10
D/BluetoothAdapter: STATE_ON
D/MYTAG: DashBoard UnBonded Device true true
D/BluetoothGatt: onClientConnectionState() - status=133 clientIf=10 device=6C:EC:EB:45:97:01
D/SN: RESU Inside bluetoothGattCallback : onConnectionStateChange
D/SN: MYTAG DashBoard onReceive TYPE_GATT_ERROR
D/SN: RESU onConnectionStateChange()6C:EC:EB:45:97:01, A&D_UA-651BLE_459701, status=133 newState=0
D/SN: MYTAG Disconnect Device
D/SN: MYTAG DashBoard onReceive TYPE_GATT_DISCONNECTED
D/BluetoothGatt: close()
D/BluetoothGatt: unregisterApp() - mClientIf=10
D/BluetoothGatt: cancelOpen() - device: 6C:EC:EB:45:97:01
D/MYTAG: *********** CAlling startLeScan
D/BluetoothAdapter: startLeScan(): null
D/BluetoothAdapter: STATE_ON
D/BluetoothLeScanner: onClientRegistered() - status=0 clientIf=9
I/Choreographer: Skipped 60 frames! The application may be doing too much work on its main thread.
D/MYTAG: Found device - =*******************A&D_UA-651BLE_459701
D/SN: RESU connectDevice device 6C:EC:EB:45:97:01
D/BluetoothManager: getConnectionState()
D/BluetoothManager: getConnectedDevices
W/SN: RESU Attempt to connect in state: 0
D/BluetoothGatt: connect() - device: 6C:EC:EB:45:97:01, auto: false
D/BluetoothGatt: registerApp()
D/BluetoothGatt: registerApp() - UUID=04b0cc2e-ee24-4515-b41b-d93d1fb54aa3
D/SN: RESU bluetoothGatt android.bluetooth.BluetoothGatt@c659f3e
D/MYTAG: CAlling connectDevice from Dashboard REPLY= true
D/BluetoothAdapter: stopLeScan()
D/BluetoothGatt: onClientRegistered() - status=0 clientIf=10
D/BluetoothAdapter: STATE_ON
D/MYTAG: DashBoard UnBonded Device true true
D/BluetoothGatt: onClientConnectionState() - status=133 clientIf=10 device=6C:EC:EB:45:97:01
D/SN: RESU Inside bluetoothGattCallback : onConnectionStateChange
D/SN: MYTAG DashBoard onReceive TYPE_GATT_ERROR
D/SN: RESU onConnectionStateChange()6C:EC:EB:45:97:01, A&D_UA-651BLE_459701, status=133 newState=0
D/SN: MYTAG Disconnect Device
D/SN: MYTAG DashBoard onReceive TYPE_GATT_DISCONNECTED
D/BluetoothGatt: close()
D/BluetoothGatt: unregisterApp() - mClientIf=10
D/BluetoothGatt: cancelOpen() - device: 6C:EC:EB:45:97:01
D/MYTAG: *********** CAlling startLeScan
D/BluetoothAdapter: startLeScan(): null
D/BluetoothAdapter: STATE_ON
D/BluetoothLeScanner: onClientRegistered() - status=0 clientIf=9
I/Choreographer: Skipped 60 frames! The application may be doing too much work on its main thread.
D/MYTAG: Found device - =*******************Mi Band HRX
D/MYTAG: DashBoard UnBonded Device false true
D/MYTAG: Found device - =*******************null
答案 0 :(得分:2)
对于gatt 133错误没有唯一的答案。但是在过去,我收到了以下信息:
另一个设备已连接到我要连接的BLE设备。
环境中的噪音太大。如果您正在使用大量2.4 GHz wifi路由器和其他BLE设备进行广告宣传的地方,它们会影响您与要与之通信的BLE设备之间的距离。我的办公室有数百台设备,因此,如果我距所连接的设备约3英尺远,我将获得133台设备。
然后有些时候电话BLE芯片似乎无法正常工作,重新启动它可以解决该问题。
这是很久以前的事情,有点模糊,但是有一段时间iOS设备可以连接到我们的BLE设备,但是Android无法连接,并且在尝试时会出现133错误连接。我认为是因为BLE设备的广告标记不是LE General Discoverable Mode
。
要调试,我想使用两个应用程序:
我认为这个应用程序正在使用Android平台的BLE库。因此,如果我的应用程序无法连接,请再次检查他们的应用程序也无法连接。如果可以,那么我的代码很可能出了点问题。
我认为这个应用程序在BLE上的工作水平低于Android BLE库。有时我的应用程序和LightBlue会获得133,但nRF Connect可以成功连接。但是,如果它确实在大多数情况下以133出现故障,则是因为另一个设备已经连接到BLE设备,或者它已被淘汰并且需要重置。在上面第四个项目符号的情况下,该应用程序还能够连接到我们的BLE设备。