【问题标题】:Application hangs on BluetoothSocket.connect(), hangs on InputStream.read(), can't disconnect after connect()应用程序在 BluetoothSocket.connect() 上挂起,在 InputStream.read() 上挂起,在 connect() 后无法断开连接
【发布时间】:2014-05-06 15:05:42
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: android sockets bluetooth inputstream


    【解决方案1】:

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

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

    所以总结一下,如果有人遇到和我上面一样的问题,不要调试这种情况,而是用Release模式运行,如果你需要测试一些东西,在这种情况下使用logcat。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-12
      • 2016-07-20
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 2013-09-29
      • 2012-11-04
      相关资源
      最近更新 更多