1. 程式人生 > >問題:解決Android中socket自動斷開連線

問題:解決Android中socket自動斷開連線

在strain sensor APP開發過程當中,需要客戶端不斷地讀取從藍芽模組傳送過來的資料。

遇到的問題
連線上藍芽模組後,能夠正常讀數,藍芽資料傳送速率為0.03s每個。大概在傳送了342個數據之後,突然接收不到資料了。

後來查找了資料,顯示原來Android中藍芽socket通訊連線時長大概為120s,如果超過這個時間沒有操作,就會斷開連線。但是我想了一下,客戶端一直在讀取資料流的呀,怎麼是沒有操作呢??

查了關於心跳包的內容,覺得好像有點麻煩。因為我之前的程式並沒有用到service。

解決方法:然後抱著試試看的態度,從客戶端每隔一段時間(只要小於120秒就好)向藍芽模組傳送不被解析的指令。結果就不會出現socket斷開的情況了。(也就是說為了保持通訊正常,不僅要接收資料,還要傳送資料

大致像這樣:

 if(framesHasRead==framesToRead)
               {
                   byte buffer = 0;
                   try {
                    mmOutStream.write(buffer);
                    mmOutStream.flush();
                        } catch (IOException e) {
                        e.printStackTrace();
                    }
               }

還是很開心的。不過決定今後新建一個工程的時候,改用service試試看,應該會條理清楚一點。