android 通知之 notification
notifications | android developers
http://developer.android.com/guide/topics/ui/notifiers/notifications.html#notificationresponse
小圖示,使用setsamllicon()方法設定。
标題,使用setcontenttitle()方法設定。
文本内容,使用setcontenttext()方法設定。
pendingintent提供了多個靜态的getxxx()方法,用于獲得适用于不同場景的pendingintent對象。一般需要傳遞的幾個參數都很正常,隻介紹一個flag參數,用于辨別pendingintent的構造選擇:
flag_cancel_current:如果建構的pendingintent已經存在,則取消前一個,重新建構一個。
flag_no_create:如果前一個pendingintent已經不存在了,将不再建構它。
flag_one_shot:表明這裡建構的pendingintent隻能使用一次。
flag_update_current:如果建構的pendingintent已經存在,則替換它,常用。
notification視覺風格
notification有兩種視覺風格,一種是标準視圖(normal view)、一種是大視圖(big view)。标準視圖在android中各版本是通用的,但是對于大視圖而言,僅支援android4.1+的版本。
從官方文檔了解到,一個标準視圖顯示的大小要保持在64dp高,寬度為螢幕标準。
标準視圖的通知主體内容有一下幾個:
1.通知标題。
2.大圖示。
3.通知内容。
4.通知消息。
5.小圖示。
6.通知的時間,一般為系統時間,也可以使用setwhen()設定。
而對于大視圖(big view)而言,它的細節區域隻能顯示256dp高度的内容,并且隻對android4.1+之後的裝置才支援,它比标準視圖不一樣的地方,均需要使用setstyle()方法設定
setstyle()傳遞一個notificationcompat.style對象,它是一個抽象類,android為我們提供了三個實作類,用于顯示不同的場景。分别是:
notificationcompat.bigpicturestyle, 在細節部分顯示一個256dp高度的位圖。
notificationcompat.bigtextstyle,在細節部分顯示一個大的文本塊。
notificationcompat.inboxstyle,在細節部分顯示一段行文本。
notification.builder類中提供一個setprogress(int max,int progress,boolean indeterminate)方法用于設定進度條,max用于設定進度的最大數,progress用于設定目前的進度,indeterminate用于設定是否是一個确定進度的進度條。通過indeterminate的設定,可以實作兩種不同樣式的進度條,一種是有進度刻度的(true),一種是循環流動的(false)。
一種是有進度刻度的(false),一種是循環流動的(true)
builder.setprogress(0, 0, true);//設定為true,表示流動
builder.setprogress(100, 100, false);//設定為false,表示刻度
remoteviews contentviews = new remoteviews(getpackagename(),
r.layout.custom_notification);
contentviews.setimageviewresource(r.id.imageno, r.drawable.btm1);
contentviews.settexviewtext(r.id.titleno, "xxx");
contentviews.settexviewtext(r.id.textno, "xxx");
notificationcompat.builder.setcontent(remoteviews)
設定提示響應
對于有些通知,需要調用一些裝置的資源,使使用者能更快的發現有新通知,一般可設定的響應有:鈴聲、閃光燈、震動。對于這三個屬性,notificationcompat.builder提供了三個方法設定:
可設定的響應有:鈴聲、閃光燈、震動
setsound(uri sound):設定一個鈴聲,用于在通知的時候響應。傳遞一個uri的參數,格式為“file:///mnt/sdcard/xxx.mp3”。
setlights(int argb, int onms, int offms):設定前置led燈的閃爍速率,持續毫秒數,停頓毫秒數。
setvibrate(long[] pattern):設定震動的模式,以一個long數組儲存毫秒級間隔的震動。
大多數時候,我們并不需要設定一個特定的響應效果,隻需要遵照使用者裝置上系統通知的效果即可,那麼可以使用setdefaults(int)方法設定預設響應參數,在notification中,對它的參數使用常量定義了,我們隻需使用即可:
default_all:鈴聲、閃光、震動均系統預設。
default_sound:系統預設鈴聲。
default_vibrate:系統預設震動。
default_lights:系統預設閃光。
而在android中,如果需要通路硬體裝置的話,是需要對其進行授權的,是以需要在清單檔案androidmanifest.xml中增加兩個授權,分别授予通路振動器與閃光燈的權限:
1 <!-- 閃光燈權限 -->
2 <uses-permission android:name="android.permission.flashlight"/>
3 <!-- 振動器權限 -->
4 <uses-permission android:name="android.permission.vibrate"/>