Android多媒体之通知

通知

常用功能

1.显示接收到短消息、即使消息等信息 (如QQ、微信、新浪、短信)  
2.显示客户端的推送消息(如有新版本发布,广告,推荐新闻等) 
3.显示正在进行的事物(例如:后台运行的程序)(如音乐播放器、版本更新时候的下载进度等)

基本布局

Android多媒体之通知_第1张图片

状态通知栏主要涉及到2个类:  Notification 和 NotificationManager 
Notification为通知信息类,它里面对应了通知栏的各个属性
NotificationManager  是状态栏通知的管理类,负责发通知、清除通知等操作。

注意:NotificationManager 是一个系统Service,所以必须通过 getSystemService(NOTIFICATION_SERVICE)方法来获取,方法如下。


流程简述:

1)获取通知栏管理

NotificationManager mNotificationManager = (NotificationManager)
        getSystemService(NOTIFICATION_SERVICE);


2)实例化通知栏构造器NotificationCompat.Builder

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this);


3)设置通知的布局(这一步比较繁琐)

mBuilder.setContentTitle("title")//设置通知栏标题
        .setContentText("content") //设置通知栏显示内容
      .setNumber(10) //设置通知集合的数量
        .setTicker("xxx,快递到了") //通知首次出现在通知栏,带上升动画效果的
        .setWhen(System.currentTimeMillis())//通知产生的时间,
        .setPriority(Notification.PRIORITY_DEFAULT) //设置该通知优先级
        .setAutoCancel(true)//设置这个标志当用户单击面板就可以让通知将自动取消
        .setOngoing(false)//ture,设置他为一个正在进行的通知。
        .setDefaults(Notification.DEFAULT_ALL)//向通知添加声音、闪灯和振动效果的最简单、最一致的方式是使用当前的用户默认设置,使用defaults属性,可以组合
        .setSmallIcon(R.drawable.zed10);//设置通知小ICON


4)设置通知的响应操作(跳转示例)

Intent intent = new Intent(this,Second.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this,1,intent,0);
mBuilder.setContentIntent(pendingIntent);

什么是PendingIntent
PendingIntent和Intent略有不同,它可以设置执行次数,主要用于远程服务通信、闹铃、通知、启动器、短信中,在一般情况下用的比较少。

PendingIntent什么用
Notification支持多种Intent来响应单击事件、消除事件、处理紧急状态的全屏事件等。这里就用到了setContentIntent(PendingIntent intent)来处理以上这么多的事件。

PendingIntent的位标识符
FLAG_ONE_SHOT          表示返回的PendingIntent仅能执行一次,执行完后自动取消
FLAG_NO_CREATE         表示如果描述的PendingIntent不存在,并不创建相应的PendingIntent,而是返回NULL
FLAG_CANCEL_CURRENT    表示相应的PendingIntent已经存在,则取消前者,然后创建新的PendingIntent                        这个有利于数据保持为最新的,可以用于即时通信的通信场景
FLAG_UPDATE_CURRENT    表示更新的PendingIntent

特别注意,PendingIntent必须设置位标识符,显而易见,标识符对应的PendingIntent的类型和状态,防止冲突与交叉异常的产生。

Intent更加倾向于去立即执行某个动作,而 PendingIntent 更加倾向于在某个合适的时机去执行某个动作

关于PendingIntent详细分析这里推荐参考http://blog.csdn.net/hudashi/article/details/7060837


5)显示通知

mNotificationManager.notify(1, mBuilder.build());


6)删除通知

mNotificationManager.cancel(id);


通知跳转实现截图:



源码:https://github.com/walkthehorizon/NotificationTest.git

实现在发送通知的时候的提示

铃声提示

Uri soundUri = Uri.fromFile(new File("app/Music/夜的钢琴曲.mp3"));
notification.sound = soundUri;
震动提示
long[] vibrates = {0, 1000, 1000, 1000};
notification.vibrate = vibrates;
注意vibrate这个数组的偶数下标表示静止时长,奇数下标表示振动时长,本例则意味着立刻震动1秒,停止1秒,再震动1秒......

此外,振动需要声明权限

<uses-permission android:name="android.permission.VIBRATE" />
控制LED灯

notification.ledARGB = Color.GREEN;
notification.ledOnMS = 1000;
notification.ledOffMS = 1000;
notification.flags = Notification.FLAG_SHOW_LIGHTS;

ledARGB用于控制LED灯的颜色,一般有红绿蓝三种颜色可选。

ledOnMS用于指定LED灯亮起的时长,以毫秒为单位。

ledOffMS用于指定LED灯暗去的时长,也是以毫秒为单位。

flags用于指定通知的一些行为,其中就包括显示LED灯这一选项。

除了以上自定设置外,你也可以使用手机自带的默认设置

notification.defaults = Notification.DEFAULT_ALL;


你可能感兴趣的:(android,notification,通知,多媒体)