gpt4 book ai didi

android - 蓝牙 Gatt 问题 onClientConnectionState() - status=8 clientIf=29

转载 作者:行者123 更新时间:2023-12-02 08:12:36 25 4
gpt4 key购买 nike

我正在制作 android BLE 应用程序。根据文件,我提出申请。我的问题是,有时应用程序会运行良好,但有时会抛出错误。有 2 个日志,一个用于成功,第二个用于错误。每次蓝牙断开连接时,我都会发送关闭方法。我不知道我被困在哪里。

第一次成功日志

7-11 11:44:54.371 17649-17649/com.clavax.ultrapen I/BluetoothGatt 1: try to connecte
07-11 11:44:54.371 17649-17649/com.clavax.ultrapen D/BluetoothGatt: connect() - device: 00:13:43:07:98:D4, auto: false
07-11 11:44:54.371 17649-17649/com.clavax.ultrapen D/BluetoothGatt: registerApp()
07-11 11:44:54.371 17649-17649/com.clavax.ultrapen D/BluetoothGatt: registerApp() - UUID=240e1b71-f4c5-43f2-9535-cd337b501374
07-11 11:44:54.421 17649-17660/com.clavax.ultrapen D/BluetoothGatt: onClientRegistered() - status=0 clientIf=10
07-11 11:44:54.611 17649-13359/com.clavax.ultrapen D/BluetoothGatt: onClientConnectionState() - status=0 clientIf=10 device=00:13:43:07:98:D4
07-11 11:44:54.611 17649-13359/com.clavax.ultrapen I/BluetoothGatt 1: BRSP connection created 2 0
07-11 11:44:54.621 17649-17649/com.clavax.ultrapen D/BluetoothGatt: discoverServices() - device: 00:13:43:07:98:D4
07-11 11:44:54.621 17649-17649/com.clavax.ultrapen D/BluetoothGatt 1: Discover Services started: true
07-11 11:44:54.621 17649-17649/com.clavax.ultrapen I/BluetoothGatt 1: connection created
07-11 11:44:54.811 17649-13359/com.clavax.ultrapen D/BluetoothGatt: onClientConnParamsChanged() - Device=00:13:43:07:98:D4 interval=6 status=0
07-11 11:44:55.231 17649-17661/com.clavax.ultrapen D/BluetoothGatt: onSearchComplete() = Device=00:13:43:07:98:D4 Status=0
07-11 11:44:55.231 17649-17661/com.clavax.ultrapen I/BluetoothGatt 1: BRSP service discovered
07-11 11:44:55.231 17649-17661/com.clavax.ultrapen D/BluetoothGatt: setCharacteristicNotification() - uuid: fdd6b4d3-046d-4330-bdec-1fd0c90cb43b enable: true
07-11 11:44:55.231 17649-17661/com.clavax.ultrapen I/BluetoothGatt 1: BRSP service discovered 2
07-11 11:44:55.261 17649-13359/com.clavax.ultrapen I/BluetoothGatt 1: BRSP description write
07-11 11:44:55.261 17649-13359/com.clavax.ultrapen I/BluetoothGatt 1: BRSP initstate1
07-11 11:44:55.261 17649-13359/com.clavax.ultrapen D/BluetoothGatt: setCharacteristicNotification() - uuid: 18cda784-4bd3-4370-85bb-bfed91ec86af enable: true
07-11 11:44:55.261 17649-13359/com.clavax.ultrapen I/BluetoothGatt 1: BRSP initstate notification1true
07-11 11:44:55.261 17649-13359/com.clavax.ultrapen D/BluetoothGatt: onClientConnParamsChanged() - Device=00:13:43:07:98:D4 interval=39 status=0
07-11 11:44:55.761 17649-17649/com.clavax.ultrapen I/BluetoothGatt 1: BRSP initstate write1true
07-11 11:44:55.841 17649-13359/com.clavax.ultrapen I/BluetoothGatt 1: BRSP description write
07-11 11:44:55.841 17649-13359/com.clavax.ultrapen I/BluetoothGatt 1: BRSP initstate2
07-11 11:44:55.841 17649-17649/com.clavax.ultrapen I/BluetoothGatt 1: BRSP initstate read2true
07-11 11:44:55.931 17649-13359/com.clavax.ultrapen I/BluetoothGatt 1: BRSP characteristic read 1
07-11 11:44:55.931 17649-13359/com.clavax.ultrapen I/BluetoothGatt 1: BRSP initstate3
07-11 11:44:55.941 17649-13359/com.clavax.ultrapen I/BluetoothGatt 1: BRSP brsp m0detrue
07-11 12:07:21.461 17649-21210/com.clavax.ultrapen I/BluetoothGatt 1: BRSP characteristic read 2
07-11 12:07:21.561 17649-21210/com.clavax.ultrapen I/BluetoothGatt 1: BRSP characteristic write 1
07-11 12:07:21.561 17649-21210/com.clavax.ultrapen I/BluetoothGatt 1: BRSP characteristic write 3
07-11 12:07:21.581 17649-17649/com.clavax.ultrapen I/BluetoothGatt 1: BRSP write byte0
07-11 12:07:21.581 17649-17649/com.clavax.ultrapen I/BluetoothGatt 1: BRSP send packets
07-11 12:07:21.581 17649-17649/com.clavax.ultrapen I/BluetoothGatt 1: BRSP sending
07-11 12:07:21.581 17649-17649/com.clavax.ultrapen I/BluetoothGatt 1: BRSP sendingtrue
07-11 12:07:21.601 17649-17649/com.clavax.ultrapen I/BluetoothGatt 1: BRSP send packets
07-11 12:07:21.601 17649-17649/com.clavax.ultrapen I/BluetoothGatt 1: BRSP return
07-11 12:07:21.661 17649-21210/com.clavax.ultrapen I/BluetoothGatt 1: BRSP characteristic write 1
07-11 12:07:21.661 17649-21210/com.clavax.ultrapen I/BluetoothGatt 1: BRSP characteristic write 2
07-11 12:07:21.661 17649-21210/com.clavax.ultrapen I/BluetoothGatt 1: BRSP send packets
07-11 12:07:21.661 17649-21210/com.clavax.ultrapen I/BluetoothGatt 1: BRSP sending
07-11 12:07:21.661 17649-21210/com.clavax.ultrapen I/BluetoothGatt 1: BRSP sendingtrue
07-11 12:07:21.801 17649-17660/com.clavax.ultrapen I/BluetoothGatt 1: BRSP characteristic write 1
07-11 12:07:21.801 17649-17660/com.clavax.ultrapen I/BluetoothGatt 1: BRSP characteristic write 2
07-11 12:07:21.801 17649-17660/com.clavax.ultrapen I/BluetoothGatt 1: BRSP send packets
07-11 12:07:21.801 17649-17660/com.clavax.ultrapen I/BluetoothGatt 1: BRSP bytes null
07-11 12:07:21.901 17649-17660/com.clavax.ultrapen I/BluetoothGatt 1: BRSP characteristic change 1
07-11 12:07:21.901 17649-17660/com.clavax.ultrapen I/BluetoothGatt 1: BRSP characteristic change 2
07-11 12:07:21.901 17649-17660/com.clavax.ultrapen I/BluetoothGatt 1: BRSP write byte�eqInfo|PTType>ORP|P
continue.........................................

