【发布时间】:2016-06-10 11:45:37
【问题描述】:
我正在查看来自 Google 的 Bluetooth Chat sample application,他们在 UI 线程上写信给 BluetoothSocket 的 OutputStream。那是对的吗?通常,流会阻塞,直到数据发送出去。
在我的测试中(使用那个应用程序),只要设备足够近,通信就会很及时。当他们走得更远时,连接断开了。这是通过蓝牙发送数据的正确方法吗?我的消息大小将增加 100-500 字节。
【问题讨论】:
-
你确定他们是在 main(ui) 线程上做的吗? "private class ConnectedThread extends Thread {" 复制自你的 github 链接
-
当他们走得更远时,连接被断开 - 这是正常行为,Android 根据 RSSI 参数自动处理它,有时使用握手包。有时它在硬件模块上实现,但在驱动程序级别的现代设备中实现。
-
是的,我确定它在 UI 线程上。从发送按钮的
onClick处理程序调用ConnectedThread.write()方法。我在调试器中检查了这个。 -
奥利夫是正确的。虽然写入是在 ConnectedThread 上的方法中执行的,但它不在 run() 方法中,这需要使用单独的线程进行写入。