在我的应用程序中,我有一个服务,它运行一个读取/写入BluetoothSocket
的线程。如果我在一台设备上显式关闭连接,则另一台设备的线程会立即抛出IOException
。这是理想的,因为我可以判断连接何时丢失。
但是,当设备距离很远时(超出蓝牙范围),线程似乎没有注意到。它不会抛出任何异常,并且似乎处于正常的连接状态。套接字仅在收到短信时写入。因此,也许当没有收到短信时,没有尝试读/写套接字,因此没有抛出异常。
如果设备距离太远,我怎么知道何时关闭连接?也许使用定时器定期尝试写入套接字会强制抛出异常?
答案 0 :(得分:1)
蓝牙试图通过增加发射机功率来保持连接。最好的办法是制作一个计时器,看看他们是否不再进行通信。