连接 connectGatt 和 readCharacteristic BluetoothGatt断开连接并在ASUS设备上 onConnectionStateChange 。在sony xperia z2断开连接不会发生。我花了很多时间......有没有人有任何想法?
连接
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
mBluetoothGatt = mDevice.connectGatt(ActivityExamination.this, true, mCallback2 , BluetoothDevice.TRANSPORT_LE);
} else {
mBluetoothGatt = mDevice.connectGatt(ActivityExamination.this, true, mCallback2 );
}
和听众
BluetoothGattCallback mCallback2 = new BluetoothGattCallback() {
@Override
public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
super.onConnectionStateChange(gatt, status, newState);
Log.e("onConnectionStateChange", "STATUS: " + status + " STATE: " + newState);
switch (newState) {
case BluetoothProfile.STATE_CONNECTED:
Log.i("gattCallback", "STATE_CONNECTED");
gatt.discoverServices();
break;
case BluetoothProfile.STATE_DISCONNECTED:
//status is 8
Log.e("gattCallback", "STATE_DISCONNECTED");
Log.i("gattCallback", "reconnecting...");
gatt.connect();
break;
default:
Log.e("gattCallback", "STATE_OTHER");
}
}
@Override
public void onServicesDiscovered(BluetoothGatt gatt, int status) {
super.onServicesDiscovered(gatt, status);
Log.e("onServicesDiscovered", "STATUS: " + status);
BluetoothGattService mainService = mBluetoothGatt.getService(UUID_SERVICE_MAIN);
BluetoothGattService deviceInfoService = mBluetoothGatt.getService(UUID_SERVICE_DEVICE_INFO);
BluetoothGattCharacteristic mainCharacteristic = mainService.getCharacteristic(UUID_MAIN_DATA);
BluetoothGattCharacteristic modelCharacteristic = deviceInfoService.getCharacteristic(UUID_DEVICE_MODEL);
mBluetoothGatt.readCharacteristic(modelCharacteristic);
}
@Override
public void onCharacteristicRead(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) {
super.onCharacteristicRead(gatt, characteristic, status);
Log.e("onCharacteristicRead", "STATUS: " + status + " CHAR: " + characteristic.toString());
}
@Override
public void onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic) {
super.onCharacteristicChanged(gatt, characteristic);
Log.e("onCharacteristicChanged", "DESCRIPTOR: ");
}
@Override
public void onDescriptorWrite(BluetoothGatt gatt, BluetoothGattDescriptor descriptor, int status) {
super.onDescriptorWrite(gatt, descriptor, status);
Log.e("onDescriptorWrite", "DESCRIPTOR: " + descriptor.toString());
}
};
答案 0 :(得分:0)