目前已有章节大家可以去学习也可以参考一下
1.从零开始安卓端相机功能开发(一)了解用什么去开发以及流程 2.从零开始安卓端相机功能开发(二)让我们来开发一个相机 3.从零开始开发Android相机app(三)简单介绍图像滤镜功能
文章目录
- 1. 首先我们需要确定一个事情,我们需要做些什么
- 2. ~~我们需要开发一个安卓端的相机功能~~ ,前面废话
- 3. 下面来说一下我们将会在这个相机功能中添加和有些什么功能。
- 4.相机预览与拍照流程
- 5.To take pictures with this class, use the following steps:Google官方关于使用旧版Camera类的指导步骤
1. 首先我们需要确定一个事情,我们需要做些什么
2. 我们需要开发一个安卓端的相机功能
我们需要去选择一个帮助我们进行开发,安卓的相机开发中有两个类一个是android.hardware.camera2和android.hardware.Camera,但是其中Camera类官方已经不推荐,不过鉴于有前人踩坑了,为了快速开发也就直接拿来用了。所以我们先采用这个Camera来帮助我们进行一个简单的开发。当然后续我们还有其他的。不过同时我比较推荐的一款开源的app就是openCamera,这个有我们常用的很多功能都在里面。
如果想了解openCamera可以跳转到这里openCamera 如果想了解openCamera的源码分析请跳转这一篇文章Android 8.0系统源码分析–openCamera启动过程源码分析 当然后面我也需要用到。
3. 下面来说一下我们将会在这个相机功能中添加和有些什么功能。
以上这些将会在后面陆陆续续的讲到,这个是我毕业设计的其中的一个比较重要的相机功能。
希望对大家有帮助。
4.相机预览与拍照流程
1.用CameraManager的openCamera(String cameraId, CameraDevice.StateCallback callback, Handler handler)方法打开指定摄像头。该方法的第一个参数代表要打开的摄像头ID;第二个参数用于监听摄像头的状态;第三个参数代表执行callback的Handler,如果程序希望直接在当前线程中执行callback,则可将handler参数设为null。
2.当摄像头被打开之后会回调接口mStateCallback.onOpened,程序即可获取CameraDevice —— 即根据摄像头ID获取了指定摄像头设备,然后调用CameraDevice的createCaptureSession(List outputs, CameraCaptureSession. StateCallback callback,Handler handler)方法来创建CameraCaptureSession。该方法的第一个参数是一个List集合,封装了所有需要从该摄像头获取图片的Surface,第二个参数用于监听CameraCaptureSession的创建过程;第三个参数代表执行callback的Handler,如果程序希望直接在当前线程中执行callback,则可将handler参数设为null。
3.不管预览还是拍照,程序都调用CameraDevice的createCaptureRequest(int templateType)方法创建CaptureRequest.Builder,该方法支持TEMPLATE_PREVIEW(预览)、TEMPLATE_RECORD(拍摄视频)、TEMPLATE_STILL_CAPTURE(拍照)等参数。
4.通过第3步所调用方法返回的CaptureRequest.Builder设置拍照的各种参数,比如对焦模式、曝光模式等。
5.调用CaptureRequest.Builder的build()方法即可得到CaptureRequest对象,接下来程序可通过CameraCaptureSession的setRepeatingRequest()方法开始预览,或调用capture()方法拍照。
相机的预览与拍照流程我们基本了解了。
6预览时,是将mSurfaceHolder.getSurface()作为目标,使用setRepeatingRequest()方法,
显示拍照结果时,是将mImageReader.getSurface()作为目标,使用capture()方法。
这个就是我们使用Camera拍照的大体流程。
如果你需要进行更加深入的了解Camera2的拍照可以参考官方文档GitHub
Android Camera2Basic Sample
This sample demonstrates how to use basic functionalities of Camera2 API. You can learn how to iterate through characteristics of all the cameras attached to the device, display a camera preview, and take pictures.
当然我这里先先使用Camera进行相机的开发。
5.To take pictures with this class, use the following steps:Google官方关于使用旧版Camera类的指导步骤