gpt4 book ai didi

java - 不规则的蓝牙传输速度?

转载 作者:行者123 更新时间:2023-11-30 03:18:24 25 4
gpt4 key购买 nike

我目前正在通过蓝牙在两个设备之间发送许多包含数据的单独字符串,但是由于某种原因,传输类似字符串需要不规则的时间。下面是两个相似字符串的写入时间的示例:

String: K:92:281:-50529028
Write time: 2
String: K:93:281:-50529028
Write time: 41

测量的时间以毫秒为单位。这是我的写函数,我正在使用 BufferedOutputStream 来传输数据:

public synchronized void write(byte[] bytes) {
long writeTime = System.currentTimeMillis();
try {
mmOutStream.write(bytes,0,bytes.length);
mmOutStream.write('\n');
mmOutStream.flush();
}catch(IOException e) {
Log.e(TAG,"Write IOException");
cancel();}
String s = new String(bytes);
Log.d(TAG,"String: " + s);
Log.d(TAG,"Write time: " + (System.currentTimeMillis() - writeTime));
}

是否有可能是因为我正在执行单独的写入而不是一次大的统一写入,所以它大大减慢了它的速度?

最佳答案

根据个人经验,写入之间的延迟(数据从一台设备传输到另一台设备所花费的时间)可能会有很大差异,并且还取决于所使用的 Android 设备(或 Android 操作系统)。请记住,有一定数量的操作系统框架代码必须处理您的数据写入,然后是蓝牙堆栈本身,所有这些都需要 CPU 时间来处理。这也可能部分归因于蓝牙协议(protocol)的框架,因为数据是通过数据包在空中发送的。

如果您的特定示例显示在第一次写入之后立即执行第二次写入,则第二种情况下的较长时间可能是由于底层 native write() 调用阻塞了一段时间,因为底层操作系统仍在处理第一个缓冲区.

我认为您希望获得的最佳答案是接受这种延迟的存在,并设计您的应用程序来应对它。如果您进行更大的写入,您可能会获得更好的吞吐量。

关于java - 不规则的蓝牙传输速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19635858/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com