• 观察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 灯闪烁等功能的。

最新文章

  1. Could not find class &#39;android.support.v4.view.ViewPager&#39;, referenced from me
  2. tar 解压出错
  3. 领域对象模型(domain object model)
  4. 蓝牙--主机接口控制器(HCI)
  5. iOS用AVAudioPlayer播放m4a音频
  6. java 连接sql server2008配置
  7. Sql Server添加用户
  8. How to Create Dump File for Applications
  9. windows和linux套接字中的select机制浅析
  10. ASP.NET Core MVC之ViewComponents(视图组件)
  11. docker基础及安装
  12. PHP算法之冒泡排序
  13. Hadoop 2.8集群安装及配置记录
  14. Nginx 用最快方式让缓存失效
  15. Java中的不可变类理解
  16. 【uoj336】【清华集训2017】无限之环
  17. hadoop-n.x.y.tar.gz、hadoop-n.x.y.tar.gz.asc 、hadoop-n.x.y.tar.gz.md5 、hadoop-n.x.y.tar.gz.mds分别是什么?
  18. Scala学习之路 (四)Scala的数组、映射、元组、集合
  19. [转帖]将改名贯彻到底,Xeon E3系列将改名为Xeon E
  20. Ubuntu17安装MySql5.7

热门文章

  1. ASCII 说明
  2. JavaScript学习系列4 ----- JavaScript中的扩展运算符 三个点(...)
  3. git中避免提交.DS_Store文件[转载]
  4. Linux下查看文件编码,文件编码格式转换和文件名编码转换
  5. mssql 递归
  6. rxjs入门6之合并数据流
  7. vue -- 使用sass并引入公共sass文件
  8. 从零开始安装 Ambari (1) -- 安装前的准备工作
  9. 动手写一个简单版的谷歌TPU-矩阵乘法和卷积
  10. 关于Android模块化我有一些话不知当讲不当讲