我已经实现了将android手机连接到我公司的医疗设备的测试应用程序,我无法弄清楚为什么我第二次无法连接到蓝牙设备。第一次connect()工作正常,但由于我无法正常断开连接,第二次(和后续)连接被挂起。
我遇到的第二个问题是,在几次读取之后,线程被阻塞并等待read()调用。
我正在正确关闭BluetoothSocket,并确保所有最终条款都写得正确。每次调试应用程序时,情况与3种不同的Android设备类似。
(解决我的问题如下,希望这会为某人节省一些无数小时)
答案 0 :(得分:-1)
Paradoxaly,代码完全没有问题。问题(尽管不完全确定)必须介于两者之间,但是当我在debbug模式下运行应用程序时,它会暴露出来。一旦我将我的测试方法更改为logcat,并在发布模式下运行,一切都按预期工作,因此read()调用没有阻塞,但是不断读取,并且BluetoothSocket.close()按预期工作。
似乎我的蓝牙设备正在如此快速地将字节发送到流中,在调试模式下有些东西无法处理(尽管我上面提到的,我不完全确定是什么原因)。
总而言之,如果某人遇到与我相同的问题,请不要调试这种情况,而是使用Release模式运行,如果需要测试某些内容,请在这种情况下使用logcat。