【发布时间】:2014-02-20 18:38:44
【问题描述】:
我正在研究安卓应用,我想构建示例代码来检查上传速度。
我已经建立了上传速度检查方法,但我不确定它是否正常工作。这是因为即使 android 手机没有正确的互联网连接,我的方法也会返回上传速度
我构建了类似的方法..
首先,读取 4.6 MB 的文本文件,然后存储到字符串变量中
第二,检查开始时间
第三,使用 post 方法和 nameValuePair 将 4.6MB 字符串变量发送到 Google 应用引擎(我的 google 应用引擎。它正在捕获字符串数据。它不做任何事情。)
四、检查结束时间
最后,获取(文件大小)/(结束时间 - 开始时间)作为上传速度
这是我的代码...
public double Get_UPload_Speed() throws IOException{
String file_path =("46.txt");
File gone = new File(file_path);
String line = "";
double filesize = bts.Get_File_Size(file_path);
int maxsize = rf.Get_Total_Line(file_path);
BufferedReader in = new BufferedReader(new FileReader(gone));
HttpPost httpPost = new HttpPost("http://google.app.engine.address.com");
List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(2);
StringBuilder stringBuilder = new StringBuilder();
for(int index = 0 ; index < maxsize ; index++){
if((line = in.readLine()) != null){
// keep appending line of text to String buffer
stringBuilder.append(line);
}
else{
break;
}
}
String UL_Packet = stringBuilder.toString();
double startTime = System.currentTimeMillis();
nameValuePair.add(new BasicNameValuePair("content",UL_Packet));
nameValuePair.add(new BasicNameValuePair("guestbookName", "default"));
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePair));
Log.d("UploadManager", "Upload Start: " + startTime + " secs");
Log.d("UploadManager", "Upload End: " + endTime + " secs");
Log.d("UploadManager", "Tranfer Time: " + tranferTime + " secs");
Log.d("UploadManager", "Size of file " + filesize + " MB");
double endTime = System.currentTimeMillis();
double tranferTime = (endTime - startTime)/1000;
double rate = filesize/ tranferTime;
Log.d("UploadManager", "Upload speed: "+rate +" Mbps");
return rate;
}
但是,我不确定这是否是提高上传速度的正确方法。
有没有可靠的方法来构建上传速度检查方法?
谢谢
【问题讨论】:
-
你的解决方案有什么问题,你得到了什么结果?
标签: java android tomcat servlets