一、通知的基本使用
//1、获取一个NotificationManager对象,注意是使用getSystemService(NOTIFICATION_SERVICE)的方式
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
/**
2、获取一个notification(直接new)
* 参数1:通知的图标
* 参数2:用于指定通知的 ticker 内容,当通知刚被创建的时候,它会在系统的状态栏一闪而过,属于一种瞬时的提示信息
* 参数3:用于指定通知被创建的时间,以毫秒为单位,当下拉系统状态栏时,这里指定的时间会显示在相应的通知上
*/
Notification notification = new Notification(R.drawable.ic_launcher,
"This is ticker text", System.currentTimeMillis());
/**
3、对通知的布局进行设定,这里只需要调用Notification 的 setLatestEventInfo()方法就可以给通知设置一个标准的布局
* 参数1:上下文context
* 参数2:标题
* 参数3:通知内容
* 参数4:暂时还用不到,可以先传入 null
*/
notification.setLatestEventInfo(this, "This is content title",
"This is content text", null);
/**
4、显示通知
* 参数1: id,要保证为每个通知所指定的 id 都是不同的
* 参数2: Notification 对象
*/
manager.notify(1, notification);
二、然后发现我们点击之后没反应,这就引入了另一个知识点 PendingIntent
可以把 PendingIntent 简单地理解为延迟执行的 Intent
NotificationManager manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
Notification notification = new Notification(R.drawable.ic_launcher,
"This is ticker text", System.currentTimeMillis());
/**
* 3、对通知的布局进行设定,这里只需要调用Notification 的 setLatestEventInfo()方法就可以给通知设置一个标准的布局
* 参数1:上下文context
* 参数2:标题
* 参数3:通知内容
* 参数4:暂时还用不到,可以先传入 null
*/
Intent intent = new Intent(this, NotificationActivity.class);
PendingIntent pi = PendingIntent.getActivity(this, 0, intent,
PendingIntent.FLAG_CANCEL_CURRENT);
//还记得我们刚才用的参数4吧,当时我们只是传入了一个null,其实这个PendingIntent就是要传到这里的。这里我们创建了一个新的Activity,当我们点击通知的时候,就会跳转到指定的页面
notification.setLatestEventInfo(this, "This is content title",
"This is content text",pi);
manager.notify(1, notification);
三、让通知的图标消失 逻辑就是当我们进入到我们点击通知的页面时,把通知给cancel()掉
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
//这里我们传入的参数1就是上面我们notify的时候指定的id
manager.cancel(1);
四、通知的高级技巧
音频
Uri soundUri = Uri.fromFile(new File("/system/media/audio/ringtones/Basic_tone.ogg"));
notification.sound = soundUri;
振动
四个参数下标为 0 的值表示手机静止的时长,下标为 1 的值表示手机振动的时长,下标为 2 的值又表示手
机静止的时长,以此类推。所以,如果想要让手机在通知到来的时候立刻振动 1 秒,然后静
止 1 秒,再振动 1 秒,代码就可以写成
long[] vibrates = {0, 1000, 1000, 1000};
notification.vibrate = vibrates;
注意手机振动还是要申请权限的:
<uses-permission android:name="android.permission.VIBRATE" />
LED 灯的显示
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 灯闪烁等功能的。
Android 播放通知声音是在哪个类 安卓通知声音
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
xml文件 hadoop
你在这里因为你有,有一个文件扩展名结尾的文件 .xml. 文件与文件扩展名 .xml 只能通过特定的应用程序推出。这有可能是 .xml 文件是数据文件,而不是文件或媒体,这意味着他们并不是在所有观看。什么是一 .xml 文件?.xml文件是用于通过各种应用的文件,因为这是指对被写在可扩展标记语言文件。这是包
xml文件 hadoop xml是HTML文件的扩展名吗 xml Visual XML