我的应用在连接到BLE设备时遇到问题。在应用程序尝试的每个连接上,它在OnConnectionStateChange()方法中获得错误代码0x0006(请求不受支持)。我尝试过蓝牙OFF / ON但仍然出现相同的错误。
我在LG D410(Android 5.0.2)中遇到了这个问题。将我的LG手机升级到5.0.2后,应用程序开始出现此错误。 我的应用程序与三星Galaxy S4(Android 5.1),Nexus 5(Android 6.0)一起正常工作。
为什么我收到此错误?可以做些什么来解决它?
以下是错误日志:
02-26 05:30:53.919 D/MyBluetoothClass-1392940(21607): trying to connect with address: 78:A5:04:86:D4:16
02-26 05:30:53.944 D/MyBluetoothClass-1392940(21607): Create a new GATT connection.
02-26 05:30:53.945 D/BluetoothGatt(21607): connect() - device: 78:A5:04:86:D4:16, auto: true
02-26 05:30:53.945 D/BluetoothGatt(21607): registerApp()
02-26 05:30:53.945 D/BluetoothGatt(21607): registerApp() - UUID=a81c9b62-f822-4e42-9af0-752a8eab82a1
02-26 05:30:53.947 D/BluetoothGatt(21607): onClientRegistered() - status=0 clientIf=5
02-26 05:30:53.947 D/MyBluetoothClass-1392940(21607): Connection attempt started; results reported asynchronously
02-26 05:30:53.947 D/BluetoothGatt(21607): refresh() - device: 78:A5:04:86:D4:16
02-26 05:30:53.950 D/BluetoothGatt(21607): onClientConnectionState() - status=6 clientIf=5 device=78:A5:04:86:D4:16
02-26 05:30:53.951 D/MyBTGattCallback(21607): onConnectionStateChange, newState: 0
02-26 05:30:53.951 E/MyBTGattCallback(21607): onConnectionStateChange status 0006 desc Req not supported
答案 0 :(得分:0)
我认为Android Lollipop版本的BlueDroid框架存在问题。
如果您使用connectGatt(Context context, boolean autoConnect, BluetoothGattCallback callback)
传递autoConnect = false;
使autoConnect为true会导致Lollipop版本中的onClientConnectionState异常,但在Marshmallow中可以正常工作。
我做到了。
@Override
protected void onStart() {
super.onStart();
Log.d(TAG,"connecting Gatt");
bluetoothGatt = bleScanResult.getBluetoothDevice().connectGatt(this, false, callback);
}
@Override
protected void onStop() {
super.onStop();
if (bluetoothGatt != null) {
Log.d(TAG,"disconnecting Gatt");
bluetoothGatt.disconnect();
bluetoothGatt.close();
bluetoothGatt = null;
}
}