我正在开发一种心率监测应用程序,可以从BLE设备读取数据,对于所有其他手机都没有问题,但是对于三星手机(如Note 8)来说,它使用的是蓝牙版本5.0。一段时间后自动断开连接,我正在获得状态8
代码:
用于连接
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
mGattClient = device.connectGatt(this, false, mGattCallbacks, TRANSPORT_LE)
} else {
mGattClient = device.connectGatt(this, false, mGattCallbacks)
}
// 连接状态更改
override fun onConnectionStateChange(gatt: BluetoothGatt, status: Int, newState: Int) {
when (newState) {
BluetoothProfile.STATE_CONNECTED -> {
// this sleep is here to avoid TONS of problems in BLE, that occur whenever we start
// service discovery immediately after the connection is established
mGattClient?.discoverServices()
}
BluetoothProfile.STATE_DISCONNECTED -> {
Log.d(TAG,"Disconnected status"+ status)
}
}
}
// New services discovered
override fun onServicesDiscovered(gatt: BluetoothGatt, status: Int) {
when (status) {
BluetoothGatt.GATT_SUCCESS -> mListener?.deviceConnected(MESSAGE_CONNECTED, status)
else -> Log.w("BLE", "onServicesDiscovered received: $status")
}
}
我已将其发布在Google问题跟踪器上
答案 0 :(得分:1)
此问题与Android OS本身或您的软件无关。错误代码8表示根据蓝牙规范的连接超时。这意味着手机中的蓝牙硬件失去了与设备的连接。主要有以下三个原因:天线/无线电接收不良,两个设备之间的时钟漂移使它们失去同步,太多的调度冲突(如果您有多个连接)。
您是否发现Note 8的性能比其他手机差很多,请向三星发送问题报告。