我正在上传字符串和照片,一切运作良好。现在,我想在上传数据时显示进度条,并显示百分比,但百分比很快就会显示到100%,然后需要一些时间来上传并最终到达执行方法。
protected class upload_images extends AsyncTask<String, Integer, String> {
ProgressDialog progressDialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
// showDialog(progress_bar_type);
progressDialog = new ProgressDialog(Accept_Report.this);
progressDialog.setCancelable(false);
// dialog.setCanceledOnTouchOutside(false);
progressDialog.setIndeterminate(false);
// progressDialog.setMax(100);
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
// progressDialog.setProgress(0);
progressDialog.setMax(100);
// progressDialog.setMessage("Loading ...");
progressDialog.show();
// ProgressBar progressBar = (ProgressBar)findViewById(R.id.progressBar2);
}
@Override
protected String doInBackground(String... params) {
URL url;
HttpURLConnection connection = null;
String http=Util.URL+"reports/media/create";
try {
url = new URL(http);
connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.setRequestMethod("POST");
/* connection.setConnectTimeout(50000);
connection.setReadTimeout(50000);*/
connection.setRequestProperty("Content-Type", "application/json");
connection.setRequestProperty("Content-Language", "en-US");
String encoded = Base64.encodeToString(("app" + ":" + "sFif4au7wet8gpsT0boK1oM2Yud6M1").getBytes("UTF-8"), Base64.NO_WRAP);
connection.setRequestProperty("Authorization", "Basic " + encoded);
connection.setUseCaches(false);
connection.setDoOutput(true);
connection.connect();
jsonArray = new JSONArray();
right = send_right.toString().replaceAll("\\[", "").replaceAll("\\]", "");
if((right!=null)&&(right!="")) {
JSONObject pnObj = new JSONObject();
pnObj.put("comments", right_cm);
pnObj.put("section", right_sec);
pnObj.put("pictures", right);
jsonArray.put(pnObj);
}
// return totalSize;
JSONObject jsonParam = new JSONObject();
jsonParam.put("media", jsonArray);
//Send request
int count = 0;
OutputStream wr = connection.getOutputStream();
InputStream inputStream = null;
byte[] payload = jsonParam.toString().getBytes("UTF-8");
int totalSze = payload.length;
Log.e("Total size ", "" + totalSze);
int bytesTransferred = 0;
int chunkSize = (2*totalSze)/100;
boolean last_loop = false;
// publishProgress(0);
while (bytesTransferred < totalSze) {
Log.e("bytes transferred", "" + bytesTransferred);
int nextChunkSize = totalSze - bytesTransferred;
Log.e("nextchunck",""+nextChunkSize);
//int writer_size = wr.toString().getBytes("UTF-8").length;
Log.e("chunk size", "" + chunkSize);
if (nextChunkSize > chunkSize) {
nextChunkSize = chunkSize;
}
wr.write(payload, bytesTransferred, nextChunkSize);
bytesTransferred += nextChunkSize;
Log.e("byte",""+wr.toString().getBytes("UTF-8").length);
Log.e("progress-transferred", "" + bytesTransferred +" total "+totalSze);
double cal = (( (double)bytesTransferred / (double) totalSze) * 100);
double rounded = (double) Math.round(cal * 100.0) / 100.0;
Log.e("progress",""+(int)rounded);
publishProgress((int)rounded);
wr.flush();
wr.close();
}catch(Exception e){
Log.d("Exception", e.toString());
}
}*/
Log.e("While loop exit", "");
/* wr.flush ();
wr.close();*/
}catch (OutOfMemoryError e)
{
e.printStackTrace();
}
//Get Response
StringBuilder sb = new StringBuilder();
HttpResultimage =connection.getResponseCode();
Log.e("res",""+HttpResultimage);
if(HttpResultimage==204)
{
BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream(),"utf-8"));
String line = null;
while ((line = br.readLine()) != null) {
sb.append(line + "\n");
}
br.close();
System.out.println("" + sb.toString());
}else{
}
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
if(connection != null) {
connection.disconnect();
}
}
return null;
}
@Override
protected void onProgressUpdate(Integer... values){
super.onProgressUpdate(values);
// Log.e("dfsf",""+values[0]);
progressDialog.setProgress(values[0]);
// progressDialog.setProgress(values[0]);
}
@Override
protected void onPostExecute(String result) {
if (HttpResultimage==204) {
progressDialog.dismiss();
}
}
}