android获取进度条百分比,android – 如何在上传json数据时按百分比显示进度条状态?...

我正在上传字符串和照片.它的工作正常.现在我想显示进度条,同时上传数据百分比,但百分比显示很快达到100%,并花费更多时间上传,最后进入后执行方法.

protected class upload_images extends AsyncTask {

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();

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值