我有一些Android藍牙的東西問題。 當我打電話藍牙InputStream.read()不會永久返回數據和塊
bytes = mmInStream.read(buffer);
它通常工作,因爲它應該。 但是,在Cat B15智能電話上,即使連接仍在運行且數據應該到達,讀取方法有時會永久阻止。 我已經暫時通過這段代碼解決了這個問題:
while (true) {
int available = 0;
try {
available = mInStream.available();
} catch (IOException e) {}
if (available > 0) {
try {
bytes = mInStream.read(buffer);
ioExceptionsCounter = 0;
// [send the obtained bytes to the UI activity]
// ...............
} catch (IOException e) {
++ioExceptionsCounter;
if (ioExceptionsCounter >= 4) {
break;
}
}
}
try {
Thread.sleep(10);
} catch (InterruptedException e) {}
}
我不認爲ioExceptionsCounter真的是必要的,但有一些抱怨,有時斷開沒有道理的,所以我想一個IOException異常可能不足以關閉連接。
我真的不喜歡這個,它使用輪詢。它現在可以在Cat手機上工作,但它並不讓我感到高興,所有其他設備現在都執行這個難看的代碼。
你有什麼想法,爲什麼這可能是?這只是一個手機的錯誤?順便說它運行ICS,但它絕對是設備特定的。
我在魅族m2手機中遇到了這個bug。你有沒有找到任何解決方法?在我的代碼上,它提供大約10-15分鐘的數據,每4分鐘發送一次事件。但是之後會阻止。 – user303730 2015-10-28 11:24:12