آموزش دانلود فایل با استفاده از کتاب خانه Retrofit در برنامه نویسی اندروید
سلام دوستان در این سری از آموزش های برنامه نویسی اندروید به آموزش دانلود فایل با استفاده از کتاب خانه Retrofit در برنامه نویسی اندروید می پردازیم.قبلتر آموزش دانلود فایل از وب سرور را در سایت قرار داده بودیم اما در این بار این آموزش را با استفاده از کتاب خانه قدرتمند Retrofit به پیش می بریم با ما همراه باشید.
ابتدا باید ما از کتاب خانه Butter Knife را در Build Gradle بخش Top leve و class زیر را قرار دهید.
سپس وارد بخش Moudle رفته و خط زیر را اضافه کنید.
سپس وارد بخش Build.gradle رفته بخش Moudle سپس خط های زیر را اضافه کنید
سپس sync را بزنید تا پروژه sync شود قبلتر هم علت sync نشدن هم برای شما گفته بودیم کافی است سرچ کنید (دلایل بسیار زیادی وجود دارد که از حوصله این بحث خارج است.)
فایل Activity_main.xml را باز کرده کد های زیر را در آن قرار دهید.
که شامل یک دکمه و progress bar و یک Textview می باشد.
حال شما باید یک کلاس ایجاد کرده و نام آن را برابر با download.java قرار دهید و کدهای زیر را آن قرار دهید.
اگر بخواهید بدانید که این کلاس چه کاری انجام می دهد میزان پیشرفت دانلود و اندازه سایز فایل و اندازه فعلی دانلود شده را نمایش می دهد.
برای اینکه ما بخواهیم از Retrofit استفاده کنیم باید یک کلاس ایجاد کنیم
پس کلاسی به نام RequestInterface.java ایجاد کرده کدهای زیر را در آن قرار دهید.
Retrofit یک کلاس درون ساخت دارد که برای گرفتن response body
حال باید یک کلاس DownloadService ایجاد کنیم که IntentService را گسترش (Extend) کند اگر ما با استفاده از Async Task فایل را دانلود کنیم در زمانی که گوشی Rotate شود سبب interrupt در دانلود می شود.
پس یک فایل به نام DownloadService.java ایجا می کنیم و کد های زیر را در آن قرار می دهیم.
تمامی بخش های کد های بالا رو همه رو توضیح داده ایم فقط یک بخش می ماند که توضیح دهیم (برای آموزش Notification builder در سایت سرچ کنید به آموزش می رسید.)
برای اینکار باید ما Url رو به بالا بدی تا دانلود شود.
بخش کد Mainactivity.java هم به شکل زیر می شود.
با کلیک بروی دکمه فایل شروع به دانلود شدن می کند و دقت کنید ما یک Broadcast را register می کنیم تا دقیقه به دقیقه میزان دانلود را ببینیم یعنی در هر ثانیه وضعیت در Notification نمایش می دهد و همینطور دفعه قبل RunTime Permission را توضیح داده بودیم از کاربر می خواهیم که آیا اجزا استفاده از اینترنت به ما بدهد تا فایل دانلود شود
و در آخر دسترسی های زیر را به AndroidManifest.xml اضافه کنید.
و باید سرویسی را که تعریف کنیم آن را در اندروید Manifest تعریف کنیم
کل کد بخش AndroidManifest.xml
و در آخر پیش نمایشی از برنامه
این آموزش هم به پایان رسید انشاالله مفید بوده باشد.
موفق باشید.
با سلام لینک دانلود فایل اون جایی که نوشتین نیست . اونجا در واقع اسم سایت اصلی هستش که قراره ازش دانلود شه مثلا برای سایت شما اینطوری میشه “http://programchi.ir” و لینک بقیه ی دانلود هم توی interface هستش اونجایی که نوشته @GET() حالا سوال من اینه که چجوری بای اونو از acivity گرفت ؟ چون تو اینجا فقط یک فایل خاص رو میشه بهش داد. با تشکر از سایت خوبتون.
سلام بله فایل اصلا وجود ندارد شما باید خودتان بروی سرور خودتان تست کنید و همانطور که در پست توضیح داده شده است شما باید در بخشی فقط اسم فایل و در بخشی دیگر فقط نام سرور یا آیپی یا یا سایت باید قرار گیرد. شما می تونید یک for بزنید و از سرور یک json بگیرید که نام فایل ها را برای شما بر می گرداند سپس می توانید بخش نام فایل را dynamic کنید.
موفق باشید.
با سلام در اندروید ۷ وقتی فایل دانلود میشه در پوشه دانلود تا چند دقیقه چیزی نمایش داده نمیشه. فکر کنم cache میشه که پس از چند دقیقه فایل نمایش داده میشه. ممنون میشم راهنمایی کنید چطوری باید مشکل را حل کرد.
سلام و درود
یکی از مشکلات کتابخانه است چون ابتدا فایل را cache می کند سپس ذخیره می کند باید از کد دیگری استفاده کنید.
موفق باشید.
سلام url های امضا شده از سمت سرور رو چجوری میشه دانلود کرد؟ آخر url هم نوع فایل مشخص نیست که mp4 هست یا png
سلام و درود
با استفاده از متد lastindexof می توانید تشخیص دهید توی url چه نوع فایلی دارید دریافت می کنید.
میخواستم ببینم با کلیک بر روی یک کامپوننت چطوری میتونم از ادامه دانلود جلوگیری کنم؟
سلام و وقت بخیر اگر من بخوام با رتروفیت مثل دانلود منیجر فایلی رو چند تیکه کنم و در آخر همه با هم مرج بشن باید چکار کنم؟