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

有目标就不怕路远。年轻人.无论你现在身在何方.重要的是你将要向何处去。只有明确的目标才能助你成功。没有目标的航船.任何方向的风对他来说都是逆风。因此,再遥远的旅程,只要有目标.就不怕路远。没有目标,哪来的劲头?一车尔尼雷夫斯基

导读:本篇文章讲解 从零开始安卓端相机功能开发(一)了解用什么去开发以及流程,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

目前已有章节大家可以去学习也可以参考一下
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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/134162.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!