نمایش NOTIFICATION ها

نمایش NOTIFICATION ها

بسم الله الرحمن الرحیم

نمایش NOTIFICATION  ها

فصل دوم-بخش دوازدهم

تا اینجا  شما  یاد گرفتید که   با   کلاس  Toast یک   پیغام  را به کاربر  نمایش می دهیم.

 زمانی  که  یک  پیغام  را با استفاده از   کلاس  Toast به  کاربر  نمیاش داده می دادید

بسم الله الرحمن الرحیم

نمایش NOTIFICATION  ها

فصل دوم-بخش دوازدهم

تا اینجا  شما  یاد گرفتید که   با   کلاس  Toast یک   پیغام  را به کاربر  نمایش می دهیم.

 زمانی  که  یک  پیغام  را با استفاده از   کلاس  Toast به  کاربر  نمیاش داده می دادید  دوام  زیادی  نداشت  برای  چند  لحظه نمایش  و بعد  محو می شود. و اگر پیغام  بسیار  مهم باشد این  میتواند  برای  کاربر   مشکل  ساز باشد.

برای    پیغام  های    مهم که باید    پایداری   بیشتری  داشته باشند شما   می توانید از  استفاده NotificationManager کنید  که این یک  پیغام  در بالای گوشی  نمایش داده  می شود که بالای  گوشی به عنوان status bar  شناخته می شود  گاهی  اوقات هم به عنوان  notificationbar شناخته می شود در ادامه آن را به  یک  مثال شرح می دهیم.

 

پروژه جدیدی   به نام Notificationsایجاد کنید

یک کلاس  جدید  به نامNotificationView   و یک فایل notification.xml در  مسیرres/layout ایجاد  کنید

فایل notification.xml  را  به  صورت زیر   تغیر دهید

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Here are the details for the notification..." />
</LinearLayout>

وکلای به نام NotificationView.java و دستورات زیر را در آن وارد کنید         


package com.MehrdadJavidi.notifications;
import android.app.Activity;
import android.app.NotificationManager;
import android.os.Bundle;
public class NotificationView extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.notification);
/**---look up the notification manager service---*/
NotificationManager nm = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
/**---cancel the notification that we started---*/
nm.cancel(getIntent().getExtras().getInt("notificationID"));
}
}

فایل AndroidManifest را به  صورت زیر  تغییر دهید.


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.MehrdadJavidi.notifications"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="14" />
<uses-permission android:name="android.permission.VIBRATE"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.MehrdadJavidi.notifications.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".NotificationView"
android:label="Details of notification">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>

دستورات را در  فایل  main.xml  وارد   کنید

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Button
android:id="@+id/btn_displaynotif"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Display Notification"
android:onClick="onClick"/>
</LinearLayout>

دستورات زیر را د ر  فایل  mainActivyt.java وارد   کنید.

package com.MehrdadJavidi.notifications;
import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends Activity {
int notificationID = 1;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void onClick(View view) {
displayNotification();
}
protected void displayNotification()
{
/**---PendingIntent to launch activity if the user selects*/
/** this notification---*/
Intent i = new Intent(this, NotificationView.class);
i.putExtra("notificationID", notificationID);
PendingIntent pendingIntent =
PendingIntent.getActivity(this, 0, i, 0);
NotificationManager nm = (NotificationManager)
getSystemService(NOTIFICATION_SERVICE);
Notification notif = new Notification(
R.drawable.ic_launcher,
"Reminder: Meeting starts in 5 minutes",
System.currentTimeMillis());
CharSequence from = "System Alarm";
CharSequence message = "Meeting with customer at 3pm...";
notif.setLatestEventInfo(this, from, message, pendingIntent);*/
/**---100ms delay, vibrate for 250ms, pause for 100 ms and*/
/**then vibrate for 500ms---*/
notif.vibrate = new long[] { 100, 250, 100, 500};
nm.notify(notificationID, notif);
}
}

