我正在尝试开发一个
Android应用程序来衡量我的网络的上传和下载速度,这可能是我需要运行并每隔2秒钟对其进行一次配置. SpeedTest.net应用程序是一个理想的应用程序,但它不是开源的.而且,我需要它每2秒运行一次.完成测试需要几秒钟.
我怎样才能做到这一点?目前我只是在互联网上的某个地方下载一个小的随机.txt文件,并测量下载速度的大小/下载时间.但每次都会得到奇怪的结果.显然这种方法不起作用.
更新:下载完成.有关如何实现上传速度的任何建议?
解决方法
你需要下载一个相当大的文件,下载至少需要15秒.文件越大,您获得的结果就越好.使用具有高可用性的永远在线服务器.另外,仅在网络调用时使用累积(我相信你必须使用一些套接字来读取while循环.所以在socket.read()之前和之后做System.currentTimeMillis()并继续添加它们)
这几乎就是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); } }