Notification高级技巧
2024-08-29 19:48:32
- 观察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 灯闪烁等功能的。
最新文章
- Could not find class &#39;android.support.v4.view.ViewPager&#39;, referenced from me
- tar 解压出错
- 领域对象模型(domain object model)
- 蓝牙--主机接口控制器(HCI)
- iOS用AVAudioPlayer播放m4a音频
- java 连接sql server2008配置
- Sql Server添加用户
- How to Create Dump File for Applications
- windows和linux套接字中的select机制浅析
- ASP.NET Core MVC之ViewComponents(视图组件)
- docker基础及安装
- PHP算法之冒泡排序
- Hadoop 2.8集群安装及配置记录
- Nginx 用最快方式让缓存失效
- Java中的不可变类理解
- 【uoj336】【清华集训2017】无限之环
- 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分别是什么?
- Scala学习之路 (四)Scala的数组、映射、元组、集合
- [转帖]将改名贯彻到底,Xeon E3系列将改名为Xeon E
- Ubuntu17安装MySql5.7
热门文章
- ASCII 说明
- JavaScript学习系列4 ----- JavaScript中的扩展运算符 三个点(...)
- git中避免提交.DS_Store文件[转载]
- Linux下查看文件编码,文件编码格式转换和文件名编码转换
- mssql 递归
- rxjs入门6之合并数据流
- vue -- 使用sass并引入公共sass文件
- 从零开始安装 Ambari (1) -- 安装前的准备工作
- 动手写一个简单版的谷歌TPU-矩阵乘法和卷积
- 关于Android模块化我有一些话不知当讲不当讲