notification入门要点总结

来源:互联网 发布:博弈树搜索算法 编辑:程序博客网 时间:2024/05/22 17:01

 

notification就是android手机下拉菜单栏常用的一个控件,可以轻松实现通知效果。

 

下面对Notification类中的一些常量,字段,方法简单介绍一下:

常量:
DEFAULT_ALL    使用所有默认值,比如声音,震动,闪屏等等
DEFAULT_LIGHTS 使用默认闪光提示
DEFAULT_SOUNDS 使用默认提示声音
DEFAULT_VIBRATE 使用默认手机震动
【说明】:加入手机震动,一定要在manifest.xml中加入权限:
<uses-permission android:name="android.permission.VIBRATE" />

以上的效果常量可以叠加,即通过
notification.defaults =DEFAULT_SOUND|DEFAULT_VIBRATE; 
notification.defaults |= DEFAULT_SOUND (最好在真机上测试,震动效果模拟器上没有)

 设置flag位:
FLAG_AUTO_CANCEL  该通知能被状态栏的清除按钮给清除掉
FLAG_NO_CLEAR     该通知不能被状态栏的清除按钮给清除掉
FLAG_ONGOING_EVENT 通知放置在正在运行栏,不能被清除掉
FLAG_INSISTENT 是否一直进行,比如音乐一直播放,知道用户响应

          

常用字段:
contentIntent  设置PendingIntent对象,点击时发送该Intent
defaults 添加默认效果
flags 设置flag位,例如FLAG_NO_CLEAR等
icon 设置图标
sound 设置声音
tickerText 显示在状态栏中的文字
when 发送此通知的时间戳

                

NotificationManager常用方法介绍:
public void cancelAll() 移除所有通知(只是针对当前Context下的Notification)
public  void cancel(int id) 移除标记为id的通知 (只是针对当前Context下的所有Notification)
public  void notify(String tag ,int id, Notification notification) 将通知加入状态栏,标签为tag,标记为id
public  void notify(int id, Notification notification) 将通知加入状态栏,标记为id


 
以下是代码实现的一个小例子

 /**
  * 添加一个notification
  */
 private void addNotificaction() {
  NotificationManager manager = (NotificationManager) this
  .getSystemService(Context.NOTIFICATION_SERVICE);
  // 创建一个Notification
  Notification notification = new Notification();
  // 设置显示在手机最上边的状态栏的图标
  notification.icon = R.drawable.excel;
  // 当当前的notification被放到状态栏上的时候,提示内容
  notification.tickerText = "注意了,我被扔到状态栏了";
  
  /***
   * notification.contentIntent:一个PendingIntent对象,当用户点击了状态栏上的图标时,该Intent会被触发
   * notification.contentView:我们可以不在状态栏放图标而是放一个view
   * notification.deleteIntent 当当前notification被移除时执行的intent
   * notification.vibrate 当手机震动时,震动周期设置
   */
  // 添加声音提示
  notification.defaults=Notification.DEFAULT_SOUND;
  // audioStreamType的值必须AudioManager中的值,代表着响铃的模式
  notification.audioStreamType= android.media.AudioManager.ADJUST_LOWER;
  
  //下边的两个方式可以添加音乐
  //notification.sound = Uri.parse("file:///sdcard/notification/ringer.mp3");
  //notification.sound = Uri.withAppendedPath(Audio.Media.INTERNAL_CONTENT_URI, "6");
  Intent intent = new Intent(this, Notification2Activity.class);
  PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT);
  // 点击状态栏的图标出现的提示信息设置
  notification.setLatestEventInfo(this, "内容提示:", "我就是一个测试文件", pendingIntent);
  manager.notify(1, notification);
  
 }