Android手机多媒体——通知

一 创建手机通知

1.创建一个NotificationManager

创建一个NotificationManager来对通知就行管理。一般调用context的getSystemService()方法得到这个对象,这个方法传入要获取的服务,返回的是一个该类型的值。如下:

/*获取到一个NotificationManager来对通知进行管理,
* 使用的是getSystemService方法,传入一个服务,返回一个manager*/
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

2.创建一个Notification对象

可以使用NotificationCompat类中的构造器来——Builder构造器来创建Notification对象,稳定性较好。

Notification notification = new NotificationCompat.Builder(context).build();

但是这只是一个空的通知,还需要在build()之前加上任意多的设置来创建一个Notification对象,如下:

1                 Notification notification = new NotificationCompat.Builder(this)
2                         .setContentTitle("this is content title") //设置通知标题
3                         .setContentText("this is content text")  //设置通知内容
4                         .setWhen(System.currentTimeMillis())  //设置通知被创建的时间
5                         .setSmallIcon(R.mipmap.ic_launcher)  //设置通知的小图标
6                         .setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher))  //设置通知的大图标
7                         .setContentIntent(pi)  //设置通知的内容跳转 参数是一个pendingIntent
8                         .setAutoCancel(true)  //设置提醒点击后自动取消
9                         .build();

以上就是一些要加入的基本的设置。

3.创建通知点击跳转——PendingIntent

Pendingintent相当于一个延迟执行的Intent,用法也很简单。

获取PendingIntent实例的静态方法有:getActivity(),getBroadcast(),getService()三种,他们所接受的参数都是相同的,

第一个参数是content,第二个一般设为0,第三个是一个intent对象,第四个用于确定pendingIntent的行为,有FLAG_ONESHOT,FLAG_NO_CREATE,FLAG_CANCEL_CURRENT和FLAG_UPDATE_CURRENT四种值可以选,通常传入0就可以了。

                /*创建一个延时的intent pendingintent,getActivity传入四个参数,
                * 在之后的新建通知时也要setContentIntent这个延时的intent*/
                Intent intent = new Intent(this,NotificationAcitivity.class);
                PendingIntent pi = PendingIntent.getActivity(this,0,intent,0);

这个pi也是上一步要调用pendingIntent的对象。

4.显示通知

然后调用NotificationManager中的notify()方法就可以让通知显示出来了。

manager.notify(1,notification);
//参数分别是id 和 要发送的通知。每条通知对应一个id

5.更多通知设置

通知还可以设置声音,震动,LED灯光等效果,如下:

1                         //设置一段通知发送时的音频 接收一个Uri参数
2                         .setSound(Uri.fromFile(new File("/system/media/audio/ringtones/luna.ogg")))
3                         //设置通知发送时的震动,是长整型的数组,对应手机静止时间,震动时间,来回交替,以毫秒为单位
4                         .setVibrate(new long[]{0,1000,1000,1000})
5                         //设置LED灯,三个参数分别是 灯颜色,灯亮起时长,灯暗下时长
6                         .setLights(Color.GREEN,1000,1000)
7                         .build();

其中要获得震动功能需要声明权限

<uses-permission android:name="android.permission.VIBRATE"/>

如果不想自己设置,可以直接使用默认效果。

.setDefaults(NotificationCompat.DEFAULT_ALL)

6.通知的高级功能

使用setStyle()方法,可以在通知里传入长文本和图片等内容

传入长文本:通过setSyle方法,参数中,使用NotificationCompat类中的BigTextStyle方法,传入长文本

1 .setStyle(new NotificationCompat.BigTextStyle().bigText("aaaaaaaaaaaaaaaaaaaaa" +
2                                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" +
3                                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"))
4 .build();

传入图片:通过setSyle方法,参数中,使用NotificationCompat类中的BigPictureStyle方法,传入图片。其中使用BitmapFactory类中的decodeResource方法 将图片转化为bitmap格式。

1 .setStyle(new NotificationCompat.BigPictureStyle().bigPicture(BitmapFactory.decodeResource(getResources(),R.drawable.big_image)))
2 .build();

设置通知权限:

.setPriority(NotificationCompat.PRIORITY_MAX)

传入的参数有五种类型如下:对应着不同的权重。

7.实例

通过一个按键来发送通知,并且可以通过通知跳转到另外一个活动。另外,这个实例中按键触发器是用另外一种switch方式来写的。

 1 public class MainActivity extends AppCompatActivity implements View.OnClickListener {
 2
 3     @Override
 4     protected void onCreate(Bundle savedInstanceState) {
 5         super.onCreate(savedInstanceState);
 6         setContentView(R.layout.activity_main);
 7
 8         Button sendNotice = (Button) findViewById(R.id.send_notice);
 9         sendNotice.setOnClickListener(this);
10     }
11
12
13     @Override
14     public void onClick(View view) {
15         switch (view.getId()){
16             case R.id.send_notice:
17                 /*创建一个延时的intent pendingintent,getActivity传入四个参数,
18                 * 在之后的新建通知时也要setContentIntent这个延时的intent*/
19                 Intent intent = new Intent(this,NotificationAcitivity.class);
20                 PendingIntent pi = PendingIntent.getActivity(this,0,intent,0);
21                 /*获取到一个NotificationManager来对通知进行管理,
22                 * 使用的是getSystemService方法,传入一个服务,返回一个manager*/
23                 NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
24                 Notification notification = new NotificationCompat.Builder(this)
25                         .setContentTitle("this is content title") //设置通知标题
26                         .setContentText("this is content text")  //设置通知内容
27                         .setWhen(System.currentTimeMillis())  //设置通知被创建的时间
28                         .setSmallIcon(R.mipmap.ic_launcher)  //设置通知的小图标
29                         .setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher))  //设置通知的大图标
30                         .setContentIntent(pi)  //设置通知的内容跳转 参数是一个pendingIntent
31                         .setAutoCancel(true)  //设置提醒点击后自动取消
32                         .build();
33                 manager.notify(1,notification); //每条通知对应一个id
34                 break;
35             default:
36                 break;
37         }
38     }
39 }