第二个日志
07-11 11:42:25.451 17649-17649/com.clavax.ultrapen D/BluetoothGatt: connect() - device: 00:13:43:07:98:D4, auto: false
07-11 11:42:25.451 17649-17649/com.clavax.ultrapen D/BluetoothGatt: registerApp()
07-11 11:42:25.451 17649-17649/com.clavax.ultrapen D/BluetoothGatt: registerApp() - UUID=8bcbf61d-323c-46c8-b509-3f29dbcc5002
07-11 11:42:25.491 17649-13359/com.clavax.ultrapen D/BluetoothGatt: onClientRegistered() - status=0 clientIf=8
07-11 11:42:25.881 17649-17660/com.clavax.ultrapen D/BluetoothGatt: onClientConnectionState() - status=0 clientIf=8 device=00:13:43:07:98:D4
07-11 11:42:25.881 17649-17660/com.clavax.ultrapen I/BluetoothGatt 1: BRSP connection created 2 0
07-11 11:42:25.891 17649-17649/com.clavax.ultrapen D/BluetoothGatt: discoverServices() - device: 00:13:43:07:98:D4
07-11 11:42:25.891 17649-17649/com.clavax.ultrapen D/BluetoothGatt 1: Discover Services started: true
07-11 11:42:25.891 17649-17649/com.clavax.ultrapen I/BluetoothGatt 1: connection created
07-11 11:42:26.081 17649-17660/com.clavax.ultrapen D/BluetoothGatt: onClientConnParamsChanged() - Device=00:13:43:07:98:D4 interval=6 status=0
07-11 11:42:26.541 17649-17661/com.clavax.ultrapen D/BluetoothGatt: onSearchComplete() = Device=00:13:43:07:98:D4 Status=0
07-11 11:42:26.541 17649-17661/com.clavax.ultrapen I/BluetoothGatt 1: BRSP service discovered
07-11 11:42:26.541 17649-17661/com.clavax.ultrapen D/BluetoothGatt: setCharacteristicNotification() - uuid: fdd6b4d3-046d-4330-bdec-1fd0c90cb43b enable: true
07-11 11:42:26.541 17649-17661/com.clavax.ultrapen I/BluetoothGatt 1: BRSP service discovered 2
07-11 11:42:26.551 17649-17660/com.clavax.ultrapen I/BluetoothGatt 1: BRSP description write
07-11 11:42:26.551 17649-17660/com.clavax.ultrapen I/BluetoothGatt 1: BRSP initstate1
07-11 11:42:26.551 17649-17660/com.clavax.ultrapen D/BluetoothGatt: setCharacteristicNotification() - uuid: 18cda784-4bd3-4370-85bb-bfed91ec86af enable: true
07-11 11:42:26.551 17649-17660/com.clavax.ultrapen I/BluetoothGatt 1: BRSP initstate notification1true
07-11 11:42:26.561 17649-17661/com.clavax.ultrapen D/BluetoothGatt: onClientConnParamsChanged() - Device=00:13:43:07:98:D4 interval=39 status=0
07-11 11:42:27.051 17649-17649/com.clavax.ultrapen I/BluetoothGatt 1: l;e scanningtrue
07-11 11:42:27.131 17649-17649/com.clavax.ultrapen I/BluetoothGatt 1: BRSP initstate write1true
07-11 11:42:46.571 17649-17661/com.clavax.ultrapen I/BluetoothGatt 1: BRSP description write
07-11 11:42:46.571 17649-17661/com.clavax.ultrapen I/BluetoothGatt 1: BRSP initstate2
07-11 11:42:46.581 17649-13359/com.clavax.ultrapen D/BluetoothGatt: onClientConnectionState() - status=8 clientIf=8 device=00:13:43:07:98:D4
07-11 11:42:46.581 17649-13359/com.clavax.ultrapen I/BluetoothGatt 1: BRSP disconnection created 0 8 ******//here is the error throw******

