嗨 我想實現一個藍牙庫,並在其中我想連接一次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. 如何判斷插座是否連接?
- 2. Android如何判斷Internet連接是否正在使用?
- 3. TransactionScope如何判斷連接是否已被列入
- 4. 如何判斷USB是否連接到Android設備?
- 5. 如何判斷是否有任何MySQL連接已被刪除或超時?
- 6. 如何判斷一個連接是否在java中建立?
- 7. 如何判斷基於NetTcp的WCF連接是否中斷?
- 8. PHP是否總是需要連接?
- 9. 如何判斷另一條消息是否在TCP連接中
- 10. 測試連接是否已被調用
- 11. 在gevent gthreads上是否需要連接?
- 12. 如何判斷NSUserDefaults是否已保存?
- 13. 如何判斷NSManagedObject是否已保存?
- 14. GCM是否需要互聯網連接?
- 15. C++判斷是否連接了調試器
- 16. 如何判斷Objective-C iPhone是否連接到WiFi網絡?
- 17. 如何判斷是否連接到網站
- 18. 如何判斷STDIN是否連接到Perl的終端?
- 19. 如何判斷連接是否被測量?
- 20. Memcached PHP模塊:如何判斷連接是否失敗?
- 21. 如何判斷是否連接到互聯網
- 22. 如何判斷外設是否連接到GPIO?
- 23. 如何判斷sidekiq是否連接到redis服務器?
- 24. 如何判斷兩個人是否連接
- 25. Rmpi是否需要互聯網連接?
- 26. 是否需要關閉連接
- 27. Facebook連接集成:是否需要Flash?
- 28. ShareMediaTask是否需要數據連接
- 29. 是否需要重申websocket連接?
- 30. 連接失敗時是否需要mysql_close?
因爲我想寫一個同步(阻塞)調用方法,我會做一個寫然後馬上讀,這意味着我將無法維持循環並始終嘗試讀取的線程。然而,如果我理解你的答案是正確的,你說我應該假設,如果我從套接字的輸入或輸出流中得到一個讀取異常,我可以認爲連接已經死亡。那是對的嗎? – 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