Android手机多媒体——通知
发布日期:2021-08-18 16:37:31 浏览次数:8 分类:技术文章

本文共 5254 字,大约阅读时间需要 17 分钟。

一 创建手机通知

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)  //设置通知的内容跳转 参数是一个pendingIntent8                         .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();

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

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

.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     @Override14     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)  //设置通知的内容跳转 参数是一个pendingIntent31                         .setAutoCancel(true)  //设置提醒点击后自动取消32                         .build();33                 manager.notify(1,notification); //每条通知对应一个id34                 break;35             default:36                 break;37         }38     }39 }

 

转载于:https://www.cnblogs.com/Mask-D/p/9534374.html

转载地址:https://blog.csdn.net/weixin_30897233/article/details/97398253 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:CSS布局技巧之多列同高方法
下一篇:Oracle DB refresh steps from RMAN backups

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月19日 11时24分33秒