如上面的日志,第一次显示数据,但在第二次我得到 的问题状态 8 ,它会在 3 或 4 次成功连接后发生。我的想法是,如果代码中有问题,那么它不会给我一个成功的连接。

//BluetoothServiceClass中的蓝牙Gatt回调
@Override
public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
String intentAction;
if (newState == BluetoothProfile.STATE_CONNECTED) {
int inputBufferSize = 1000;
int outputBufferSize = 1000;
_lastRTS = 0;
inputBufferSize = (inputBufferSize < 1) ? DEFAULT_BUFFER_SIZE : inputBufferSize;
inputBufferSize = (inputBufferSize < 1) ? DEFAULT_BUFFER_SIZE : inputBufferSize;

setBuffers(inputBufferSize, outputBufferSize);


Log.i("BluetoothGatt 1", "BRSP connection created " + newState + " " + status);
intentAction = ACTION_GATT_CONNECTED;
mConnectionState = STATE_CONNECTED;
broadcastUpdate(intentAction);
// Attempts to discover services after successful connection.

Log.d(TAG, "Device connected");
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
boolean ans = mBluetoothGatt.discoverServices();
Log.d("BluetoothGatt 1", "Discover Services started: " + ans);
}
});


} else if (newState == BluetoothProfile.STATE_DISCONNECTED) {
intentAction = ACTION_GATT_DISCONNECTED;
mConnectionState = STATE_DISCONNECTED;
Log.i("BluetoothGatt 1", "BRSP disconnection created " + newState + " " + status);

// refreshDeviceCache(gatt);
mBluetoothGatt.close();

_initState = 0;
_lastRTS = 0;
_lastRTS = 0;
setBuffers(_inputBuffer.size() + _inputBuffer.remainingCapacity(), _outputBuffer.size() + _outputBuffer.remainingCapacity());
if (status != 8 && status != 22)
broadcastUpdate(intentAction);
else
connect(mBluetoothDeviceAddress);
// mBluetoothGatt.close();
}
}
@Override
public void onServicesDiscovered(BluetoothGatt gatt, int status) {

Log.i("BluetoothGatt 1", "BRSP service discovered");
BluetoothGattService brspService1 = gatt.getService(BRSP_SERVICE_UUID1);
BluetoothGattService brspService = gatt.getService(BRSP_SERVICE_UUID);
List<BluetoothGattService> brspservices = getSupportedGattServices();

if (brspService != null) {
// Call the first write descriptor for initializing the BRSP
// serrvice.
mBluetoothGatt.setCharacteristicNotification(brspService.getCharacteristic(BRSP_RTS_UUID), true);
BluetoothGattDescriptor RTS_CCCD = brspService.getCharacteristic(BRSP_RTS_UUID).getDescriptor(
UUID.fromString("00002902-0000-1000-8000-00805f9b34fb"));
RTS_CCCD.setValue(BluetoothGattDescriptor.ENABLE_INDICATION_VALUE);
mBluetoothGatt.writeDescriptor(RTS_CCCD);

Log.i("BluetoothGatt 1", "BRSP service discovered 2");
}
}

@Override
public void onCharacteristicRead(BluetoothGatt gatt,
BluetoothGattCharacteristic characteristic,
int status) {
Log.i("BluetoothGatt 1", "BRSP characteristic read 1");
if (_initState < _initStepCount) {
doNextInitStep();
}
if (characteristic.getUuid().equals(BRSP_INFO_UUID)) {
characteristic.getIntValue(BluetoothGattCharacteristic.FORMAT_UINT8, 1);
Log.i("BluetoothGatt 1", "BRSP characteristic read 2");
}
}

@Override
public void onCharacteristicWrite(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) {
super.onCharacteristicWrite(gatt, characteristic, status);

Log.i("BluetoothGatt 1", "BRSP characteristic write 1");
if (_initState < _initStepCount) {
doNextInitStep();
}
if (characteristic.getUuid().equals(BRSP_RX_UUID)) {
if (status == BluetoothGatt.GATT_SUCCESS) {
/* _lastBytes = null;
if (_outputBuffer.isEmpty())
_brspCallback.onSendingStateChanged(Brsp.this);*/
Log.i("BluetoothGatt 1", "BRSP characteristic write 2");
}
_sending = false;
sendPacket();
// debugLog("RX characteristic wrote");
} else if (characteristic.getUuid().equals(BRSP_MODE_UUID)) {
characteristic.getIntValue(BluetoothGattCharacteristic.FORMAT_UINT8, 0);
Log.i("BluetoothGatt 1", "BRSP characteristic write 3");
_outputBuffer.clear();
String intentAction = ACTION_Eco_Send;
broadcastUpdate(intentAction);
}
if (status != 0) {
if (status == 15) {
// Can't figure out a fix to the pairing issues as of yet
// _gatt.getDevice().createBond();
// TODO: Resend last write once bonded?
}
}
}

@Override
public void onDescriptorRead(BluetoothGatt gatt, BluetoothGattDescriptor descriptor, int status) {
Log.i("BluetoothGatt 1", "BRSP description read");
if (_initState < _initStepCount) {
doNextInitStep();
}
super.onDescriptorRead(gatt, descriptor, status);
}

