我试图将我的信标连接到Gattservice上。在回调onConnectionStateChange中,它总是失败,我得到的结果是
状态代码133和257。
有些地方写到,133代表了许多连接。在我的代码中,有几行是gatt.disconnect()。 我不知道如何解决这个问题,因为所有其他gattexamples都是一样的。我使用的是安卓6.0.1版本和API 23,如果找到这个错误很重要的话。 这是我的代码。
public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
if(status == BluetoothGatt.GATT_SUCCESS) {
switch (newState) {
case BluetoothProfile.STATE_CONNECTED:
mBleDevices.add(gatt.getDevice());
Log.i("Beacons", "STATE_CONNECTED");
runOnUiThread(new Runnable() {
@Override
public void run() {
mBluetoothGatt.discoverServices();
break;
case BluetoothProfile.STATE_DISCONNECTED:
Log.e("Beacons", "STATE_DISCONNECTED");
mBleDevices.remove(gatt.getDevice());
mBluetoothGatt.disconnect();
mBluetoothGatt = null;
break;
default:
Log.e("Beacons", "STATE_OTHER");
} else {
Log.e("Beacons", "ERROR WITH CONNECTING " + status);
mBleDevices.remove(gatt.getDevice());
我的ScanCallback看起来像这样。
public void onScanResult(int callbackType, ScanResult result) {
runOnUiThread(new Runnable() {
@Override
public void run() {
BluetoothDevice btDevice = result.getDevice();
connectToDevice(btDevice);
并开始像这样的连接。
runOnUiThread(new Runnable() {
@Override
public void run() {
mBluetoothGatt = btDevice.connectGatt(getApplicationContext(), true, connectCallback);
connectCallback会引起onConnectionStateChange函数。
谢谢你的帮助!