Android手機多媒體——通知

來源:互聯網
上載者:User

標籤: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手機多媒體——通知

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.