原文地址:https://www.cnblogs.com/Mask-D/p/9534374.html

时间: 2024-08-29 18:33:50

Android手机多媒体——通知的相关文章

Android手机多媒体——拍照和相册

一 拍照功能 1.布局文件:在线性布局中设置一个按钮,用来启动拍照功能,设置一个ImageView用来展示图像 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 android:layout_width="match_parent" 3 android:layout_height="match_parent" 4 android:orie

丰富你的程序,运用手机多媒体

丰富你的程序,运用手机多媒体 使用通知 通知(Notification)是Android系统中比较有特色的一个功能,当某个应用程序希望向用户发出一些,而该应用程序又不在前台运行时,就可以借助通知来实现. 通知的基本用法 首先需要一个NotificationManager来对通知进行管理,可以调用Context的getSystemService()方法获取到.getSystemService()接收的参数为Context.NOTIFICATION_SERVICE. NotificationMana

Android手机严重漏洞,可造成手机全面瘫痪!

趋势科技发现最新Android系统漏洞,可利用藏有恶意软件的App或网页,针对Android 移动设备进行攻击,一旦用户安装此App或是浏览这些网页,将会开启一个有害的MKV文档,此文档将会在设备开机时自动执行启动,造成手机无法接电话.收发短信或是屏幕全黑导致死机 !此漏洞影响遍及Android 4.3至5.1.1版本,在漏洞修补之前建议Android用户应防范此最新漏洞攻击, 攻击者只需要知道用户手机号码,经由多媒体信息即可入侵用户手机,并远程执行程序代码,所以你首先要在手机上停用多媒体信息,

MingQQ Android版发布了,可以在Android手机上登录你的QQ,收发消息哦...

最近为了学习Android开发,特意将原来写的MingQQ Windows版移植到了Android上面,以此练手.通过这次练习,学习到了不少Android开发的相关知识,特别是界面开发部分. MingQQ的界面模仿了Android QQ的基本功能,虽然体验性完全比不上QQ,但目前技术有限,只能做到现在这水平了,更好的界面用户体验留待以后再提升吧. 下拉刷新目前使用了第三方开源库Android-PullToRefresh,以后再考虑替换成自己写的下拉刷新组件,并增加消息列表的右滑删除功能. 发布的

android手机横屏和竖屏与android:configChanges

原文地址:http://woshixy.blog.51cto.com/5637578/1081913 目前大多数手机都支持重力感应随之而来的就是屏幕方向改变的问题.对应普通开发者来说屏幕的随意改变也会带来困扰.在Google自带的doc里可以看到,如果设备的配置(Resources.Configuration中进行了定义)发生改变,那么所有用户界面上的东西都需要进行更新以适应新的配置.因为Activity是与用户交互的最主要的机制,它包含了处理配置改变的专门支持.除非你特殊指定,否则当配置发生改

Android BLE开发——Android手机与BLE终端通信初识

蓝牙BLE官方Demo下载地址:   http://download.csdn.net/detail/lqw770737185/8116019参考博客地址:    http://www.eoeandroid.com/thread-563868-1-1.html?_dsign=843d16d6      设备:MX5手机一台,农药残留检测仪一台(BLE终端设备)      目的:实现手机控制仪器,如发送打印指令,仪器能进行打印操作等 关于如何打开蓝牙,配置相关权限,搜索BLE设备等步骤网上有很多资

Android手机——读取手机电话+短信+网页+图片+音乐+视频+APK+通知栏消息+换头像

Android手机--电话+短信+网页+图片+音乐+视频+APK+通知栏消息+换头像 <!--拨打电话权限--> <uses-permission android:name="android.permission.CALL_PHONE"/> <!--连接网络权限--> <uses-permission android:name="android.permission.INTERNET"/> <!--读写文件的权限

android之Notification通知

android之Notification通知 我们在用手机的时候,如果来了短信,而我们没有点击查看的话,是不是在手机的最上边的状态栏里有一个短信的小图标提示啊?你是不是也想实现这种功能呢?今天的Notification就是解决这个问题的. [java] view plaincopy package cn.com.chenzheng_java; import android.app.Activity; import android.app.Notification; import android.

android 特殊用户通知用法汇总

一直用的android手机,用过这么多的app,平时也会遇到有趣的通知提醒,在这里先总结两种吧,notification和图标数字,有的以后看到再研究.还有,推广一下哈,刚刚建立一个Q群544645972,有兴趣的加一下,一起成长. Notification Notification应该算是最常见的app通知方式了,网上资料也很多,各种使用方法官方文档也已经写的非常详细了:http://developer.android.com/intl/zh-cn/guide/topics/ui/notifi