Показывать процент прогресса при копировании файлаAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Показывать процент прогресса при копировании файла

Сообщение Anonymous »

Сейчас

Я выбираю файл из галереи и копирую его в указанную папку. При копировании я показываю ProgressDialog, я делаю это с помощью AsyncTask.

Я пытаюсь показать ход выполнения файл копируется в процентах, но у меня проблема в том, что прогресс показывает 50% и остается на этом уровне 50%, пока копирование файла не будет завершено.

Существует много вопросы по этому поводу, но все они связаны со скачиванием с URL.



Мой вопрос

Как узнать текущий прогресс копирования файла и отобразить его в процентах?



Пожалуйста, посмотрите, что я пробовал ниже:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if(requestCode == SELECT_VIDEO_REQUEST && resultCode == RESULT_OK)
{
if(data.getData()!=null)
{
new MyCopyTask().execute(data.getData());

}else{

Toast.makeText(getApplicationContext(), "Failed to select video" , Toast.LENGTH_LONG).show();

}
}
}

private class MyCopyTask extends AsyncTask {
ProgressDialog progressDialog;

@Override
protected void onPreExecute() {
progressDialog = new ProgressDialog(MainActivity.this);
progressDialog.setCancelable(false);
progressDialog.setIndeterminate(false);
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.setMax(100);
progressDialog.show();
}

@Override
protected File doInBackground(Uri... params) {
//copy file to new folder
Uri selectedImageUri = params[0];
String sourcePath = getRealPathFromURI(selectedImageUri);

File source = new File(sourcePath);

String filename = sourcePath.substring(sourcePath.lastIndexOf("/")+1);

//onProgressUpdate(50);

publishProgress(50);

File destination = new File(Environment.getExternalStorageDirectory(), "MyFolder/Videos/"+filename);
try
{
FileUtils.copyFile(source, destination);
}
catch (IOException e)
{
e.printStackTrace();
}
return destination;
}

@Override
protected void onProgressUpdate(Integer... values){
super.onProgressUpdate(values);
progressDialog.setProgress(values[0]);
}

@Override
protected void onPostExecute(File result) {
if(result.exists()) {
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(result)));

Toast.makeText(getApplicationContext(),"Stored at: "+"---"+result.getParent()+"----"+"with name: "+result.getName(), Toast.LENGTH_LONG).show();
progressDialog.dismiss();

} else {
Toast.makeText(getApplicationContext(),"File could not be copied", Toast.LENGTH_LONG).show();
progressDialog.dismiss();
}

}

}


Подробнее здесь: https://stackoverflow.com/questions/451 ... pying-file
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»