在Android中上传和下载费率分析

时间:2016-02-21 13:33:27

标签: android networking android-networking speed-test

我正在尝试开发一个Android应用来衡量我的网络的上传和下载速度,这可能是我需要每2秒左右运行和分析一次。 SpeedTest.net app是一款理想的app工作方式,但它不是开源的。而且,我需要它每2秒运行一次。完成测试需要几秒钟。

我该怎么做?目前,我只是在互联网上的某处下载一个小的随机.txt文件,并测量size/time-to-download作为下载速率的衡量标准。但每次都会得到奇怪的结果。显然这种方法不起作用。

更新:下载完成。有关如何实现上传速度的任何建议吗?

2 个答案:

答案 0 :(得分:8)

你需要下载一个相当大的文件,下载至少需要15秒。文件越大,您获得的结果就越好。使用具有高可用性的永远在线服务器。此外,仅在您的网络呼叫时使用累积(我相信您必须使用某个套接字才能在while循环中进行读取。System.currentTimeMillis()之前和之后socket.read()也要保持SpeedTest.net并保持添加它们)

这几乎是upload (String remote, InputStream localfile){ Socket s = openDataConnection(remote); OutputStream os = new BufferedOutputStream (s.getOutputStream(), MAX_BUFFER_SIZE); byte[] buffer = new byte[MAX_BUFFER_SIZE]; long totalTime = 0L; while((buffer = localfile.read())!= -1){ long startTime = System.currentTimeMillis(); os.write(buffer); long endTime = System.currentTimeMillis(); totalTime += (endTime - startTime); } } 所做的事情

就上传而言,你可以做同样的事情。一个粗略的伪代码:

{{1}}

答案 1 :(得分:5)

要进行上传,您需要与服务器建立双向通信。我会用一个简单的循环来做到这一点:

while(x){
Starttime =getCurrentTime()
Sendfile() //Send a Xmb file that the server can verify
waitForVerification() // Wait for a reply from server.
compareCurrentTimeWithStartingTime() // compare the times.
}