本文主要介绍如何使用camera+surfaceview来自定义相机,我们使用自定义相机进行拍照、扫描二维码等等。Camera是属于硬件部分,在开发中会经常遇到如何使用相机。在上一篇文章中介绍了如何动态的申请权限,使用相机是需要动态申请权限的。
根据官方文档介绍在拍摄照片时,用户通常要先看到拍摄目标的预览效果,然后再按下快门。为此,您可以使用 SurfaceView 绘制摄像头传感器需要获取的内容的预览效果。SurfaceView是由SurfaceHolder来操控。
一、首先创建一个SurfaceView,并实现SurfaceHolder的回调。由于Camera在SurfaceView中是通过SurfaceHolder 使得Surfaceview能够预览Camera返回的数据,因此我们需要实现SurfaceHolder 的回调,关于SurfaceView 、Surface 、 SurfaceHolder三者的关系可以参考这篇博客。

SurfaceHolder中有一个Callbcak接口,它有3个回调方法
-
surfaceCreated(SurfaceHolder holder)
surface第一次创建时回调 -
surfaceChanged(SurfaceHolder holder, int format, int width,
int height)
surface变化的时候回调(格式/大小) -
surfaceDestroyed(SurfaceHolder holder)
surface销毁的时候回调
SurfaceView继承自View,其中有两个成员变量,一个是Surface对象,一个是SuraceHolder对象。
- SurfaceView把Surface显示在屏幕上
- SurfaceView通过SuraceH