2012-03-08 106 views
2

我有一個運行在三星Galaxy S手機上的Android應用程序。該應用程序通過藍牙從設備收集傳感器數據。大部分情況下,沒有數據被髮送/接收。我設置了我的應用程序,以便在連接「丟失」的情況下與藍牙設備「自動重新連接」。三星Galaxy S上的藍牙通信

我注意到,在運行應用程序約1.5小時後,手機失去了與藍牙設備的連接,自動重新連接失敗。

從設備向手機發送傳感器數據是「關鍵任務」。我怎樣才能確保連接不會丟失。解決方案需要最佳。也就是說,爲了節省電池,手機需要能夠休眠/休眠。

回答

1

您應該只是監聽爲斷開傳入連接(使用BluetoothServerSocket)。它應該運行在前臺服務中,永遠不會停止。 該服務將監視每種情況(ASyncTasks)的藍牙連接狀態(斷開,偵聽,連接)和垃圾郵件線程。 )

建立一個監聽BluetoothServerSocket這是準備進入的連接,使用BluetoothAdapter.listenUsingRfcommWithServiceRecord(:

線程應該做的完全一樣在Android documentation說。然後調用accept()來監聽傳入的連接請求。

爲了進一步節省電池,用戶可以關閉藍牙 - 這會殺了你的監聽線程,但不是整個服務(進入斷開狀態)。 當用戶重新啓動藍牙時,您的服務應該注意到更改並重新啓動監聽線程。

0

我的一個朋友也有類似的問題,他 現在採用的是Android應用程序「BluetoothKeepalive」 避免連接losts