Helo。我正在開發一個通過藍牙傳輸數據的應用程序(使用飛行記錄器設備)。當我收到大量的數據數據時(3000 - 40000行文本,取決於文件大小),我的應用似乎停止接收數據。我用InputStream.read(buffer)接收數據。例如:我向飛行記錄器發送一個命令,它開始向我發送一個文件(逐行),在我的手機上我收到120行,然後應用程序發現。android - 藍牙:程序卡在輸入流中
Intresting是在我的HTC Desire上,應用程序只是在三星Galaxy S手機上進行掃描,每隔一段時間我都會嘗試收集超過50行的應用程序。
該代碼基於BluetoothChat示例。這是代碼,我正在聽的的BluetoothSocket部分:
byte[] buffer = new byte[1024];
int bytes =0;
while(true)
{
bytes = mmInStream.read(buffer);
readMessage = new String(buffer, 0, bytes);
Log.e("read", readMessage);
String read2 = readMessage;
//searching for the end of line to count the lines(the star means the start of the checksum)
int currentHits = read2.replaceAll("[^*]","").length();
nmbrOfTransferedFligts += currentHits;
.
.
.
//parsing and saving the recieved data
我必須說,我在一段時間(true)循環運行此,在一個線程,即在Android服務來實現。該應用程序似乎卡在「字節= mmInStream.read(緩衝區);」 我試圖用BufferedReader來做到這一點,但沒有成功。
謝謝。
非常感謝您的回答。 我試過了你的建議。行'bytes = mmInStream.read(buffer);'不拋出任何異常。但是我的設備一直在向我的手機發送數據(100%)。 似乎BluetoothSocket停止正常工作? 謝謝。 – Primoz990 2012-04-02 07:54:38
是的,這似乎是你的BluetoothSocket不能正常工作。您已經在HTC和三星設備上觀察到此問題,因此這不是供應商特定的錯誤。也許看一下Android問題列表,看看是否存在可能解釋這個問題的問題。我唯一能想到的其他事情就是查看系統中的logcat輸出。在我的手機BlueZ(Linux/Android藍牙堆棧)中,將大量調試語句放入logcat中。 – Tom 2012-04-02 15:18:16