第八章运用手机多媒体 Android 8.0 及以上Notification的使用

本文详细介绍了在Android 8.0及以上版本中如何创建和管理Notification,包括获取NotificationManager,创建NotificationChannel,设置通知点击事件,以及高级功能如振动、闪光灯等。此外,还涉及到调用摄像头和相册以及播放多媒体音乐的操作流程。
摘要由CSDN通过智能技术生成

目录

一、通知

二、通知创建的步骤

2.1 首先拿到通知管理器 NotificationManager

2.2 创建通知渠道  NotificationChannel

2.2.1 创建通知渠道的步骤

2.3 创建通知 Notification实例对象

2.3.1 创建通知实例对象的步骤

三、通知的进阶技巧

3.1 通知的点击事件

四、通知的高级功能

4.1  前缀中设置一些复杂的东西

4.2  管理通知渠道

五、调用摄像头和相册

5.1  调用摄像头思路

5.3  从相册中取照片思路

5.3  两者的不同点

六、播放多媒体音乐


一、通知

通知就是字面义,可以在程序关闭或者在后台运行时发送一条消息给用户,提醒用户。用户收到通知之后,会有一个图标出现在上方,还可以下拉查看详细信息,可以点击进入app的某个活动。

通知可以在活动中创建,可以在广播接收器中创建,也可以在服务中创建。

自Android8.0之后,通知的使用有了很大的变化,在这其中我们必须用到的一个新的东西就是通知渠道,NotificationChannel。

二、通知创建的步骤

2.1 首先拿到通知管理器 NotificationManager

通知都是由一个通知管理器来管理的,因此在创建通知或者控制通知之前需要先拿到一个通知管理器NotificationManager:

 NotificationManager manager =
 (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

2.2 创建通知渠道  NotificationChannel

通知渠道就是每一个通知所属的一个渠道,对不同种类的通知进行了分类。这是android 8.0之后的,目的是为了用户能够更好的管理通知,同时也可以避免一些流氓通知(之前的弊端,和运行时权限的作用有点类似)。

2.2.1 创建通知渠道的步骤

【1】如果手机版本的sdk大于26的话 那么就需要为每一个通知设置一个通知渠道
【2】构造出通知渠道的对象,传入三个参数-----通知渠道id,通知渠道名字name,通知渠道重要性importance
【3】调用NotificationManager通知管理器的createNotificationChannel()方法,传入参数------通知渠道对象


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.O){
            NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
            String channelId = "chat";
            String channelName = "聊天消息";
            int channelImportance = NotificationManager.IMPORTANCE_HIGH;
            createNotificationChannel(channelId,channelName,channelImportance);

            channelId = "subscribe";
            channelName = "订阅信息";
            channelImportance = NotificationManager.IMPORTANCE_DEFAULT;
            createNotificationChannel(channelId,channelName,channelImportance);
        }
    }
    
    @TargetApi(Build.VERSION_CODES.O)
    private void createNotificationChannel(String channelId,String channelName,int importance){
        NotificationChannel channel = new NotificationChannel(channelId,channelName,importance);
        NotificationManager notificationManager = (NotificationManager)
                this.getSystemService(NOTIFICATION_SERVICE);
        notificationManager.createNotificationChannel(channel);
    }

其中importance我们开发人员只是设置一个默认值而已,用户可以根据自己的需要进行更改。

2.3 创建通知 Notification实例对象

2.3.1 创建通知实例对象的步骤

【1】构造出一个通知对象

首先需要构造出通知的对象。构造对象的方法之一   ------->   利用new 类名.Builder(上下文,通知渠道id).build()的方式进行构造。但是注意,这里的类名我们为了考虑安卓中各个版本兼容性,我们不直接使用Notification,而是使用NotificationCompat来进行构造。上下文就是当前上下文了,然后通知渠道id就是我们上面自己创建的通知渠道id。注意两个要点:第一就是创建一个对象的时候可以用Builder.build()来创建对象,第二就是要考虑到适配的问题,使用带compat的来作为一个类。

【2】给通知对象设置一些连缀

然后具体的通知相关内容就是可以在.build()方法那里设置连缀。

【3】调用NotificationManager的notify方法将通知进行显示

最后调用管理器的notify()方法

 Notification notification = new NotificationCompat.Builder(this,"chat")
             .setContentTitle("收到一条会话消息")//通知标题
             .setContentText("今晚吃什么?")//通知内容
             .setWhen(System.currentTimeMillis())//设置显示发送通知在什么时候
             .setSmallIcon(R.drawable.ic_launcher_background)//通知的小图标
             .setLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.ic_launcher_foreground))//通知的大图标
             .setAutoCancel(true)//用于设置是否点击之后自动取消
             .build();//最终构建出通知
 manager.notify(1,notification);//调用通知,同时传入这个通知的id(具有唯一性)

三、通知的进阶技巧

通知的进阶技巧主要就是设置通知的点击事件

3.1 通知的点击事件

需要利用PendingIntent,PendingIntent类似于intent,但是不是即刻执行的,而是在某个合适的时机去执行的,可以理解为一个延时执行的intent。

创建出PendingIntent对象,这个类有三个静态方法可以构造出这个对象:getActivity(),getService(),getBroadCast();传入的参数见代码:

然后为通知对象设置一个连缀.setContentIntent()就行了,这样点击通知之后就会跳转了。

Intent intent &
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值