android中的延迟时间

时间:2011-03-26 06:28:57

标签: android

我正在下载任何类型的文件,并希望计算下载文件的延迟时间。

Plzz帮助它在android中实现。

谢谢

2 个答案:

答案 0 :(得分:2)

对我来说,这样的事情可以解决问题:

Process process = Runtime.getRuntime().exec("ping -c 1 google.com");
process.waitFor();

您可以通过阅读进程提供的InputStream来解决问题。

答案 1 :(得分:0)

我一直在研究类似的问题。

这是我找到的一些相关资源。 How to test internet speed (JavaSE)?

此博客文章建议使用InetAddress.getByName(host).isReachable(timeOut),然后测量响应时间。

http://tech.gaeatimes.com/index.php/archive/how-to-do-icmp-ping-in-java-jdk-15-and-above/

这可能不是最佳解决方案,但很容易。所以这样的事情。

String host = "172.16.0.2";
int timeOut = 3000; 
long[] time = new long[5];
Boolean reachable;

for(int i=0; i<5; i++)
{
long BeforeTime = System.currentTimeMillis();
reachable =  InetAddress.getByName(host).isReachable(timeOut);
long AfterTime = System.currentTimeMillis();
Long TimeDifference = AfterTime - BeforeTime;
time[i] = TimeDifference;
}

现在你有一个包含5个值的数组,大致显示了查看机器是否可通过ping访问所需的时间;否则是假的。我们知道如果差异的时间是3秒然后超时,你还可以添加一系列布尔值以显示成功与失败率。

这并不完美,但会大致了解给定时间的延迟。

这与下面链接中找到的延迟定义相匹配,除了它测量的是发送和返回时间,而不是从发送方到接收方的时间: http://searchcio-midmarket.techtarget.com/definition/latency

定义:在网络中,延迟是延迟的同义词,表示数据包从一个指定点到另一个指定点需要多长时间。

进行更多研究表明,isReachable可能效果不佳。 Android Debugging InetAddress.isReachable

这可能会更好。

HttpGet request = new HttpGet(Url.toString());

HttpParams httpParameters = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters, 3000);
HttpClient httpClient = new DefaultHttpClient(httpParameters);
for(int i=0; i<5; i++)
{
long BeforeTime = System.currentTimeMillis();
HttpResponse response = httpClient.execute(request);
long AfterTime = System.currentTimeMillis();
Long TimeDifference = AfterTime - BeforeTime;
time[i] = TimeDifference;
 }

注意:请记住,这不会在您下载文件时说明延迟,但会让您了解在特定时间段内该网络遇到的延迟。

如果这有帮助,请接受此答案。