通知--一般當(dāng)我在手記下拉的時(shí)候會(huì)發(fā)現(xiàn)一排信息提示(天氣情況惠爽,qq消息癌蓖,UC推薦,58推薦等等)婚肆,這些就是通知租副。
通知分為三種:普通廣播 ?自定義廣播 ? 大視圖廣播。
普通廣播的創(chuàng)建:
通知的內(nèi)容和屬性:NotificationCompat內(nèi)部的builder類進(jìn)行通知的內(nèi)容進(jìn)行設(shè)置较性,各種set方法用僧;
通知的屬性:通過Notification實(shí)例的falg設(shè)置通知屬性结胀;
通知實(shí)例的獲得:通過Builder類的builder()方法創(chuàng)建;
通知的發(fā)送:通過notificationManger的notify()方法發(fā)送通知责循;
普通通知的創(chuàng)建發(fā)送以及方法講解:
1.創(chuàng)建Notification的builder類
NotificationCompat.Builder? builder=new NotificationCompat.Builder(this);
2.利用builder實(shí)例設(shè)置Notification屬性:
//設(shè)置通知標(biāo)題欄內(nèi)容
builder.setContentTitle("通知的標(biāo)題")
//設(shè)置通知詳細(xì)信息欄內(nèi)容
.setContentText("通知的內(nèi)容")
//設(shè)置大小圖標(biāo)會(huì)在下main繼續(xù)講
.setSmallIcon(R.mipmap.ic_launcher)
.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.aa))
.setTicker("狀態(tài)欄中提示內(nèi)容")
//設(shè)置通知欄點(diǎn)擊執(zhí)行的意圖 pendingIntent(也就是點(diǎn)擊完成跳轉(zhuǎn))糟港;
.setContentIntent(pendingIntent)
//設(shè)置通知集合的數(shù)量(沒用到過)
.setNumber(6)
//通知產(chǎn)生的時(shí)間,會(huì)在通知信息里顯示沼死,一般是系統(tǒng)獲取到的時(shí)間
//如果不寫着逐,默認(rèn)為通知發(fā)出時(shí)系統(tǒng)的時(shí)間;
.setWhen(System.currentTimeMillis())
//設(shè)置該通知優(yōu)先級(jí)(在廣播中用過這個(gè)屬性)
.setPriority(Notification.PRIORITY_DEFAULT)
//設(shè)置這個(gè)標(biāo)志當(dāng)用戶單擊面板就可以讓通知將自動(dòng)取消
.setAutoCancel(false)
//點(diǎn)擊或則側(cè)滑通知意蛀,通知不會(huì)消失耸别;利用它設(shè)置他為一個(gè)正在進(jìn)行的通知。他們通常是用來表示一個(gè)后臺(tái)任務(wù),用戶積極參與(如播放音樂)或以某種方式正在等待,因此占用設(shè)備(如一個(gè)文件下載,同步操作,主動(dòng)網(wǎng)絡(luò)連接)
.setOngoing(true)县钥;
//提示模式
.setDefaults(Notification.DEFAULT_VIBRATE)
方法詳解:
.setSmallIcon(R.mipmap.ic_launcher)
.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.aa))
.setTicker("狀態(tài)欄中提示內(nèi)容")
第一種:當(dāng)只設(shè)置了SmallIcon沒有設(shè)置LargeIcon的時(shí)候:SmallIcon的圖標(biāo)將會(huì)出現(xiàn)在LargeIcon的位置秀姐,而小圖標(biāo)位置將不會(huì)又圖標(biāo)。
第二中:當(dāng)既有SmallIcon又有LargeIcon的時(shí)候若贮,LargeIcon將會(huì)出現(xiàn)在LargeIcon位置省有,SmallIcon也會(huì)出現(xiàn)在SmallIcon的位置;
setTicker()是在通知發(fā)出的時(shí)候谴麦,在狀態(tài)欄彈出的提示內(nèi)容(彈出提示的內(nèi)容又小圖標(biāo)和Ticker方法中的內(nèi)容)
注意:小圖標(biāo)必須有蠢沿,否則將無法顯示通知;
.setPriority(Notification.PRIORITY_DEFAULT)//設(shè)置通知的優(yōu)先級(jí)別
Notification.PRIORITY_DEFAULT ? ? 默認(rèn)
Notification.PRIORITY_HIGH ? ? ? ? ? ? 高
Notification.PRIORITY_LOW ? ? ? ? ? ? ?低?
Notification.PRIORITY_MAX ? ? ? ? ? ? ?最高
Notification.PRIORITY_MIN ? ? ? ? ? ? ? 最低
.setDefaults(int defaults)(需要 VIBRATE permission) 匾效;
功能:向通知添加聲音舷蟀、閃燈和振動(dòng)效果的最簡(jiǎn)單、使用默認(rèn)(defaults)屬性面哼,可以組合多個(gè)屬性
對(duì)應(yīng)屬性:
Notification.DEFAULT_VIBRATE ? ?//添加默認(rèn)震動(dòng)提醒 ?
Notification.DEFAULT_SOUND ? ?//?添加默認(rèn)聲音提醒
Notification.DEFAULT_LIGHTS//?添加默認(rèn)三色燈提醒
Notification.DEFAULT_ALL//?添加默認(rèn)以上3種全部提醒
setVibrate(long[] pattern)設(shè)置自定義震動(dòng)模式
//延遲0ms野宜,然后振動(dòng)200ms,在延遲200ms魔策,接著在振動(dòng)300ms匈子。
.setVibrate(new long[]?{0,200,200,300});
//設(shè)定自定義燈光
.setLights(int RGB,int onTime,int lowLight)
參數(shù)說明:
RGB 表示燈光顏色、 onTime亮持續(xù)時(shí)間闯袒、lowLight暗的時(shí)間虎敦。
注意:只有在設(shè)置了標(biāo)志符Flags為Notification.FLAG_SHOW_LIGHTS的時(shí)候,才支持三色燈提醒政敢。
這邊的顏色跟設(shè)備有關(guān)原茅,不是所有的顏色都可以,要看具體設(shè)備堕仔。
設(shè)定自定義音樂
setSound(Uri?music)
.setSound(Uri.parse("file:///sdcard/xx/xx.mp3"))
進(jìn)度條的說明:
setProgress(int ?max ?,int ?value ?晌区,boolean ?sure)摩骨;
參數(shù)說明:
max---進(jìn)度條最大值通贞;
value---進(jìn)度條當(dāng)前值;
sure----進(jìn)度條進(jìn)度是否確定恼五;
? ? ? ? ? ? true為進(jìn)度條不確定昌罩,max與value就不會(huì)在進(jìn)度條中顯示;
? ? ? ? ? ? ?false進(jìn)度條確定灾馒,max與value正常顯示
進(jìn)度條取消:setProgress(0, 0, false)
方法版本問題:4.0后才可以在buidler中調(diào)用setProgress()方法茎用;
//獲得Notification實(shí)例
NotificationCompat ?notificaton=builder.buidler();
//通過Notification的flag設(shè)置屬性;
設(shè)置屬性代碼:
notification.flags = Notification.FLAG_AUTO_CANCEL;
提醒標(biāo)志符成員:
Notification.FLAG_SHOW_LIGHTS ? ? ?//三色燈提醒睬罗,在使用三色燈提醒時(shí)候必須加該標(biāo)志符
Notification.FLAG_ONGOING_EVENT ? //發(fā)起正在運(yùn)行事件(活動(dòng)中)
Notification.FLAG_INSISTENT//讓聲音轨功、振動(dòng)無限循環(huán),直到用戶響應(yīng)(取消或者打開)
Notification.FLAG_ONLY_ALERT_ONCE//發(fā)起Notification后容达,鈴聲和震動(dòng)均只執(zhí)行一次
Notification.FLAG_AUTO_CANCEL ? ? ?//用戶單擊通知后自動(dòng)消失
Notification.FLAG_NO_CLEAR ? ? ? ? //只有全部清除時(shí)古涧,Notification才會(huì)清除,不清楚該通知(QQ的通知無法清除花盐,就是用的這個(gè))
Notification.FLAG_FOREGROUND_SERVICE ? ?//表示正在運(yùn)行的服務(wù)
自定以通知的基本使用:
自定布局的創(chuàng)建:
RemoteViews mRemoteViews = new RemoteViews(String packageName, int layoutId);
參數(shù)說明:packageName :報(bào)名羡滑,通過getPackageName()
? ? ? ? ? ? ? ? ? layoutId:加載自定義布局ID;
設(shè)置自定義布局的屬性:
設(shè)置的圖片屬性
mRemoteViews.setImageViewResource(int viewId, int srcId);
參數(shù)說明 ? viewId ?為自定義布局中算芯,Button等布局的ID柒昏;
? ? ? ? ? ? ? ? ? srcId ?為需要設(shè)置圖片的ID;
設(shè)置點(diǎn)擊意圖:
mRemoteViews.setOnClickPendingIntent(int viewId,PendingIntent pendingIntent);
參數(shù)說明:viewId? ? 為自定義布局中熙揍,Button等布局的ID职祷;
? ? ? ? ? ? ? ? ? pendingIntent ? 為點(diǎn)擊相應(yīng)按鈕需要執(zhí)行的意圖;
添加自定義布局:
mBuilder.setContent(mRemoteViews)
NotificationManager的發(fā)送诈嘿,更新堪旧,刪除
notificationManager.cancel(int ID);
參數(shù)說名:ID為發(fā)送通知的時(shí)候設(shè)置的ID;取消該ID奖亚;
notify(int id, Notification notification)淳梦; // 將通知加入狀態(tài)欄,,標(biāo)記為id
參數(shù)說明:id相當(dāng)于notification的一一對(duì)應(yīng)標(biāo)志昔字;
// 在Android進(jìn)行通知處理爆袍,首先需要重系統(tǒng)哪里獲得通知管理器NotificationManager,它是一個(gè)系統(tǒng)Service作郭。
NotificationManager?manager?=?(NotificationManager)?getSystemService(Context.NOTIFICATION_SERVICE);
還有大圖風(fēng)格---尚未完成