volley studio example descargar custom android download android-volley

android - studio - Mostrar el valor de progreso para la descarga de archivos volley



volley master android (2)

Como mencionó que está utilizando InputStreamVolleyRequest , espero que haya escrito el siguiente código o algo similar también:

@Override public void onResponse(byte[] response) { HashMap<String, Object> map = new HashMap<String, Object>(); try { if (response!=null) { String content =request.responseHeaders.get("Content-Disposition") .toString(); StringTokenizer st = new StringTokenizer(content, "="); String[] arrTag = st.toArray(); String filename = arrTag[1]; filename = filename.replace(":", "."); Log.d("DEBUG::FILE NAME", filename); try{ long lenghtOfFile = response.length; InputStream input = new ByteArrayInputStream(response); File path = Environment.getExternalStorageDirectory(); File file = new File(path, filename); map.put("resume_path", file.toString()); BufferedOutputStream output = new BufferedOutputStream(new FileOutputStream(file)); byte data[] = new byte[1024]; long total = 0; while ((count = input.read(data)) != -1) { total += count; output.write(data, 0, count); } output.flush(); output.close(); input.close(); }catch(IOException e){ e.printStackTrace(); } } } catch (Exception e) { e.printStackTrace(); } }

Si ya has hecho esto, poner una barra de progreso es fácil. obtener ProgressDialog objeto ProgressDialog e inicializar como se muestra a continuación:

progressDialog = new ProgressDialog(Activity Context here); progressDialog.setTitle("Any Title here"); progressDialog.setMessage("Downloading in Progress..."); progressDialog.setProgressStyle(progressDialog.STYLE_HORIZONTAL); progressDialog.setCancelable(false); progressDialog.setMax(100); progressDialog.setProgress(0); progressDialog.show();

Luego simplemente modifica el ciclo while como se muestra a continuación:

while ((count = input.read(data)) != -1) { total += count; output.write(data, 0, count); progress = (int)total*100/file_length; progressDialog.setProgress(progress); }

Intenta eso y dejame saber.

Sin embargo, permítanme también informarles que Volley no es adecuado para descargas pesadas. Más bien, le sugiero que use DownloadManager o Apache''s HttpClient o incluso AsyncTask . Son más fáciles de usar y probablemente mejores para este propósito.

Necesito mostrar el progreso de la descarga de archivos en porcentaje.

Actualmente estoy usando la biblioteca de Volley . Utilizo la clase InputStreamVolleyRequest para realizar la solicitud de descarga y BufferedOutputStream para leer / escribir el archivo.

¿Cómo puedo mostrar la actualización de progreso de la manera más eficiente?