編輯:關於Android編程
每個使用Android手機的人應該對Android中的通知不陌生,下面我們就學習一下怎麼使用Android中的通知。
一、通知的基本用法
活動、廣播接收器和服務中都可以創建通知,由於我們一般在程序進入後台後才使用通知,所以真實場景中,一般很少在活動中創建通知。
1、第一行代碼上面介紹的創建通知的方法
//獲得通知管理器 NotificationManager manager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE) //創建通知對象,參數依次為通知圖標、ticker(通知欄上一閃而過的信息)、通知創建時間 Notification notification = new Notification(R.drawable. ic_launcher, "This is ticker text", System.currentTimeMillis()); //設置通知布局,參數依次為Context,通知標題、通知正文、PindingIntent對象(點擊通知之後的事件處理) notification.setLatestEventInfo(this, "This is content title", "This is content text", null); //顯示通知,參數依次為唯一的id、通知對象 manager.notify(1, notification);
注:上面的方法現在已經被廢棄,當API Level為11及之前時使用此方法
2、APILevel高於11低於16的可以用下面的方法創建通知
//1、獲得通知管理器 NotificationManager manager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); //創建Builder,設置屬性 Notification.Builder builder = new Notification.Builder(this) .setAutoCancel(true) .setContentTitle("title") .setContentText("describe") .setSmallIcon(R.drawable.ic_launcher) .setWhen(System.currentTimeMillis()) .setOngoing(true); //獲得Notification對象 Notification notification = builder.getNotification(); //顯示通知 manager.notify(1, notification);
3、API Level在16及以上,使用下面的方法創建通知
//1、獲得通知管理器 NotificationManager manager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); //創建Builder,設置屬性 Notification notification = new Notification.Builder(this) .setAutoCancel(true) .setContentTitle("title") .setContentText("describe") .setSmallIcon(R.drawable.ic_launcher) .setWhen(System.currentTimeMillis()) .setOngoing(true) .build(); //顯示通知 manager.notify(1, notification);
二、響應通知的點擊事件
我們通過 PendingIntent對象響應容通知的點擊事件
1、獲得PendingIntent對象
PendingIntent用來處理通知的“意圖”。我們需要先構造一個Intent對象,然後再通過PendingIntent.getActivity()、PendingIntent.gBroadcast()、PendingIntent.getService()來啟動執行不同的意圖。這三個靜態方法傳入的參數相同,第一個為Context,第二個參數一般傳入0,第三個參數為Intent對象,第四個參數指定PendingIntent的行為,有FLAG_ONE_SHOT、FLAG_NO_CREATE、FLAG_CANCEL_CURRENT和FLAG_UPDATE_ CURRENT這四種值可選。
2、設置PendingIntent
通過setContentIntent(pendingIntent)來設置。
下面是一個簡單的例子
//獲得通知管理器 NotificationManager manager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); //構造Intent對象 Intent intent = new Intent(MainActivity.this, TestActivity.class); //獲得PendingIntent對象 PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT); //創建Builder,設置屬性 Notification notification = new Notification.Builder(this) .setAutoCancel(true) .setContentTitle("title") .setContentText("describe") .setSmallIcon(R.drawable.ic_launcher) .setContentIntent(pendingIntent) //設置PendingIntent .setWhen(System.currentTimeMillis()) .setOngoing(true) .build(); //顯示通知 manager.notify(1, notification);
三、取消通知
取消通知只需要在cancel()方法中傳入我們創建通知時指定的id即可
復制代碼 代碼如下:NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
manager.cancel(1);
四、通知的高級用法
1、通知到來時播放音頻
Notification有一個屬性是sound,這裡需要傳入音頻對應的URI
//音頻Uri Uri soundUri = Uri.fromFile(new File("/system/media/audio/ringtones")); setSound(soundUri);
2、通知到來時手機振動
我們使用vibrate這個屬性讓通知到來時控制手機振動。vibrate需要一個長整型數組,用於設置手機靜止和振動的時長,單位為毫秒。下標為偶數的表示手機靜止的時長,下標為奇數為手機振動的時長。
//手機振動靜止設置(靜止0秒,振動一秒,靜止一秒,振動一秒) long[] vibrate = {0, 1000, 1000, 1000}; setVibrate(vibrate)
注:控制手機還需要在AndroidManifest.xml中聲明權限:
<uses-permission android:name="android.permission.VIBRATE"/>
3、通知到來時閃爍LED燈
LED燈的使用涉及到以下一個屬性:
ledARGB ——- 控制LED燈的顏色
ledOnMS ——- 控制LED燈亮起的時間,以毫秒為單位
ledOffMS ——– 控制LED燈熄滅的時間,以毫秒為單位
主要通過setLights()方法依次對這三個屬性進行設置
setLights(Color.BLUE, 1000, 1000)
上面的代碼就是讓LED燈以藍色一閃一閃
4、通知到來時以默認方式提醒
如果我們不想手動設置這麼多屬性,可以使用下面的方式
.setDefaults(Notification.DEFAULT_ALL)
設置默認值,由手機環境來決定在通知到來時播放什麼鈴聲,如何振動,如何閃爍LED燈
最後說明一點,手機播放鈴聲、手機振動、LED燈的閃爍都需要真機調試,模擬器上是看不出效果的。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持本站。
可以達到的效果 第一個圖片的位置放照相機,點擊打開照相機 其余的是顯示全部存儲的圖片,點擊一次是查看大圖,長按則是每張圖片出現一個checkBox,可以進行選擇 下
---- The mark of the immature man is that he wants to die nobly for a causer wh
初次用到回調是在Fragment和Activity之間進行通信的時候,當時感覺很難理解,但又覺得這個方法使用起來很方便,所以對它進行仔細的研究。發現回調不僅僅是實現功能那
Dagger 是一種android平台的依賴注入框架,是有一家專注於移動支付的公司,Square公司推出的庫,這家公司也推出了 其他在Android開發中常用庫:otto