我们平时在使用QQ或微信的时候经常要和别人分享图片,这些图片可以是用手机摄像头拍的,也可以是从相册中选取的。类似这样的功能实在是太常见了,几乎在每个应用程序中都会有,那么本节我们就学习一下调用摄像头和相册方面的知识。
8.3.1 调用摄像头拍照
先来看看摄像头方面的知识,现在很多的应用都会要求用户上传一张图片来作为头像,这时摄像头拍张照是最简单快捷的。下面就让我们通过一个例子来学习一下如何才能在应用程序里调用手机的摄像头进行拍照。
新建一个CameraAlbumTest项目,然后修改activity_main.xml中的代码,如下所示:
可以看到,布局文件中只有两个控件一个Button和一个ImageView。BUtton适用于打开摄像头进行拍照的,而ImageView则是用于将拍到的图片显示出来。
然后开始编写调用摄像头的具体逻辑,修改mainActivity中的代码,如下所示:
上述代码稍微有点复杂,我们来仔细分析一下。在MainActivity中要做的第一件事自然是分别获取到Button和ImageView的实例,并给Button注册上点击事件,然后在Button的点击事件里开始处理调用摄像头的逻辑,我们重点看一下这部代码。
首先这里创建了一个File,对象,用于存放摄像头拍下的图片,这里我们把图片命名为output_image.jpg,并将它存放在手机SD卡的应用关联缓存目录下。什么叫做应用关联缓存目录啦?就是指SD卡中专门存放当前应用缓存数据的位置,调用getExternalCacheDir()方法可以得到这个目录,具体的路径是/sdcard/Android/data//cache。name为什么要使用应用关联目录存放图片啦?因为从Android6.0系统开始,读写SD卡被列为了危险权限,如果将图片存放在SD卡的任何其他目录&#