多媒体的使用
下面介绍Android中多媒体的使用,首先学习一下通知的概念,以及学习任何调用摄像头和播放多媒体文件
使用通知
通知其实说白了就是我们在手机状态栏展示的APP应用信息,在Android8.0中用户要么全部接受一个app的通知,要么全部屏蔽
在Android8.0之后引入了通知渠道的概念,就是每条通知都要属于一个对应的渠道,每个应用程序都可以自由地创建当前拥有哪些渠道,但是这些通知渠道的控制权是掌握在用户手上的,用户可以自由选择这些通知渠道的重要程序
创建通知渠道
我们首先来看一下创建通知渠道的步骤:
首先需要一个NotificationManger对通知进行管理,通过Context的getSystemService()方法获取,这个方法接受的参数用于确定哪一个服务,查看下面例子
val manager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
接下来要使用NotificationChannel类构建一个通知渠道,并调用NotificationManager的createNotificationChannel()方法完成创建。有NotificationChannel是 Android 8.0的API 因此我们在使用的时候还需要进行版本判断才可以
创建一个渠道的参数说明:首先需要一个渠道ID,全局唯一即可。 渠道的用途,渠道的通知等级(IMPORTANCE_HEIGH,IMPORTANCE_DEFAULT,IMPORTANCE_LOW,IMPORTANCE_MIN)
点击查看代码
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.0)
NotificationChannel(channelId,channelName,importance)
manager.createNotificationChannel(channel)
通知的基本用法
我们用实践来看一下通知的基本用法,我们使用AndroidX中提供的一个NoticationCompat类,使用这个类的构造器创建Notification对象
AndroidX能够保证在不同版本你的Android系统中兼容。
我们来创建一个NotificationTest的项目
首先在activity_main中添加一个按钮,
然后再MainACtivity中编写触发通知的代码:
我们创建好了这条通知之后,发现这条通知是不能点击的。我们来修改这条通知,让他变为可点击的
这需要引入新的概念,PendingIntent,它可以指明一个意图,他与Intent的区别是:Intent倾向于立即执行某个动作,而PendingIntent倾向于在某个合适的时机执行某个动作。我们来优化上述代码,让通知变为可点击
通知的进阶技巧
我们来探究一下通知的其他使用技巧,首先是setStyle()方法,这个方法允许我们构建出富文本的内容,通知中不仅仅可以有文字,而且还可以有图片等等
当我们在setContentText中添加很多文字的时候,查看程序会显示不出来,这时我们借助setStyle来实现,
调用摄像头和照片
我们平时在使用QQ或者微信的时候,经常要与别人分享图片,这些图片是可以用手机拍摄的,也可以是从相册选取的。我们现在来探究这些功能是怎么实现的。
调用摄像头拍照
首先创建一个CameraAlbumTest项目,修改activity_main.xml中的代码,
然后编写MainActivity中的代码:
在AndroidMainfest.xml里面注册ContentProvider
最后程序就可以运行起来,拍照了。
从相册中选择图片
我们在项目开发过程中会遇到,到相册里面选择图片的功能,这就需要我们调用相册了。我们还是用实际案例说明
首先在activity_main中添加一个按钮
然后再MainActivity里面修改代码
播放多媒体文件
我们常见的休闲娱乐方式就是听音乐看视频,我们现在来探究一下音视频的播放
播放音频
Android中播放音频一般使用MediaPalyer,下面给出了常用的方法
我们还是通过实际代码来学习,首先创建一个例子PlayAudioTest
首先修改activity_main.xml中的文件,
我们在main下创建一个assets目录,里面放置一个.mp3后缀的文件
然后编写MianActivity中的代码:
播放视频
Android播放视频主要是使用VideoViewL来实现的,同样的先查看方法
首先创建一个PalyVideoTest的项目,首先修改PlayVideoTest布局
我们在res下创建一个raw的目录,在里面放置一个MP4的文件,然后编写MainActiviyt文件中的代码: