2011-08-31 61 views
0

在我的應用程序我有一個服務,運行一個線程,讀取/寫入BluetoothSocket。如果我明確地關閉了一臺設備上的連接,另一臺設備的線程立即拋出IOException。這是理想的,因爲我可以知道連接何時丟失。如果兩個Android藍牙設備不再實際連接到藍牙套接字

但是,當設備距離很遠(超過藍牙範圍)時,線程似乎沒有注意到。它不會拋出異常,並且似乎處於正常的連接狀態。套接字僅在接收到短信時寫入。所以也許在沒有收到短信的時候,沒有嘗試讀/寫套接字的事件發生,因此沒有任何例外情況被拋出。

如何知道何時關閉連接,如果設備間距過大?也許使用定時器來定期嘗試寫入套接字會強制拋出異常?

回答

1

藍牙嘗試通過增加發射機功率來保持連接,即使相隔甚遠。你最好的辦法是制定一個計時器,看看他們是否不再溝通。

+0

以及如何查看它們是否連接? – Mashhadi

+0

ping超時和'bluetoothSocket.isConnected()'的組合。 –