دانلود منیجر در اندروید DownloadManager in Android

منتشرشده توسط حامد قنبری در تاریخ

دانلود منیجر یکی از  سرویس های سیستم اندروید محسوب می شود که از  آندروید 2.3 (سطح API 9) به بالا عرضه شد  . این سرویس به هنگام بارگیری و دانلودهای طولانی مدت و در حالت  HTTP فعال می شود.وقتی کاربر یا کلاینتی از یک آدرس خاص درخواست دانلود می کند این فرایند در پس زمینه  doInbackGroundتوسط دانلود منیجر صورت می گیرد مهمترین کارکرد سیستم دانلود منیجر این است که از تعاملات HTTP و بارگیری دوباره پس از خرابی بخصوص تغییراتی که  طول اتصال ممکن است رخ دهد محافظت کرده و راه اندازی مجدد سیستم را برای اتمام دانلود مدیریت می کند.

اگر قصد دارید که برنامه ای را بسازید که بخواهد فایلهای بزرگ را دانلود کند، عملاً نمیتوانید از Retrofit یا Volley استفاده کنید، چرا که از نظر فنی این کار بایستی از طریق  DownloadManager صورت می گیرد که از اعلانهای مجدد و پیشرفت برخوردار است.

در این پست ما قصد داریم موضوعات زیر و مرتبط با این موضوع را به شما آموزش دهیم:

 

  • دانلود تصویر و موسیقی بطور همان زمان با استفاده از Android Download Manager.
  • نمایش وضعیت دانلود در هر زمان با استفاده از یک سوئیچ
  • ذخیهره فایل های دانلود شده در درایور خارجی شما
  • اعلان آگاه شدن از تکمیل فرایند دانلود .

 

به همین منظور ابتدا آبجکتی از کلاس دانلود منیجر می سازیم:

 

 DownloadManager mgr=null;
  mgr=(DownloadManager)getSystemService(DOWNLOAD_SERVICE);

سپس آبجکتی از DownloadManager.Request  ساخته لازم است تعریف کنیم که فایل دانلود شده دارای چه عنوان و در کدام فایل و با چه اسمی ذخیره شود.

lastDownload=
        mgr.enqueue(new DownloadManager.Request(uri)
                .setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI |
                        DownloadManager.Request.NETWORK_MOBILE)
                .setAllowedOverRoaming(false)
                .setTitle("عنوان دانلود")
                .setDescription("توضیحات مربوط به دانلود.")
                .setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS,
                        "فرمت.. نام فایل"));

 

آدرس فایل مورد دانلود خود را در آن تعریف می کنیم.

Environment
        .getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)
        .mkdirs();

به منظور اعلان اتمام دانلود ضروری است یک broadcast  تعریف کنیم تا در زمان اتمام دانلود ما را در جریان اتمام دانلود قرار دهد.

registerReceiver(onComplete,
        new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
registerReceiver(onNotificationClick,
        new IntentFilter(DownloadManager.ACTION_NOTIFICATION_CLICKED));

به منظور درک بهتر موضوع ابتدا مثالی برای دوستان عزیز ارایه می کنیم و سپس به توضیح سورس ها خواهیم پرداخت:

اگر در داخل برنامه اکلیپس یا اندروید استودیو قرار دارید پروژه جدیدی را  ایجاد کنید

اکلیپس :File ⇒ New Android ⇒ Application Project

اندروید استودیو :File ⇒ New  ⇒ New Project

اما اگر هنوز برنامه خود را باز نکرده اید یکی از برنامه های فوق را باز نموده و بعد از تعیین مشخصات(نامگذاری) ، تعیین حداقل sdk  و نوع اکتیویتی (blank  یا Empty) ، نام اکتیویتی ابتدایی و اصلی خود  را همان MainActivity قرار دهید. بعد از لود کامل برنامه ، در مسیر res ⇒layout لایه متناظر اکتیوتی اصلی یعنی activity_main را پیدا نمود و کدهای مندرج و پیش فرض آن را پاک کرده و کدهای xml  زیر را به آن اضافه کنید:


1 دیدگاه

f.n · جولای 7, 2020 در 6:27 ق.ظ

ممنون

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

-- بارگیری کد امنیتی --