在一次上传多张图片时,我希望能够显示进度条,并在状态栏通知区域显示信息1/5、2/5等进度条。其中1表示已上传的图片数量,5表示需要上传的总图片数量。
我已经能够在通知区域显示进度条了。请问有谁能建议我如何计算已上传(完成)的图片数量以显示在进度条中(如1/5更新)。提前感谢您的帮助。
为了更清楚地说明问题:
我有一个异步任务,用于将单个图像上传到服务器。但是我无法做到以下两点:
1> 计算出总共需要上传的图像大小(例如5张图像);
2> 如何找到在5张图像中已上传的图像数量。
我已经能够在通知区域显示进度条了。请问有谁能建议我如何计算已上传(完成)的图片数量以显示在进度条中(如1/5更新)。提前感谢您的帮助。
为了更清楚地说明问题:
我有一个异步任务,用于将单个图像上传到服务器。但是我无法做到以下两点:
1> 计算出总共需要上传的图像大小(例如5张图像);
2> 如何找到在5张图像中已上传的图像数量。
private class FileUploadTask extends AsyncTask<Object, Integer,String> {
private ProgressDialog dialog;
@Override
protected void onPreExecute() {
dialog = new ProgressDialog(context);
dialog.setMessage("Uploading...");
dialog.setIndeterminate(false);
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
dialog.setProgress(0);
dialog.show();
}
@Override
protected String doInBackground(Object... arg0) {
try {
File file = new File("/mnt/sdcard/DCIM/100MEDIA/IMAG0149.jpg");
FileInputStream fileInputStream = new FileInputStream(file);
byte[] bytes = new byte[(int) file.length()];
fileInputStream.read(bytes);
fileInputStream.close();
URL url = new URL("http://android.com.bd/form.php");
HttpURLConnection connection =
(HttpURLConnection) url.openConnection();
OutputStream outputStream = connection.getOutputStream();
int bufferLength = 1024;
for (int i = 0; i < bytes.length; i += bufferLength) {
int progress = (int)((i / (float) bytes.length) * 100);
Log.i("progress",progress+"dfdf");
publishProgress(progress);
if (bytes.length - i >= bufferLength) {
outputStream.write(bytes, i, bufferLength);
} else {
outputStream.write(bytes, i, bytes.length - i);
}
}
publishProgress(100);
outputStream.close();
outputStream.flush();
InputStream inputStream = connection.getInputStream();
// read the response
inputStream.close();
return "ok";
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onProgressUpdate(Integer... progress) {
dialog.setProgress(progress[0]);
}
@Override
protected void onPostExecute(String result) {
Log.v("sds", result);
try {
dialog.dismiss();
} catch(Exception e) {
}
}
}