Android 应用程序挂起在BluetoothSocket.connect()上,挂起在InputStream.read()上,可以';连接后不要断开连接()

Android 应用程序挂起在BluetoothSocket.connect()上,挂起在InputStream.read()上,可以';连接后不要断开连接(),android,sockets,bluetooth,inputstream,Android,Sockets,Bluetooth,Inputstream,我已经为我的公司实现了将android手机连接到医疗设备的测试应用程序,我不明白为什么我不能第二次连接到蓝牙设备。第一次connect()工作正常,但由于无法正确断开连接,第二次(以及随后的)connect挂起 我遇到的第二个问题是,似乎在两次读取之后,线程被阻塞并等待read()调用 我正确地关闭了BluetoothSocket,并确保所有finally条款都写对了。每次我调试应用程序时,在3个不同的Android设备上的情况都是类似的 (下面是我的问题的解决方案,希望它能为某人节省无数的时间

我已经为我的公司实现了将android手机连接到医疗设备的测试应用程序,我不明白为什么我不能第二次连接到蓝牙设备。第一次connect()工作正常,但由于无法正确断开连接,第二次(以及随后的)connect挂起

我遇到的第二个问题是,似乎在两次读取之后,线程被阻塞并等待read()调用

我正确地关闭了BluetoothSocket,并确保所有finally条款都写对了。每次我调试应用程序时,在3个不同的Android设备上的情况都是类似的


(下面是我的问题的解决方案,希望它能为某人节省无数的时间)

。问题(虽然不完全确定)一定是介于两者之间,但当我以debbug模式运行应用程序时,它暴露了自己。一旦我将测试方法更改为logcat one,并在发布模式下运行,一切都按预期工作,因此read()调用没有阻塞,而是不断读取,BluetoothSocket.close()也按预期工作

似乎我的蓝牙设备向流中发送字节的速度太快了,以至于在调试模式下有些东西无法处理(尽管像我上面提到的,我不完全确定这是什么原因)

总而言之,如果有人会遇到和我一样的问题,不要调试这种情况,而是以发布模式运行,如果您需要测试一些东西,在这种情况下使用logcat