我正在开发一个
Android应用程序,我需要尽可能准确地测量当前连接的下载速度.这是我到目前为止找到的最好的方法(基本上我启动一个计时器,开始从快速服务器下载Linux发行版,下载大约200千字节,然后停止计时器并检查已用时间和下载的总字节数):
try{
InputStream is = new URL(“http://www.domain.com/ubuntu-linux.iso”).openStream();
byte[] buf = new byte[1024];
int n = 0;
startBytes = TrafficStats.getTotalRxBytes(); /*gets total bytes received so far*/
startTime = System.nanoTime();
while(n<200){
is.read(buf);
n++;
}
endTime = System.nanoTime();
endBytes = TrafficStats.getTotalRxBytes(); /*gets total bytes received so far*/
totalTime = endTime – startTime;
totalBytes = endBytes – startBytes;
}
catch(Exception e){
e.printStackTrace();
}
之后,我只需要将传输的字节数除以所用的时间,它将以bps为单位给出下载速度.
问题:
这种方法准确吗?
你知道一个更好的吗?
非常感谢.