Notification的使用

功能简介:

在 Android 手机界面最上方有一条显示时间,信号强度和电池状态等信息的区域,这是 Android 手机的状态通知栏。当系统有一些重要的信息要通知手机用户时,例如收到新短信,或者是收到新邮件,或者是有未接电话等等,系统通常会把信息显示在状态栏中,有的仅显示小图片,有的则显示文字和小图片,用手指按住状态栏往下拉,还可以展开状态栏,查看所有系统发出的信息。
而在 Android 中有提醒功能的也可以用 Dialog,但是我们要慎重的使用,因为当使用 AlertDialog 的时候,用户正在进行的操作将会被停止。当用户打游戏的时候,来了一条短信。用户必须先去处理这条提醒,才能继续游戏,显得有点麻烦。而使用 Notification 就不会带来这些麻烦事。所以在开发中应根据实际需求,选择合适的控件。 Notification 可以在屏幕最顶部的状态栏上显示一个图标通知,通知的同时可以播放声音,以及振动来提示用户,点击通知还可以进入指定的 Activity 。

介绍及使用方法

获取实例:
NotificationManager nm = (NotificationManager)this.getSystemService(NOTIFICATION_SERVICE);
公共方法:

Cancel(int id)
Cancel(String tag, int id)

 
状态栏提醒必须设置的三个方面

      ·提示图标,提醒的标题和提醒的内容文本,PendingIntent

状态栏提醒的可选设置

      ·提醒文本( ticker-text ),声音提醒,振动提醒,灯光闪烁
notification的使用步骤

1、获取NotificationManager:
 
   NotificationManager m_NotificationManager = 
      (NotificationManager)this.getSystemService(NOTIFICATION_SERVICE);


2、定义一个Notification: 
 
   Notification  m_Notification = new Notification();



3、设置 Notification 的各种属性:
 
  //设置通知在状态栏显示的图标
   m_Notification.icon = R.drawable.icon;
   //当我们点击通知时显示的内容
   m_Notification.tickerText = "Button1 通知内容.....";     
   //通知时发出的默认声音
   m_Notification.defaults = Notification.DEFAULT_SOUND;
   //设置通知显示的参数
Intent m_Intent = new Intent(this, DesActivity.class); 
   PendingIntent m_PIntent = PendingIntent.getActivity(NotificationDemo.this, 0, m_Intent, 0);
   m_Notification.setLatestEventInfo(this, "Button1", "Button1通知", m_PIntent );

   //这个可以理解为开始执行这个通知
   m_NotificationManager.notify(0, m_Notification);
 


4、既然可以增加同样我们也可以删除,当然是只是删除你自己增加的。

   m_NotificationManager.cancel(0); //这里的0是一个ID号码,和notify第一个参数0一样
提醒的更新

每一个提醒都对应有一个唯一标识符ID,在发布提醒时指定的:

NotificationManager.notify(ID, notification)   


在更新提醒的时候,只需要在修改Notification的一些属性之后,再调用其setLatestEventInfo(),然后重新发送一次通知即可。
Notification丰富的提示方式
a) tickerText :显示文本提示
   notification.tickerText = "hello";
b) sound :发出提示音
    notification.defaults |= Notification.DEFAULT_SOUND;
    notification.sound = Uri.parse("file:///sdcard/notification/ringer.mp3");
   notification.sound = Uri.withAppendedPath(Audio.Media.INTERNAL_CONTENT_URI, "6");
c) vibrate :手机振动
     notification.defaults |= Notification.DEFAULT_VIBRATE;
    long[] vibrate = {0,100,200,300};
     notification.vibrate = vibrate;
d) ledARGB 、ledOnMS 、ledOffMS :LED灯闪烁
     notification.defaults |= Notification.DEFAULT_LIGHTS;
     notification.ledARGB = 0xff00ff00;
     notification.ledOnMS = 300;
     notification.ledOffMS = 1000;
   notification.flags |= Notification.FLAG_SHOW_LIGHTS;
 
在使用notification的时候,我们可以方便的使用系统提供的方法去实现一个状态栏,但是有个问题就是状态栏只能一行显示所有的提示内容,如果提示内容超出宽度,那么后边的文字就会显示不全。这里介绍一个自定义的状态栏下拉视图,具体的方法如下:
                  
  Notification notification = new Notification();   
                    notification.icon = R.drawable.icon;   
                    notification.tickerText = "Custom!";   
                    RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.custom);   
                    contentView.setImageViewResource(R.id.image, R.drawable.icon);   
                    contentView.setTextViewText(R.id.text, "Hello, this message is in a custom expanded view");   
                    notification.contentView = contentView;   
                   //使用自定义下拉视图时,不需要再调用setLatestEventInfo()方法  
                    //但是必须定义 contentIntent  
                    notification.contentIntent = pd; //pd即PendingIntent  
                    nm.notify(3, notification);   

最新特性:

在android3.0之后,Android的通知与之前的版本有所区别。为了更好的使用,androidSDK引入了Android.app.Notificition.Builder这个类
NotificationManager nm = (NotificationManager) MainActivity.this .getSystemService(NOTIFICATION_SERVICE);
 Resources res = MainActivity.this.getResources();
builder = new Notification.Builder(MainActivity.this);
                    builder.setContentIntent(contentIntent)
      .setSmallIcon(R.drawable.ic_launcher)//设置状态栏里面的图标(小图标)                    
                   .setLargeIcon(BitmapFactory.decodeResource(res, R.drawable.i5))//下拉下拉列表里面的图标(大图标)       
                   .setTicker("this is bitch!") //设置状态栏的显示的信息
          .setWhen(System.currentTimeMillis())//设置时间发生时间
           .setAutoCancel(true)//设置可以清除
                     .setContentTitle("This is ContentTitle")//设置下拉列表里的标题
                      .setContentText("this is ContentText");//设置上下文内容
                   n = builder.getNotification();//获取一个Notification
                   n.defaults =Notification.DEFAULT_SOUND;//设置为默认的声音
                   nm.notify(NOTIFICATION_BASE_NUMBER, n);//显示通知 break;

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值