我有一些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