Android基础知识(8)—Notification通知
来源:互联网 发布:sql replace 正则替换 编辑:程序博客网 时间:2024/05/29 03:29
Android基础知识(8)—Notification通知
当我看到Notification通知的这个知识点时,我就确定了下一个学习内容就是它了。在我印象中Notification通知是个有趣的机制,比如说我手机上有新闻类的APP,当有热门的信息时,APP就会推送消息给我,而我选择是否查看。当然,如果是我感兴趣的内容 我就会点进去看。接下来详细学习Notification。
Notification通知简介:
Notification,俗称通知,是一种具有全局效果的通知,它展示在屏幕的顶端,首先会表现为一个图标的形式,当用户向下滑动的时候,展示出通知具体的内容。
注意:因为一些Android版本的兼容性问题,对于Notification而言,Android3.0是一个分水岭,在其之前构建Notification推荐使用Notification.Builder构建,而在Android3.0之后,一般推荐使用NotificationCompat.Builder构建。
Notification通知功能作用:
1.显示接收到短消息、即使消息等信息 (如QQ、微信、新浪、短信);
2.显示客户端的推送消息(如有新版本发布,广告,推荐新闻等);
3.显示正在进行的事物(例如:后台运行的程序)(如音乐播放器、版本更新时候的下载进度等);
Notification通知基本用法:
通知的用法还是比较灵活的,既可以在活动里创建,也可以广播接收器里面创建,当然也可以在服务里面创建。相比于后两者,在活动里面创建的实际情况还是比较少的,因为一般只有当程序进入到后台的时候才需要使用通知。不过,无论是在哪创建通知,整体的步骤都是大致相同。
实现默认通知的详细步骤:首先创建NotificationManager 来对通知进行管理,可以调用Context的getSystemService()方法来取到,再传入NOTIFICATION_SERVICE来确定取得系统哪个服务。
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);这个时候需要创建一个Notification对象,用于承载通知的内容。但是一般在实际使用过程中,一般不会直接构建Notification对象,而是使用它的一个内部类NotificationCompat.Builder来实例化一个对象(Android3.0之下使用Notification.Builder)。
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(MainActivity.this);并对Builder进行配置各种属性:
mBuilder.setContentTitle("this is setContentTitle text")<pre name="code" class="java"> .setContentText("this is setContentText text") .setSmallIcon(R.drawable.a1) .setTicker("New Message") //.setNumber(number) //设置通知集合的数量 .setNumber(12) .setAutoCancel(true)//设置这个标志当用户单击面板就可以让通知将自动取消 .setLargeIcon(btm);接下来:设置点击效果PendingIntent,在设置之前先来介绍PendingIntent,从名字上看起来有点像Intent,他们之间也确实处存在着不少相同点。Intent是立即执行某个动作,而PendingIntent是在某个何时的时机去执行某个动作。主要用于远程服务通信、闹铃、通知、启动器、短信中,在一般情况下用的比较少。PendingIntent的用法很简单,它主要提供几个静态的方法用于获取PendingIntent,可以根据需求来选择getActivity()、getBroadcast()、getServise()方法,第一个参数是Context,第二个一般用不着,传个0就好,第三个是一个Intent参数,第四个参数用于确定PendingIntent的行为:
- FLAG_ONE_SHOT:表示返回的PendingIntent仅能执行一次,执行完后自动取消;
- FLAG_NO_CREATE:表示如果描述的PendingIntent不存在,并不创建相应的PendingIntent,而是返回NULL;
- FLAG_CANCEL_CURRENT:表示相应的PendingIntent已经存在,则取消前者,然后创建新的PendingIntent;(可用于即时消息情况)
- FLAG_UPDATE_CURRENT:表示更新的PendingIntent;
// 构建一个Intent Intent intent = new Intent(MainActivity.this, NotificationActivity.class); // 封装一个PendingIntent PendingIntent pi = PendingIntent.getActivity(MainActivity.this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);mBuilder.setContentIntent(pi);
完成以上工作后,只需要调用NotificationManager的notify()方法就可以让通知显示出来,notify()方法接收两个参数:第一个参数是id,保证每个通知所指定的id都是不同的。第二个参数是Notification对象,这样就完成了。
notificationManager.notify(1, mBuilder.build());
查看效果:
完整代码:
public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //定义按钮,启动通知 findViewById(R.id.send_notice).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //定义图标 Bitmap btm = BitmapFactory.decodeResource(getResources(), R.drawable.a1); //获取状态通知栏管理 NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); //实例化通知栏构造器 NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(MainActivity.this) .setContentTitle("this is setContentTitle text") .setContentText("this is setContentText text") .setSmallIcon(R.drawable.a1) .setTicker("New Message") //.setNumber(number) //设置通知集合的数量 .setNumber(12) .setAutoCancel(true)//设置这个标志当用户单击面板就可以让通知将自动取消 .setLargeIcon(btm); // 构建一个Intent Intent intent = new Intent(MainActivity.this, NotificationActivity.class); // 封装一个PendingIntent PendingIntent pi = PendingIntent.getActivity(MainActivity.this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT); mBuilder.setContentIntent(pi); notificationManager.notify(1, mBuilder.build()); } }); }}
Notification通知其他技巧:
1、方法:.setSound(Uri sound):设置默认或则自定义的铃声,来提醒。
//获取默认铃声.setDefaults(Notification.DEFAULT_SOUND)//获取自定义铃声.setSound(Uri.parse("file:///sdcard/xx/xx.mp3"))//获取Android多媒体库内的铃声.setSound(Uri.withAppendedPath(Audio.Media.INTERNAL_CONTENT_URI, "5"))2、方法:setVibrate(long[] pattern):设置震动方式。
.setVibrate(new long[] {0,1000,1000,1000});实现的效果是振动1秒,停止1秒,再振动1秒。
需要添加权限:
<uses-permission android:name="android.permission.VIBRATE"/>
3、方法:.setLights(intledARGB ,intledOnMS ,intledOffMS):前置LED灯闪烁
描述:其中ledARGB 表示灯光颜色、 ledOnMS 亮持续时间、ledOffMS 暗的时间,以毫秒为单位。
注意:1)只有在设置了标志符Flags为Notification.FLAG_SHOW_LIGHTS的时候,才支持三色灯提醒。
2)这边的颜色跟设备有关,不是所有的颜色都可以,要看具体设备。
.setLights(0xff0000ff, 300, 0)
4、方法:.setPriority(int pri):优先级
对应属性(作用看上图就可知道):
Notification.PRIORITY_DEFAULT
Notification.PRIORITY_HIGH
Notification.PRIORITY_LOWNotification.PRIORITY_MAX
Notification.PRIORITY_MIN5、自定义带按钮通知栏、进度条通知、循环进度通知:
http://bbs.9ria.com/thread-241146-1-1.html
http://blog.csdn.net/vipzjyno1/article/details/25248021/
- Android基础知识(8)—Notification通知
- Android——Notification通知
- Android中的通知—Notification
- Android中的通知—Notification
- Android中的通知—Notification .
- Android中的通知—Notification
- Android—Notification通知详解
- Android中的通知—Notification
- Android中的通知—Notification
- 关于通知Notification的基础知识
- Notification---Android Notification通知详解
- Android开发——通知Notification
- android通知的使用——Notification
- Android——Notification状态通知栏
- android的通知栏——Notification
- Android——通知(Notification)
- Android中的通知——Notification
- Android基础—Notification(状态栏通知)详解
- crontab中如何实现每隔多少天执行一次脚本
- 浅谈微信卡券功能开发(3)
- JSPatch技术文档
- DHCP
- jquery选择器用法
- Android基础知识(8)—Notification通知
- Nginx日志分析shell
- SpingMVC ModelAndView, Model,Control以及参数传递
- Tomcat(8005,8080,8009)端口占用问题常见原因及解决方法
- 异或之美
- LeetCode Algorithms2: add two numbers
- Reverse Linked List
- C#入门5.7——迭代语句之foreach语句
- 机器学习(一)机器学习概论