@Override
public void onDescriptorWrite(BluetoothGatt gatt, BluetoothGattDescriptor descriptor, int status) {
Log.i("BluetoothGatt 1", "BRSP description write");
if (_initState < _initStepCount) {
doNextInitStep();
}
super.onDescriptorWrite(gatt, descriptor, status);
}

@Override
public void onCharacteristicChanged(BluetoothGatt gatt,
BluetoothGattCharacteristic characteristic) {

Log.i("BluetoothGatt 1", "BRSP characteristic change 1");

if (_initState < _initStepCount) {
doNextInitStep();
} else {
if (characteristic.getUuid().equals(BRSP_TX_UUID)) {
Log.i("BluetoothGatt 1", "BRSP characteristic change 2");

broadcastUpdate(ACTION_DATA_AVAILABLE, characteristic);
} else if (characteristic.getUuid().equals(BRSP_RTS_UUID)) {
Log.i("BluetoothGatt 1", "BRSP characteristic change ");
_lastRTS = characteristic.getIntValue(BluetoothGattCharacteristic.FORMAT_SINT8, 0);
}
}
}
};



private void doNextInitStep() {
_initState++;
// debugLog("initState:" + _initState);
Log.i("BluetoothGatt 1", "BRSP initstate" + _initState);
BluetoothGattService brspService = mBluetoothGatt.getService(BRSP_SERVICE_UUID);
if (brspService == null)
Log.i("BluetoothGatt 1", "BRSP brsp service null");

switch (_initState) {
case 1:
boolean initstateNotification = mBluetoothGatt.setCharacteristicNotification(brspService.getCharacteristic(BRSP_TX_UUID), true);
Log.i("BluetoothGatt 1", "BRSP initstate notification" + _initState + initstateNotification);
final BluetoothGattDescriptor TX_CCCD = brspService.getCharacteristic(BRSP_TX_UUID).getDescriptor(
UUID.fromString("00002902-0000-1000-8000-00805f9b34fb"));
TX_CCCD.setValue(BluetoothGattDescriptor.ENABLE_INDICATION_VALUE);
Log.d(TAG, "Device connected");
new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
@Override
public void run() {
boolean initstatewrite = mBluetoothGatt.writeDescriptor(TX_CCCD);
Log.i("BluetoothGatt 1", "BRSP initstate write" + _initState + initstatewrite);
}
}, 500);
break;
case 2:
final BluetoothGattCharacteristic brspInfo = brspService.getCharacteristic(BRSP_INFO_UUID);
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
boolean initstateread = mBluetoothGatt.readCharacteristic(brspInfo);
Log.i("BluetoothGatt 1", "BRSP initstate read" + _initState + initstateread);
}
});

break;
case 3:
setBrspMode(BRSP_MODE_DATA); // Important: Make sure this is the
// last init step
break;
default:
break;
}
if (_initState == _initStepCount) {
// _brspState = BRSP_STATE_READY;
// _brspCallback.onBrspStateChanged(this);
}
}

最佳答案

发生的问题由我解决。

我看到有很多与状态 8 和 22 相关的问题发生在我们连接到设备时。我是说这是状态 8 和 22 的确切答案,但在某些情况下这将是原因。

发生这种情况是因为当我们成功发现服务后,我们写入描述符并立即调用 ondescripte 覆盖方法,然后进行读写操作。那么会发生什么,不执行一个进程可能会产生这些问题。

我发现的解决方案效果很好。总是尝试使活套处理程序 ,以便我延迟完成一次执行。

       new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
@Override
public void run() {
mBluetoothGatt.writeDescriptor(RTS_CCCD); //for descriptor
// or
mBluetoothGatt.readCharacteristic(brspInfo); //for read
//or
mBluetoothGatt.writeCharacteristic(brspInfo); //for write
}
}, 500);

为什么和什么状态 8 问题 here .

为什么和什么状态 22 问题 here .

关于android - 蓝牙 Gatt 问题 onClientConnectionState() - status=8 clientIf=29,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45027406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com