自定义camera的爬坑之旅

项目中使用到了自定义camera,并实现手势缩放和自动对焦。

一、首先来看看官方文档

自定义camera的爬坑之旅_第1张图片

goole给出了10个步骤,那么我们按照这十个步骤来实现自定义camera。

二、自定义camera要使用到的类

Camera                                 相机类,详情参照官方文档

Camera.Parameters             Camera的参数设置,如:对焦、闪光灯

SurfaceView                         预览Camera镜头的取景

SurfaceHolder                      surface的抽象接口,来控制surface的尺寸和格式

SurfaceHolder.Callback      控制该接口的客户端能够接收surface改变的信息

三、demo实现

1.布局文件

自定义camera的爬坑之旅_第2张图片

FrameLayout来填充Surface

一个前、后置转换ImageView和一个拍照ImageView 

自定义camera的爬坑之旅_第3张图片

2.Surface类的实现

创建一个Activity继承SurfaceView并实现SurfaceHolder.Callback接口

 (1)构造方法

自定义camera的爬坑之旅_第4张图片

 (2)三个Override的方法

自定义camera的爬坑之旅_第5张图片

 (3)相机参数初始化

自定义camera的爬坑之旅_第6张图片

 (4)释放相机

自定义camera的爬坑之旅_第7张图片

 (5)重置相机

自定义camera的爬坑之旅_第8张图片

 (6)方向控制

自定义camera的爬坑之旅_第9张图片

3.CameraActivity的实现

(1)将CameraPreview填充到FrameLayout

context= CameraActivity.this;

context一定要这样获取,使用

Context context;

方式获取会出错

 (2)初始化相机

自定义camera的爬坑之旅_第10张图片

 (3)对焦代码较多,就不截图了,直接上传文件,源文件可以直接使用到自定义Camera中

需要注意的是,实现缩放,必须给cameraPreview设置两个监听事件,一个是setOnClickListener,一个是setOnTouchListener

 (4)demo已经提交到github上了

CustomCamera 点击下载demo

你可能感兴趣的:(自定义camera的爬坑之旅)