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?
Estoy usando la barra de progreso con HttpClient así que si quieres hacer un progreso, mi sugerencia es usar el cliente HTTP para que puedas hacer exactamente lo que quieras
Aquí está Link: http://www.androidhive.info/2014/12/android-uploading-camera-image-video-to-server-with-progress-bar/
Espero que esto te ayudará ! ¡Salud!