دانلود منیجر در اندروید 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 زیر را به آن اضافه کنید:
0 دیدگاه