Comment faire pour afficher la barre de progression de l'état en pourcentage alors que le téléchargement de données json?

Je suis le téléchargement de la chaîne et de la photo.et sa fonctionne très bien. Maintenant, je veux montrer la barre de progression lors du téléchargement de données avec pourcentage, mais le pourcentage de montrer très rapidement à 100 pourcentage et de prendre un peu plus de temps pour charger et enfin venu pour le post de la méthode execute.

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();
}
}
}
  • 1. 80% lors du téléchargement et de 20% lorsque vous obtenez la réponse, 2. Ne pas fermer le flux de sortie lors de l'écriture sur elle. juste le rincer. et après increament
  • j'ai été fermée flux de sortie dans mon codage et j'ai besoin de montrer pourcentage de téléchargement, un par un
  • pouvez utiliser cette bibliothèque:github.com/koush/ion
InformationsquelleAutor Ajin kumar | 2016-05-26