Android 蓝牙速度问题
Android Bluetooth speed issue
我正在开发一个客户端应用程序,用于通过 SPP(RFCOMM 通道)从 CSR 板读取数据。为此,我使用了 Android SDK(蓝牙聊天)中的示例应用程序,它适用于少量数据。但是当我将音乐从开发板流式传输到设备时,会出现延迟。我测量了 while 循环中的延迟,我们从连接到蓝牙套接字的 InputStream 读取数据并注意到一个有趣的时刻 - 延迟仅对于某些循环迭代很大,但对于其他循环,延迟非常小 - 例如 0-10 毫秒。也许有人知道为什么会这样?我该如何解决这个问题?
这是一个代码:
public void run() {
Log.i(TAG, "BEGIN mConnectedThread");
byte[] buffer = new byte[2048];
// Keep listening to the InputStream while connected
while (true) {
try {
// Read from the InputStream
int byteCount = mmInStream.read(buffer);
Log.d("unique_time", (System.currentTimeMillis() - lastTime) + " " + byteCount);
lastTime = System.currentTimeMillis();
} catch (IOException e) {
Log.e(TAG, "disconnected", e);
connectionLost();
break;
}
}
}
和示例日志(第一个数字 - 以毫秒为单位的增量时间,第二个 - 读取字节):
03-23 14:45:16.481 24432-25373/coderivium.sbctest D/unique_time﹕ 491 884
03-23 14:45:16.491 24432-25373/coderivium.sbctest D/unique_time﹕ 2 140
03-23 14:45:16.491 24432-25373/coderivium.sbctest D/unique_time﹕ 8 884
03-23 14:45:19.481 24432-25373/coderivium.sbctest D/unique_time﹕ 2985 884
03-23 14:45:19.491 24432-25373/coderivium.sbctest D/unique_time﹕ 7 884
03-23 14:45:19.491 24432-25373/coderivium.sbctest D/unique_time﹕ 2 214
03-23 14:45:19.501 24432-25373/coderivium.sbctest D/unique_time﹕ 12 884
03-23 14:45:19.501 24432-25373/coderivium.sbctest D/unique_time﹕ 2 140
03-23 14:45:19.511 24432-25373/coderivium.sbctest D/unique_time﹕ 7 884
03-23 14:45:19.511 24432-25373/coderivium.sbctest D/unique_time﹕ 1 74
03-23 14:45:19.531 24432-25373/coderivium.sbctest D/unique_time﹕ 21 884
03-23 14:45:19.531 24432-25373/coderivium.sbctest D/unique_time﹕ 2 140
03-23 14:45:19.551 24432-25373/coderivium.sbctest D/unique_time﹕ 11 884
03-23 14:45:19.551 24432-25373/coderivium.sbctest D/unique_time﹕ 6 884
03-23 14:45:19.561 24432-25373/coderivium.sbctest D/unique_time﹕ 7 884
03-23 14:45:19.561 24432-25373/coderivium.sbctest D/unique_time﹕ 1 214
03-23 14:45:19.571 24432-25373/coderivium.sbctest D/unique_time﹕ 11 884
03-23 14:45:19.581 24432-25373/coderivium.sbctest D/unique_time﹕ 6 884
03-23 14:45:19.581 24432-25373/coderivium.sbctest D/unique_time﹕ 1 214
03-23 14:45:19.591 24432-25373/coderivium.sbctest D/unique_time﹕ 7 884
03-23 14:45:19.591 24432-25373/coderivium.sbctest D/unique_time﹕ 6 884
03-23 14:45:19.591 24432-25373/coderivium.sbctest D/unique_time﹕ 2 214
03-23 14:45:19.601 24432-25373/coderivium.sbctest D/unique_time﹕ 7 884
03-23 14:45:19.661 24432-25373/coderivium.sbctest D/unique_time﹕ 57 884
03-23 14:45:19.661 24432-25373/coderivium.sbctest D/unique_time﹕ 2 214
03-23 14:45:19.671 24432-25373/coderivium.sbctest D/unique_time﹕ 6 884
03-23 14:45:19.671 24432-25373/coderivium.sbctest D/unique_time﹕ 6 884
03-23 14:45:19.681 24432-25373/coderivium.sbctest D/unique_time﹕ 2 214
03-23 14:45:19.681 24432-25373/coderivium.sbctest D/unique_time﹕ 6 884
03-23 14:45:19.691 24432-25373/coderivium.sbctest D/unique_time﹕ 6 884
03-23 14:45:19.691 24432-25373/coderivium.sbctest D/unique_time﹕ 2 204
好的。确实是董事会的问题。我开发了一个用于从 CSR 开发板读取流数据的客户端应用程序,我注意到它需要一个特殊的蓝牙天线。当我连接它时,速度提高了,延迟减少了。
我正在开发一个客户端应用程序,用于通过 SPP(RFCOMM 通道)从 CSR 板读取数据。为此,我使用了 Android SDK(蓝牙聊天)中的示例应用程序,它适用于少量数据。但是当我将音乐从开发板流式传输到设备时,会出现延迟。我测量了 while 循环中的延迟,我们从连接到蓝牙套接字的 InputStream 读取数据并注意到一个有趣的时刻 - 延迟仅对于某些循环迭代很大,但对于其他循环,延迟非常小 - 例如 0-10 毫秒。也许有人知道为什么会这样?我该如何解决这个问题?
这是一个代码:
public void run() {
Log.i(TAG, "BEGIN mConnectedThread");
byte[] buffer = new byte[2048];
// Keep listening to the InputStream while connected
while (true) {
try {
// Read from the InputStream
int byteCount = mmInStream.read(buffer);
Log.d("unique_time", (System.currentTimeMillis() - lastTime) + " " + byteCount);
lastTime = System.currentTimeMillis();
} catch (IOException e) {
Log.e(TAG, "disconnected", e);
connectionLost();
break;
}
}
}
和示例日志(第一个数字 - 以毫秒为单位的增量时间,第二个 - 读取字节):
03-23 14:45:16.481 24432-25373/coderivium.sbctest D/unique_time﹕ 491 884
03-23 14:45:16.491 24432-25373/coderivium.sbctest D/unique_time﹕ 2 140
03-23 14:45:16.491 24432-25373/coderivium.sbctest D/unique_time﹕ 8 884
03-23 14:45:19.481 24432-25373/coderivium.sbctest D/unique_time﹕ 2985 884
03-23 14:45:19.491 24432-25373/coderivium.sbctest D/unique_time﹕ 7 884
03-23 14:45:19.491 24432-25373/coderivium.sbctest D/unique_time﹕ 2 214
03-23 14:45:19.501 24432-25373/coderivium.sbctest D/unique_time﹕ 12 884
03-23 14:45:19.501 24432-25373/coderivium.sbctest D/unique_time﹕ 2 140
03-23 14:45:19.511 24432-25373/coderivium.sbctest D/unique_time﹕ 7 884
03-23 14:45:19.511 24432-25373/coderivium.sbctest D/unique_time﹕ 1 74
03-23 14:45:19.531 24432-25373/coderivium.sbctest D/unique_time﹕ 21 884
03-23 14:45:19.531 24432-25373/coderivium.sbctest D/unique_time﹕ 2 140
03-23 14:45:19.551 24432-25373/coderivium.sbctest D/unique_time﹕ 11 884
03-23 14:45:19.551 24432-25373/coderivium.sbctest D/unique_time﹕ 6 884
03-23 14:45:19.561 24432-25373/coderivium.sbctest D/unique_time﹕ 7 884
03-23 14:45:19.561 24432-25373/coderivium.sbctest D/unique_time﹕ 1 214
03-23 14:45:19.571 24432-25373/coderivium.sbctest D/unique_time﹕ 11 884
03-23 14:45:19.581 24432-25373/coderivium.sbctest D/unique_time﹕ 6 884
03-23 14:45:19.581 24432-25373/coderivium.sbctest D/unique_time﹕ 1 214
03-23 14:45:19.591 24432-25373/coderivium.sbctest D/unique_time﹕ 7 884
03-23 14:45:19.591 24432-25373/coderivium.sbctest D/unique_time﹕ 6 884
03-23 14:45:19.591 24432-25373/coderivium.sbctest D/unique_time﹕ 2 214
03-23 14:45:19.601 24432-25373/coderivium.sbctest D/unique_time﹕ 7 884
03-23 14:45:19.661 24432-25373/coderivium.sbctest D/unique_time﹕ 57 884
03-23 14:45:19.661 24432-25373/coderivium.sbctest D/unique_time﹕ 2 214
03-23 14:45:19.671 24432-25373/coderivium.sbctest D/unique_time﹕ 6 884
03-23 14:45:19.671 24432-25373/coderivium.sbctest D/unique_time﹕ 6 884
03-23 14:45:19.681 24432-25373/coderivium.sbctest D/unique_time﹕ 2 214
03-23 14:45:19.681 24432-25373/coderivium.sbctest D/unique_time﹕ 6 884
03-23 14:45:19.691 24432-25373/coderivium.sbctest D/unique_time﹕ 6 884
03-23 14:45:19.691 24432-25373/coderivium.sbctest D/unique_time﹕ 2 204
好的。确实是董事会的问题。我开发了一个用于从 CSR 开发板读取流数据的客户端应用程序,我注意到它需要一个特殊的蓝牙天线。当我连接它时,速度提高了,延迟减少了。