2012-04-18 136 views
0

在我的PC上,我啓動了一個服務器,通過藍牙將字節發送到Android手機。 我每隔10秒發送一次使用相同輸出流的不同字節。Java/Android - 從輸入流讀取後寫入輸出流

outputStream.write(buffer); 
outputStream.flush(); 
thisThread.sleep(10000); 

緩衝區是一個字節組從而改變每次循環

現在我想讀取緩衝區的Android手機:

while((bytes = inputStream.read(buffer)) != -1) { 
    //do something 
} 
//do more 

我現在的問題是,讀(緩衝)犯規回報 - 1。 我如何通知Android手機的字節已被轉移,所以我可以做 我希望在while循環後的事情?

+0

我更喜歡對象流,它解決了這樣的問題 – sherif 2012-04-18 19:47:33

+0

從來沒有嘗試過對象流,從來沒有聽說過它。所以我必須將我的bytearray轉換爲一個對象並調用ObjectOutputStream.writeObject(object)? – tschakkkiiiii 2012-04-19 20:22:42

+0

ObjectStreams是關於java的最好的想法之一。你的類必須實現可序列化的接口(它只是一個形式沒有函數),那麼你創建一個ObjectOutputStream:new ObjectOutputStream(someOtherStream)它就是它http://tutorials.jenkov.com/java-io/objectoutputstream.html – sherif 2012-04-20 21:23:45

回答

0

試試這個...

while((bytes = inputStream.read(buffer)) > 0) 
{ 
// 
} 
+0

也沒有工作 – tschakkkiiiii 2012-04-19 20:19:00

2

你試過在關閉PC端連接?從你的例子看來你沒有。

如果你不想關閉PC端的連接,然後發送已知的字節序列,它會告訴andorid應用程序PC端完成發送數據,即。正在等待響應

+0

試圖關閉,但沒有奏效。另外我不想關閉它。最後,我用你所建議的已知序列做了它。 – tschakkkiiiii 2012-04-19 20:20:17