最近在开发相机相关功能,顺便把学习到的知识总结一下,主要包括:
1、利用intent方式调用系统相机拍照;
2、利用Camera API在Android5.0版本以下开发相机;
3、利用Camera2 API在Android5.0以上版本开发相机;
4、Google CameraView开源库使用;
先总结一下利用intent方式调用系统相机拍照,可参考源码:https://github.com/kexiaoderenren/CameraApplication/blob/master/app/src/main/java/com/wine9/cameraapplication/IntentCaptureActivity.java
调用系统相机拍照方式比较简单,代码如下两行即可,然后在onActivityResult()中接收返回数据:
Intent intent =new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, requestCode);
其中使用MediaStore.ACTION_IMAGE_CAPTURE为 拍照;使用MediaStore.ACTION_VIDEO_CAPTURE为录像。intent也可以附带部分参数:
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY,1):为指定相机拍照图像的质量,数值为0~1,数值越低则图像质量越差;
intent.putExtra(MediaStore.EXTRA_SIZE_LIMIT):指定最大图片尺寸;
intent.putExtra(MediaStore.EXTRA_DURATION_LIMIT):指定最大允许的记录持续时间
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri pathUri);为指定相机拍照后图片保存目录,如果没有指定目录,照片存在系统默认的图片存储路径下。
注意:如果指定MediaStore.EXTRA_OUTPUT,则在拍照后onActivityResult(int requestCode,int resultcode,Intent data)中的返回的data为null,无法获取到图片,只能通过该图像路径下获取。
调用相机方式比较简单,希望能与各位多多交流。运行代码至github下载运行:https://github.com/kexiaoderenren/CameraApplication