如何测量android wifi连接的上传/下载速度和延迟

我需要一些API或操作代码,我可以从Android应用程序测量上传/下载速度和无线连接的延迟。

Solutions Collecting From Web of "如何测量android wifi连接的上传/下载速度和延迟"

你使用2.2(Froyo)还是更高?

如果是这样,在您的应用程序中,导入stream量统计信息,以及您的应用程序使用互联网时添加以下内容。

下载上载:

long BeforeTime = System.currentTimeMillis(); long TotalTxBeforeTest = TrafficStats.getTotalTxBytes(); long TotalRxBeforeTest = TrafficStats.getTotalRxBytes(); /* DO WHATEVER NETWORK STUFF YOU NEED TO DO */ long TotalTxAfterTest = TrafficStats.getTotalTxBytes(); long TotalRxAfterTest = TrafficStats.getTotalRxBytes(); long AfterTime = System.currentTimeMillis(); double TimeDifference = AfterTime - BeforeTime; double rxDiff = TotalRxAfterTest - TotalRxBeforeTest; double txDiff = TotalTxAfterTest - TotalTxBeforeTest; if((rxDiff != 0) && (txDiff != 0)) { double rxBPS = (rxDiff / (TimeDifference/1000)); // total rx bytes per second. double txBPS = (txDiff / (TimeDifference/1000)); // total tx bytes per second. testing[0] = String.valueOf(rxBPS) + "B/s. Total rx = " + rxDiff; testing[1] = String.valueOf(txBPS) + "B/s. Total tx = " + txDiff; } else { testing[0] = "No uploaded or downloaded bytes."; } 

现在你已经testing[0]是你的下载速度(大致), testing[1]是你的上传速度(大致)

只要确保在实际进行networking通信时只调用此代码,或者时间会扭曲结果。

根据等待时间,这里没有什么了不起的。 我已经写了这个未经testing的,但应该可以正常工作,但是可能有更好的解决scheme。

延迟

 String host = YOUR_HOST HttpGet request = new HttpGet(host); 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 } 

注意:请注意,这并不是说您使用时的延迟,而是让您知道您在特定时间段使用的networking上的延迟。 此外,这是请求和响应时间,而不是像“ping”通常所做的那样达到networking时间的请求。