Android BluetoothGatt:回调中未处理的异常

时间:2015-02-08 23:45:38

标签: android bluetooth

我写了一个Android应用程序(4.4.2),它可以在大多数情况下正确连接/断开BLE外设。但是,每隔一段时间我就会在Bluetootgatt.java onClientConnectionState()中收到NullPointerException的LogCat警告: error

我的BluetoothGattCallback回调如下:

@Override
public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) 
{
if (status == BluetoothGatt.GATT_SUCCESS && newState == BluetoothProfile.STATE_CONNECTED) 
{
     gatt.discoverServices();   // triggers onServicesDiscovered() callback
} 
else if (status == BluetoothGatt.GATT_SUCCESS && newState == BluetoothProfile.STATE_DISCONNECTED) 
{
      return;
} 
else if (status != BluetoothGatt.GATT_SUCCESS) 
{
     gatt.disconnect();
}
}

应用程序始终在连接时正确转到onConnectionStateChange newState == STATE_CONNECTED回调,但是当它抛出异常时(在应用程序断开连接时),它永远不会进入onConnectionStateChange回调中的任何位置。我在2013 Nexus 7上运行此操作。为什么会发生此异常?

1 个答案:

答案 0 :(得分:3)

这似乎是由我在onPause()函数中调用disconnect()后跟close()引起的。我删除了disconnect(),close()处理断开连接,我不再看到异常了。