1. 程式人生 > >Android 中狀態列(螢幕頂部)訊息的顯示 Notification

Android 中狀態列(螢幕頂部)訊息的顯示 Notification

在系統停留在其他頁面時,如果發來一條簡訊會看到如圖的情況:

那麼這種效果是如何實現的呢,其實很簡單,這用到了系統中的兩個類:Notification和NotificationManager

一個簡單例子:

1、佈局檔案

<?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">

<Button android:id="@+id/send" android:layout_width="fill_parent"

android:layout_height="wrap_content" android:text="傳送通知"

android:onClick="click"></Button>

<Button android:layout_width="fill_parent" android:id="@+id/cancel"

android:layout_height="wrap_content" android:text="取消通知"

android:onClick="click"></Button>

</LinearLayout>

2、程式碼

public class MianActivity extends Activity {

/** Called when the activity is first created. */

NotificationManager nm = null;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

}

public void click(View v) {

switch (v.getId()) {

case R.id.send:

String service = Context.NOTIFICATION_SERVICE;         

nm = (NotificationManager) getSystemService(service);          //獲得系統級服務,用於管理訊息

Notification n = new Notification();                                        //定義一個訊息類

n.icon = R.drawable.icon;                                                //設定圖示

n.tickerText = "Notification Test!!";                                        // 設定訊息

n.when = System.currentTimeMillis();                             //設定時間

// Notification n1 =new Notification(icon,tickerText,when);    //也可以用這個構造建立

Intent intent = new Intent(MianActivity.this, MianActivity.class);       

PendingIntent pi = PendingIntent.getActivity(MianActivity.this, 0,intent, 0);       //訊息觸發後呼叫

n.setLatestEventInfo(MianActivity.this, "my title", "my content",pi); //設定事件資訊就是拉下標題後顯示的內容

nm.notify(1, n);      //傳送通知

break;

case R.id.cancel:

nm.cancel(1);           //關閉通知

}

}

}

執行效果如下:

正如上邊截圖那樣,可以為Notification物件設定圖示、顯示文字等資訊,除了這些還有很多屬性可以用來提醒。如:聲音、震動、閃光燈等。設定方式如下:

1、播放音樂

     n.defaults |= Notification.DEFAULT_SOUND;

     n.sound=Uri.parse("file:///sdcard/sound.mp3");

     n.sound=Uri.withAppendedPath(Audio.Media.INTERNAL_CONTENT_URI, "6");

2、振動

     n.defaults|=Notification.DEFAULT_VIBRATE;

     long[] vib={0,50,100,150,200};

     n.vibrate=vib;

     記得加許可權:<uses-permission android:name="android.permission.VIBRATE"></uses-permission>

3、閃光燈

n.defaults|=Notification.DEFAULT_LIGHTS;

     n.ledARGB=0x99f0ff00;

n.ledOnMS=300;

     n.ledOffMS=2000;

     n.flags|=Notification.FLAG_SHOW_LIGHTS;