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
Vous devez vous connecter pour publier un commentaire.
Découvrez ce tutoriel - http://www.androidhive.info/2014/12/android-uploading-camera-image-video-to-server-with-progress-bar/
Prendre un coup d'oeil à ce gist, vous pourrez y trouver plein de travail exaple
Vous devez d'abord créer un personnalisé RequestBody avec une interface sorcière mise à jour de votre barre de progression.
vous pouvez copier cette classe est
Maintenant dans votre activité ou fragment de mettre en œuvre les ProgressListener de la ProgressRequestBody classe et appelez l'une des méthodes suivantes
jsonParam
de la base sur laquelle vous publier les progrès réalisés.http://samir-mangroliya.blogspot.in/p/android-asynctask-example.html
Veuillez ouvrir le lien ci-dessus,vous trouverez la meilleure réponse possible.
Assurez-vous de rincer à l'intérieur de la boucle while avant la mise à jour des progrès: