آموزش کار با NotificationManager در آندروید استودیو

با سلام خدمت کاربران سایت نیک اندروید در خدمتون هستیم با آموزش  نحوه کار با کلاس notificationManager

همونطور که میدونید خیلی وقتها لازمه تا یه فایلی رو از اینترنت یا سرورتون رو برای کاربر دانلود کنید تو این اموزش خواهید آموخت چطور از کلاس asynctask استفاده کنید و همینطور پنجره progressbar رو در نوار اعلان اندروید کاربر نمایش بدین تا کاربر بتونه در حین دانلود کارهای دیگه ای رو انجام بده و زیاد دست و پا گیر نباشه .

اینجا برای نمایش progressbar در اندروید استودیو  از کلاس NotificationManager  استفاده خواهیم کرد.

ابتدا یه دکمه در layout اصلی برنامه ایجاد میکنیم با فشار این کلید عملیاتی رو در کلاس asynctask انجام میده و progressbar در نوار اعلان به نمایش در میاد.

میریم داخل فایل MainActivity.java و قبل از هر چیز متغیرهامونو تعریف میکنیم.

  private NotificationManager mNotifyManager; private Builder mBuilder; int id = 1;  

اگر اندروید استودیو نتونست کلاس Builder رو ایمپورت کنه این خط رو تو قسمت ایمپورت ها دستی اضافه کنید .

   import android.support.v4.app.NotificationCompat.Builder;  

کلیدی که در لایه اضافه کردیم رو اینجا تعریف میکنیم و فعالیت setonclick رو براش میزارم تا هر وقت کاربر روی این کلید زد عملیات ما شروع بشه و دستورات زیر رو هم داخلش قرار میدیم:

  Button b1 = (Button) findViewById(R.id.button1); b1.setOnClickListener(new View.OnClickListener() { public void onClick(View arg0) {  mNotifyManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); mBuilder = new NotificationCompat.Builder(MainActivity.this); mBuilder.setContentTitle("Download") .setContentText("Download in progress") .setSmallIcon(R.drawable.ic_download); new Downloader().execute(); } });  

همانطور که مشاهده میکنید ما کلیدمون رو تعریف کردیم و گفتیم وقتی کاربر اون رو لمس کرد دستوراتی رو برامون انجام بده در اینجا ما کلاس NotificationManager رو تعریف کردیم و همچنین یه builder‌ساختیم با همین کلاس .

دستور setContentTitle تیتر بخش اعلان ما رو تنظیم میکنه .

دستور setContentText توضیحات بخش اعلان رو برامون تعریف میکنه .

دستور setsmallIcon هم یه آیکون میگیره .

نکته: دستور setLargeIcon هم هستش که یه Bitmap رو میگیره و شما میتونید تصویری رو کنار progressbar قرار بدین . بعد از انجام این تنظیمات کلاس Downloader رو صدا میزنیم. در قسمت پایین کدهای این کلاسمون هست که از Asynctask مشتق شده :

   private class Downloader extends AsyncTask<Void, Integer, Integer> { @Override protected void onPreExecute() { super.onPreExecute(); // نمایش نوار وضعیت برای اولین بار mBuilder.setProgress(100, 0, false); mNotifyManager.notify(id, mBuilder.build()); }  @Override protected void onProgressUpdate(Integer... values) { //به روز کردن نوار وضعیت mBuilder.setProgress(100, values[0], false); mNotifyManager.notify(id, mBuilder.build()); super.onProgressUpdate(values); }  @Override protected Integer doInBackground(Void... params) { int i; for (i = 0; i <= 100; i += 5) { // تنظیم نوار وضعیت که بعد هر چند ثانیه نوار را پر میکند publishProgress(Math.min(i, 100)); try { //زمان سنج Thread.sleep(2 * 1000); } catch (InterruptedException e) { Log.d("TAG", "خطای تایمر"); } } return null; }  @Override protected void onPostExecute(Integer result) { super.onPostExecute(result); mBuilder.setContentText("Download complete"); // حذف نوار وضعیت بعد از اتمام کار mBuilder.setProgress(0, 0, false); mNotifyManager.notify(id, mBuilder.build()); } }  

در این کلاس ما نوار وضعیت یا همون progressbar رو فعال کردیم. و سپس با استفاده از یک تایمر که هر چند ثانیه progressbar رو آپدیت میکنه و مقداری رو به جلو حرکت میکنه رو گذاشتیم . بعد از اتمام این چرخه با استفاده از دستور setContentText پیغامی مبنی کامل شدن دانلود نمایش داده میشه .

شما میتونید در کلاس Asynctask دستورات دیگه رو مثل دانلود فایل از سرور و یا …. اجرا کنید .

حالا برنامه رو اجرا میکنیم :

لینک سورس همین پروژه هم برای شما تهیه شده که داخل همین مجموعه میتونید پروژه رو دانلود کنید.

TestDownload

نوشته آموزش کار با NotificationManager در آندروید استودیو اولین بار در آموزش برنامه نویسی اندروید پدیدار شد.

مبنع این خبر (برای مشاهده متن کامل خبر لینک زیر را بزنید):
آموزش برنامه نویسی اندروید