嗨 我想实现一个蓝牙库,并在其中我想连接一次rfcomm套接字,然后在所有调用中重复使用它。 我想知道它是否连接,以便知道我是否应该调用connect方法。 我无法在蓝牙套接字的源代码中找到任何内容,因为它都是本机调用,并且在API中没有定义isConnected方法...有没有人有过这方面的经验?Android,BluetoothSocket - 如何判断连接是否已经存在,或者是否需要调用连接?
回答
我想你会有一个成员变量保持连接的状态。在成功的连接上将它设置为true,启动一个线程,该线程总是从套接字输入流中读取字节,并且如果在该线程上发生IOException,则将您的标志设置为false。
我回答了类似的问题here。从API Level 14开始,可以使用BluetoothSocket类中的isConnected方法。对于较低的API级别,您可以打开一个套接字,完成您的工作并再次关闭它。然而,有些事情你可能需要考虑,更多的链接答案。
某些设备总是返回false方法isConnected – Anthone 2015-02-12 14:40:39
@Anthone afaik每规格应该工作。所以如果它不起作用,我会认为这是一个异常,它可能是有意义的提交错误报告。也可以暂时使用Icsmoretto的答案。 – AgentKnopf 2015-02-13 10:12:24
谢谢,省去了接线不必要的代码 – Joseph 2017-08-20 20:42:46
isConnected()从来不适合我。 尝试是这样的:
try {
mSocket.connect()
} catch (IOException e) {
// Create a new socket
// mSocket.connect();
}
如果列出isConnected不工作的设备并且可能为他们提供错误报告,这可能会有所帮助吗? – AgentKnopf 2015-02-13 10:10:28
- 1. TransactionScope如何判断连接是否已被列入
- 2. 如何判断USB是否连接到Android设备?
- 3. 如何判断是否有任何MySQL连接已被删除或超时?
- 4. 如何判断一个连接是否在java中建立?
- 5. 如何判断基于NetTcp的WCF连接是否中断?
- 6. 测试连接是否已被调用
- 7. 如何判断NSUserDefaults是否已保存?
- 8. 如何判断NSManagedObject是否已保存?
- 9. C++判断是否连接了调试器
- 10. 如何判断STDIN是否连接到Perl的终端?
- 11. Memcached PHP模块:如何判断连接是否失败?
- 12. 如何判断sidekiq是否连接到redis服务器?
- 13. 如何判断连接是否被测量?
- 14. 如何判断是否连接到互联网
- 15. 如何判断Objective-C iPhone是否连接到WiFi网络?
- 16. 是否需要重申websocket连接?
- 17. 是否需要关闭连接
- 18. 连接失败时是否需要mysql_close?
- 19. Facebook连接集成:是否需要Flash?
- 20. 是否需要socket.leave()在Nodejs中断开连接的房间
- 21. 用什么方法来判断用户是否连接到facebook
- 22. 如何判断属性是否需要调用?
- 23. 如何判断数据库是否需要在Android中升级?
- 24. 我们是否需要从Sharepoint断开连接?如果是如何?
- 25. 如何判断手机是否连接到无线网络或手机网络?
- 26. 如何判断Python SQLite数据库连接或游标是否关闭?
- 27. Apache NMS - 如何确定连接是否已经启动
- 28. 如何知道socket.Io是否连接android
- 29. 如何检查连接是否存活?
- 30. Android BluetoothSocket连接返回零
因为我想写一个同步(阻塞)调用方法,我会做一个写然后马上读,这意味着我将无法维持循环并始终尝试读取的线程。然而,如果我理解你的答案是正确的,你说我应该假设,如果我从套接字的输入或输出流中得到一个读取异常,我可以认为连接已经死亡。那是对的吗? – ekatz 2011-05-19 15:15:19
是afaik如果你得到任何ioexception,你可以认为它死了 – jkhouw1 2011-05-19 15:32:08
是IO异常或“蓝牙断开”的意图告诉我们,连接已经死亡。检查出https://github.com/gtosoft/libvoyager/blob/master/src/com/gtosoft/libvoyager/android/ELMBT.java – 2011-05-19 16:53:34