برنامه را f11   اجرا کنید  بر روی   دکمه Display Notifi cation  کلیک کنید  یک  پیغام در  status bar نمایش داده می شود

نمایش Notification در اندروید

بر روی Status bar    کلیک  کنید و   و انرا به  پایین  درگ  کنید  شما می توانید   جزئیات  بیشتری از  پیغام را   مشاهده  کنید ما  جزئیات  بیشتری  را با متد   setLatestEventInfo()   کلاس Notification   تعیین  کردید

نمایش Notification در اندروید

با  کلیک بروی   پیغام  شما   activity    با نام NotificationView  را مشاهده  می کنید در این  گونه موارد   پیغام از  status bar  حذف می شود

نمایش Notification ها در اندروید

توضیحات

برای  نمیاش  پیغام ها شما  یک شی  intent   تعریف  می کنید  که  اشاره به کلاس  NotificationView  دارد

این  intent  برای   اجرای   activity   دیگر  زمانی که  کاربر بر روی    یک از  از پیغام ها کلیک کرد  استفاده می شود. در اینجا شما یک   جفت از  name/value برای شی Intent  استفاده  کردید که این  Notification Id ها برای   حذف از   notification  ها استفاده می شود.

 شما همچنین یک شی PendingIntent استفاده  کرده اید    که  به شما  کمک می کند تا یک    عملیات را در برنامه استفاده  کنید.  صرف  نظر از  اینکه  برنامه شما اجرا است  یا خیر . در  این موارد  شما از   مقدار  دهی های زیر  استفاده کرده اید.

PendingIntent pendingIntent =
PendingIntent.getActivity(this, 0, i, 0);

متد getActivity()  از  PendingIntent  دارای  پارامتر های زیر می باشد

  •  context: Context  برنامه
  •  request code : کد درخواست برای  intent
  • intent: یک intent  برای اجرای  activity   نظر
  • fl ags: تعیین  می کند  activity  که باید  اجرا شود

 

شما از کلاس NotificationManager  برا ی ایجاد  یک  شی Notification استفاده  کردید

NotificationManager nm = (NotificationManager)
getSystemService(NOTIFICATION_SERVICE);
Notification notif = new Notification(
R.drawable.ic_launcher,
"Reminder: Meeting starts in 5 minutes",
System.currentTimeMillis());

کلاس Notification  شما را قادر می سازد  که اطلاعات    اصلی  پیغام  را که در  status bar  می آید را   تعیین  کنید.  دومین پارامتر سازنده   متن  پیغام را  تعیین می کند

بعد شما برای تعیین  جزئیات  پیام از   متد setLatestEventInfo()  استفاده   کرده اید


harSequence from = "System Alarm";
CharSequence message = "Meeting with customer at 3pm...";
notif.setLatestEventInfo(this, from, message, pendingIntent);
/**---100ms delay, vibrate for 250ms, pause for 100 ms and*/
/** then vibrate for 500ms---*/
notif.vibrate = new long[] { 100, 250, 100, 500};

همچنین شما  تعیین  کرده ایدد که  زمانی که  پیغام  نمایش داده می شود  ویبره گوشی فعال شود این  کار را  با استفاده از  متد notify()  تعیین  کرده  اید


nm.notify(notificationID, notif);

زمانی که  کاربرد  بر روی  یک   پیغام   کلیک    میکند   activity         NotificationView  اجرا می شود  در این جا شما   پیغام را   حذف  می کنید با  استفاده از  از متد cancel()  از  شی NotificationManager   که یک   Id  ی   پیغام مورد  نظر را  دریاف  میکند .  که از  طرق شی  Intent ارسال  شده است 

otificationManager nm = (NotificationManager)
getSystemService(NOTIFICATION_SERVICE);
/**---cancel the notification that we started---*/
nm.cancel(getIntent().getExtras().getInt("notificationID"));

نظرات یا سوالات خودرا با ما درمیان بگذارید

0912 097 5516 :شماره تماس
0713 625 1757 :شماره تماس