Библиотека для загрузки файлов ThinDownloadManager

ThinDownloadManager — библиотека для загрузки файлов из интернета.

Подготовка

Пропишите в манифесте разрешение на использование интернета и доступ к памяти:

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

Загрузка файла из интернета

Для начала создадим объект класса ThinDownloadManager:

 ThinDownloadManager downloadManager = new ThinDownloadManager(5); //на вход конструктору подаем максимальное количество потоков загрузки

После чего нам нужно указать откуда будет загружаться файл и куда его сохранять:

Uri downloadUri = Uri.parse("https://d l.dropboxusercontent.com/u/25887355/test_photo1.JPG"); //адрес скачиваемого файла

Uri destinationUri = Uri.parse( Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/android-image.png"); //путь, куда будет сохраняться файл

Далее создаем объект класса DownloadRequest  и указываем в нем адрес скачиваемого файла и путь, по которому нужно сохранить файл:

DownloadRequest downloadRequest = new DownloadRequest(downloadUri) .setDestinationURI(destinationUri);

Для начала загрузки нужно вызвать метод add(DownloadRequest downloadRequest) у  объекта downloadManager и на вход подать  downloadRequest созданный выше:

downloadManager.add(downloadRequest);

Готово, загрузка началась. Но как нам узнать прогресс загрузки? Для этого надо установить для downloadRequest слушатель:

downloadRequest.setDownloadListener(downloadListener );

DownloadStatusListener downloadListener = new DownloadStatusListener(){

        @Override
        public void onDownloadComplete(int id){
	  Toast.makeText(context, "Загрузка завершена", Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onDownloadFailed(int id, int errorCode, String errorMessage){
	        //тут выводим ошибку при ошибке загрузки файла
		}

        @Override
        public void onProgress(int id, long totalBytes, long arg3, int progress){
          	//тут можно вывести прогресс в ProgressBar
		};	

Переменная progress отображает прогресс загрузки файла в процентах (от 0 до 100).

Получаем статус задачи

Также ожно получить статус загрузки файла вызвав метод query у DownloadManager’а и передать методу id нужной задачи

int status = downloadManager.query(downloadId);

Статус может быть:
STATUS_PENDING — загрузка не запущена
STATUS_STARTED — загрузка началась
STATUS_RUNNING — идет загрузка

Приоритет загрузки файла

Также можно установить приоритет загрузки файла:

downloadRequest.setPriority(DownloadRequest.Priority.LOW);

Отмена загрузки
Для отмены загрузки файла нужно вызвать метод cancel() у объекта downloadRequest:

downloadRequest.cancel();

Также это можно сделать, вызвав метод cancel(int downloadId) у объекта downloadManager:

int downloadId = downloadManager.add( downloadRequest);
downloadManager.cancel(downloadId);

Если надо отменить все загрузки, то нужно вызвать метод cancelAll() у downloadManager:

downloadManager.cancelAll();

Чтобы освободить все ресурсы, используемые  DownloadManager’ом нужно вызвать метод release():

downloadManager.release();

Проект на GitHub —  ThinDownloadManager.

Исходники примера: ThinDownloadManager.

Комментарии:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

6 + 6 =