標籤:end 文本 efault 使用 led燈 方式 圖片 就是 rom
一 建立手機通知
1.建立一個NotificationManager
建立一個NotificationManager來對通知就行管理。一般調用context的getSystemService()方法得到這個對象,這個方法傳入要擷取的服務,返回的是一個該類型的值。如下:
/*擷取到一個NotificationManager來對通知進行管理,* 使用的是getSystemService方法,傳入一個服務,返回一個manager*/NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
2.建立一個Notification對象
可以使用NotificationCompat類中的構造器來——Builder構造器來建立Notification對象,穩定性較好。
Notification notification = new NotificationCompat.Builder(context).build();
但是這隻是一個空的通知,還需要在build()之前加上任意多的設定來建立一個Notification對象,如下:
1 Notification notification = new NotificationCompat.Builder(this)2 .setContentTitle("this is content title") //設定通知標題3 .setContentText("this is content text") //設定通知內容4 .setWhen(System.currentTimeMillis()) //設定通知被建立的時間5 .setSmallIcon(R.mipmap.ic_launcher) //設定通知的小表徵圖6 .setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher)) //設定通知的大表徵圖7 .setContentIntent(pi) //設定通知的內容跳轉 參數是一個pendingIntent8 .setAutoCancel(true) //設定提醒點擊後自動取消9 .build();
以上就是一些要加入的基本的設定。
3.建立通知點擊跳轉——PendingIntent
Pendingintent相當於一個順延強制的Intent,用法也很簡單。
擷取PendingIntent執行個體的靜態方法有:getActivity(),getBroadcast(),getService()三種,他們所接受的參數都是相同的,
第一個參數是content,第二個一般設為0,第三個是一個intent對象,第四個用於確定pendingIntent的行為,有FLAG_ONESHOT,FLAG_NO_CREATE,FLAG_CANCEL_CURRENT和FLAG_UPDATE_CURRENT四種值可以選,通常傳入0就可以了。
/*建立一個延時的intent pendingintent,getActivity傳入四個參數, * 在之後的建立通知時也要setContentIntent這個延時的intent*/ Intent intent = new Intent(this,NotificationAcitivity.class); PendingIntent pi = PendingIntent.getActivity(this,0,intent,0);
這個pi也是上一步要調用pendingIntent的對象。
4.顯示通知
然後調用NotificationManager中的notify()方法就可以讓通知顯示出來了。
manager.notify(1,notification); //參數分別是id 和 要發送的通知。每條通知對應一個id
5.更多通知設定
通知還可以設定聲音,震動,LED燈光等效果,如下:
1 //設定一段通知發送時的音頻 接收一個Uri參數2 .setSound(Uri.fromFile(new File("/system/media/audio/ringtones/luna.ogg")))3 //設定通知發送時的震動,是長整型的數組,對應手機靜止時間,震動時間,來回交替,以毫秒為單位4 .setVibrate(new long[]{0,1000,1000,1000})5 //設定LED燈,三個參數分別是 燈顏色,燈亮起時間長度,燈暗下時間長度6 .setLights(Color.GREEN,1000,1000)7 .build();
其中要獲得震動功能需要聲明許可權
<uses-permission android:name="android.permission.VIBRATE"/>
如果不想自己設定,可以直接使用預設效果。
.setDefaults(NotificationCompat.DEFAULT_ALL)
6.通知的進階功能
使用setStyle()方法,可以在通知裡傳入長文本和圖片等內容
傳入長文本:通過setSyle方法,參數中,使用NotificationCompat類中的BigTextStyle方法,傳入長文本
1 .setStyle(new NotificationCompat.BigTextStyle().bigText("aaaaaaaaaaaaaaaaaaaaa" +2 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" +3 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"))4 .build();
傳入圖片:通過setSyle方法,參數中,使用NotificationCompat類中的BigPictureStyle方法,傳入圖片。其中使用BitmapFactory類中的decodeResource方法 將圖片轉化為bitmap格式。
1 .setStyle(new NotificationCompat.BigPictureStyle().bigPicture(BitmapFactory.decodeResource(getResources(),R.drawable.big_image)))2 .build();
設定通知許可權:
.setPriority(NotificationCompat.PRIORITY_MAX)
傳入的參數有五種類型如下:對應著不同的權重。
7.執行個體
通過一個按鍵來發送通知,並且可以通過通知跳轉到另外一個活動。另外,這個執行個體中按鍵觸發器是用另外一種switch方式來寫的。
1 public class MainActivity extends AppCompatActivity implements View.OnClickListener { 2 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 setContentView(R.layout.activity_main); 7 8 Button sendNotice = (Button) findViewById(R.id.send_notice); 9 sendNotice.setOnClickListener(this);10 }11 12 13 @Override14 public void onClick(View view) {15 switch (view.getId()){16 case R.id.send_notice:17 /*建立一個延時的intent pendingintent,getActivity傳入四個參數,18 * 在之後的建立通知時也要setContentIntent這個延時的intent*/19 Intent intent = new Intent(this,NotificationAcitivity.class);20 PendingIntent pi = PendingIntent.getActivity(this,0,intent,0);21 /*擷取到一個NotificationManager來對通知進行管理,22 * 使用的是getSystemService方法,傳入一個服務,返回一個manager*/23 NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);24 Notification notification = new NotificationCompat.Builder(this)25 .setContentTitle("this is content title") //設定通知標題26 .setContentText("this is content text") //設定通知內容27 .setWhen(System.currentTimeMillis()) //設定通知被建立的時間28 .setSmallIcon(R.mipmap.ic_launcher) //設定通知的小表徵圖29 .setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher)) //設定通知的大表徵圖30 .setContentIntent(pi) //設定通知的內容跳轉 參數是一個pendingIntent31 .setAutoCancel(true) //設定提醒點擊後自動取消32 .build();33 manager.notify(1,notification); //每條通知對應一個id34 break;35 default:36 break;37 }38 }39 }
Android手機多媒體——通知