您的位置:首页 > 移动开发 > Android开发

Android多媒体之通知

2015-11-13 20:46 405 查看
通知

常用功能

1.显示接收到短消息、即使消息等信息 (如QQ、微信、新浪、短信)

2.显示客户端的推送消息(如有新版本发布,广告,推荐新闻等)

3.显示正在进行的事物(例如:后台运行的程序)(如音乐播放器、版本更新时候的下载进度等)


基本布局



状态通知栏主要涉及到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必须设置位标识符,显而易见,标识符对应的[b]PendingIntent的类型和状态,防止冲突与交叉异常的产生。[/b]

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

关于PendingIntent详细分析这里推荐参考/article/2934555.html

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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: