Notification進階技巧,notification技巧
- 觀察Notification這個類,你會發現裡面還有很多我們沒有使用過的屬性。先來看看sound這個屬性吧,它可以在通知發出的時候播放一段音頻,這樣就能夠更好地告知使用者有通知到來。sound 這個屬性是一個 Uri 對象,所以在指定音頻檔案的時候還需要先擷取到音頻檔案對應的 URI。比如說,我們手機/system/media/audio/ringtones 目錄下有一個 Basic_tone.ogg音頻檔案,那麼在代碼中這樣就可以這樣指定:
Uri soundUri = Uri.fromFile(new File("/system/media/audio/ringtones/Basic_tone.ogg")); notification.sound = soundUri;
- 除了允許播放音頻外,我們還可以在通知到來的時候讓手機進行震動,使用的是 vibrate這個屬性。它是一個長整型的數組,用於設定手機靜止和震動的時間長度,以毫秒為單位。下標為 0 的值表示手機靜止的時間長度,下標為 1 的值表示手機震動的時間長度,下標為 2 的值又表示手機靜止的時間長度,以此類推。所以,如果想要讓手機在通知到來的時候立刻震動 1 秒,然後靜止 1 秒,再震動 1 秒,代碼就可以寫成:
long[] vibrates = {0, 1000, 1000, 1000}; notification.vibrate = vibrates; 不過,想要控制手機震動還需要聲明許可權的。因此,我們還得編輯 AndroidManifest.xml檔案,加入如下聲明:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.notificationtest"
android:versionCode="1"
android:versionName="1.0" >
……
<uses-permission android:name="android.permission.VIBRATE" />
……
</manifest>
- 現在的手機基本上都會前置一個 LED 燈,當有未接電話或未讀簡訊,而此時手機又處於鎖屏狀態時,LED燈就會不停地閃爍,提醒使用者去查看。我們可以使用ledARGB、ledOnMS、ledOffMS 以及 flags 這幾個屬性來實現這種效果。ledARGB 用於控制 LED 燈的顏色,一般有紅綠藍三種顏色可選。ledOnMS 用於指定 LED 燈亮起的時間長度,以毫秒為單位。ledOffMS用於指定 LED 燈暗去的時間長度,也是以毫秒為單位。flags 可用於指定通知的一些行為,其中就包括顯示 LED 燈這一選項。所以,當通知到來時,如果想要實現 LED 燈以綠色的燈光一閃一閃的效果,就可以寫成:
notification.ledARGB = Color.GREEN; notification.ledOnMS = 1000; notification.ledOffMS = 1000; notification.flags = Notification.FLAG_SHOW_LIGHTS; 當然,如果你不想進行那麼多繁雜的設定,也可以直接使用通知的預設效果,它會根據當前手機的環境來決定播放什麼鈴聲,以及如何震動,寫法如下: notification.defaults = Notification.DEFAULT_ALL; 注意,以上所涉及的這些進階技巧都要在手機上運行才能看得到效果,模擬器是無法表現出震動、以及 LED 燈閃爍等功能的。