从零开始安卓端相机功能开发(一)了解用什么去开发以及流程

目前已有章节大家可以去学习也可以参考一下
1.从零开始安卓端相机功能开发(一)了解用什么去开发以及流程
2.从零开始安卓端相机功能开发(二)让我们来开发一个相机
3.从零开始开发Android相机app(三)简单介绍图像滤镜功能

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类的指导步骤

在这里插入图片描述

引用文章:
https://blog.csdn.net/zhangbijun1230/article/details/80555769
https://blog.csdn.net/zhangbijun1230/article/details/80220808
https://www.polarxiong.com/archives/Android相机开发-一-最简单的相机.html

  • 6
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

轻烟飘荡

我想吃甜筒

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值