我正在编写一个使用 RFCOMM 通过蓝牙连接到设备的 android 应用程序。我使用 BluetoothChat 示例作为建立连接的基础,并且大多数情况下一切正常。
但是,有时由于套接字已打开的消息,我无法重新连接:
RFCOMM_CreateConnection - 已打开状态:2,RFC 状态:4,MCB 状态:5
如果我连接到设备,关闭应用程序(调用 onDestroy()),重新打开它并尝试再次连接,这往往会发生,这会导致上述情况。
我使用此方法在 ConnectThread 中进行连接(ref.BluetoothChat 示例):
Method m = device.getClass().getMethod("createRfcommSocket",new Class[] {int.class });
tmp = (BluetoothSocket) m.invoke(device, Integer.valueOf(1));
mmSocket = tmp;
解决此问题的唯一方法是关闭/打开 Android 手机的蓝牙。
这使我相信套接字没有在 onDestroy() 中关闭,但我仍然要求关闭所有线程,如前面提到的示例所示。
任何想法,将不胜感激。