我需要一些api或操作代码,通过它我可以从Android应用程序测量上传/下载速度和wifi连接的延迟.
Dav*_*ave 18
你使用的是2.2(Froyo)还是更高?
如果是这样,请在您的应用程序中导入流量统计信息,并在您的应用程序使用互联网时添加以下内容.
下载上载:
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.";
}
Run Code Online (Sandbox Code Playgroud)
现在你有testing[0]下载速度(粗略),testing[1]是你的上传速度(大致)
只是确保在实际进行网络通信时只调用此代码,否则时间会使结果产生偏差.
根据延迟,没有什么比这更好的了.我写过这个未经测试的,但应该可以正常工作,但可能有更好的解决方案.
延迟:
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
}
Run Code Online (Sandbox Code Playgroud)
注意:请记住,这不会说明您使用时的延迟,但会让您了解在特定时间段内使用的网络所遇到的延迟.此外,这是请求和响应时间,而不是请求到达网络时间,因为"ping"通常会这样做.
| 归档时间: |
|
| 查看次数: |
12137 次 |
| 最近记录: |