参考:https://developer.android.com/reference/android/hardware/camera2/package-summary.html

camera2提供了一个连接Android相机的接口,用来代替camera类。

该软件包将摄像机设备建模为流水线,该流水线接收输入请求以捕获单个帧,根据请求捕获单个图像,然后输出一个捕获结果元数据包,以及用于请求的一组输出图像缓冲区。 这些请求按顺序处理,并且多个请求可以一次在飞行中。 由于相机设备是一个多阶段的流水线,因此在多数Android设备上都需要有多个请求。

要枚举,查询和打开可用的相机设备,请获取CameraManager实例。

单独的CameraDevices提供一组静态属性信息,用于描述设备的硬件设备以及可用的设置和输出参数。 这些信息是通过CameraCharacteristics对象提供的,可以通过getCameraCharacteristics(String)获取有效值。

要从摄像头设备捕获或流式传输图像,应用程序必须首先使用createCaptureSession(List,CameraCaptureSession.StateCallback,Handler)创建一个带摄像头设备的输出Surfaces的摄像头捕获会话。 每个表面必须预先配置适当的尺寸和格式(如果适用),以匹配相机设备的尺寸和格式。 目标Surface可以从各种类获得,包括SurfaceView,通过Surface(SurfaceTexture),MediaCodec,MediaRecorder,Allocation和ImageReader的SurfaceTexture。

通常,相机预览图像将发送到SurfaceView或TextureView(通过其SurfaceTexture)。 可以使用JPEG和RAW_SENSOR格式的ImageReader捕获DngCreator的JPEG图像或RAW缓冲区。 在RenderScript,OpenGL ES中,或直接在托管代码或本机代码中进行应用程序驱动的相机数据处理,最好分别使用带有YUV_420_888格式的YUV类型,SurfaceTexture和ImageReader进行分配。

然后,应用程序需要构建一个CaptureRequest,它定义了摄像机设备捕获单个图像所需的所有捕获参数。 该请求还列出了应将哪个配置的输出Surfaces用作此捕捉的目标。 CameraDevice有一个工厂方法,用于为给定用例创建一个请求构建器,该方法针对运行该应用程序的Android设备进行了优化。

一旦请求被设置,它就可以被传送到主动捕捉会话,以进行一次捕捉或无限重复使用。这两种方法也有一个变种,接受用作突发捕获/重复突发的请求列表。重复请求的优先级低于捕获的优先级,因此在捕获当前重复(突发)捕获的任何新实例之前,将捕获配置了重复请求时通过capture()提交的请求。

处理请求后,摄像机设备将生成一个TotalCaptureResult对象,其中包含有关拍摄时相机设备状态的信息以及使用的最终设置。 如果舍去或解决相互矛盾的参数是必要的,则这些可能与请求有所不同。 相机设备也会将一帧图像数据发送到请求中包含的每个输出表面。 这些是相对于输出CaptureResult异步生成的,有时候会相当晚。

Android Camera2的使用的更多相关文章

  1. Android Camera2采集摄像头原始数据并手动预览

    Android Camera2采集摄像头原始数据并手动预览 最近研究了一下android摄像头开发相关的技术,也看了Google提供的Camera2Basic调用示例,以及网上一部分代码,但都是在Te ...

  2. Android Camera2 拍照(三)——切换摄像头,延时拍摄和闪光模式

    原文:Android Camera2 拍照(三)--切换摄像头,延时拍摄和闪光模式 一.切换摄像头 在前后摄像头之间切换,首先需要关闭之前打开的摄像头,关闭preview,之后重新打开新的摄像头,重新 ...

  3. Android Camera2 拍照(四)——对焦模式

    原文:Android Camera2 拍照(四)--对焦模式 本篇将重点介绍使用Camera2 API进行手动对焦的设置,以及在手动对焦与自动对焦模式之间切换. 一.手动对焦响应事件 首先我们要实现点 ...

  4. Android Camera2拍照(一)——使用SurfaceView

    原文:Android Camera2拍照(一)--使用SurfaceView Camera2 API简介 Android 从5.0(21)开始,引入了新的Camera API Camera2,原来的a ...

  5. Android Camera2 拍照(二)——使用TextureView

    原文:Android Camera2 拍照(二)--使用TextureView 上一篇博文简单介绍了使用Camera2 API拍摄照片,并使用SurfaceView作为预览界面.实际上,相对于Surf ...

  6. android Camera2 API使用详解

    原文:android Camera2 API使用详解 由于最近需要使用相机拍照等功能,鉴于老旧的相机API问题多多,而且新的设备都是基于安卓5.0以上的,于是本人决定研究一下安卓5.0新引入的Came ...

  7. Android Camera2 拍照入门学习

    原文:Android Camera2 拍照入门学习 学习资料: 肾虚将军android camera2 详解说明 极客学院android.hardware.camera2 使用指南 Android 5 ...

  8. Android Camera2/HAL3

    Android : Camera2/HAL3 框架分析 https://www.cnblogs.com/blogs-of-lxl/p/10651611.html Android : Camera之ca ...

  9. Android Camera2 预览功能实现

    1. 概述 最近在做一些关于人脸识别的项目,需要用到 Android 相机的预览功能.网上查阅相关资料后,发现 Android 5.0 及以后的版本中,原有的 Camera API 已经被 Camer ...

  10. Android : Camera2/HAL3 框架分析

    一.Android O上的Treble机制: 在 Android O 中,系统启动时,会启动一个 CameraProvider 服务,它是从 cameraserver 进程中分离出来,作为一个独立进程 ...

随机推荐

  1. PL/SQL Developer 使用小技巧

    1.PL/SQL Developer记住登陆密码 在使用PL/SQL Developer时,为了工作方便希望PL/SQL Developer记住登录Oracle的用户名和密码: 设置方法:tools- ...

  2. 黄聪:Fiddler对安卓应用手机抓包图文教程

    做开发需要抓取手机app的http/https的数据包,想看APP发出的http请求和响应是什么,这就需要抓包了,这可以得到一些不为人知的api,比如还可以干些“坏事”... 需要工具: Fiddle ...

  3. pytest.6.Parametrize Fixture

    From: http://www.testclass.net/pytest/parametrizing_fixture/ 背景 @pytest.mark.parametrize 装饰器可以让我们每次参 ...

  4. 【事务隔离级别】数据库事务隔离级别-UNDERSTANDING ISOLATION LEVELS

    参考链接:ISOLATION LEVELS ISOLATION LEVELS In a database system, concurrent transactions are processed i ...

  5. 问题解决:SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame

    转载:y小川 SettingWithCopyWarning 解决方案 问题场景:我在读取csv文件之后,因为要新增一个特征列并根据已有特征修改新增列的值,结果在修改的时候就碰到了SettingWith ...

  6. problem:为什么会有options请求

    为了安全考虑,浏览器对资源访问有同源限制的问题,也就是web应用程序只能访问和它同一协议同一域名同一端口的web应用程序上的资源. 通过跨域资源共享机制可以让资源在浏览器中访问与该资源本身不同域的资源 ...

  7. unittest框架 assertEqual 报错 让其出现中文的方法(这个问题出现时 我找了老半天) 还追加了 报错信息自定义的方法

    1,发现如果assertEqual里面放的是变量,不会展示中文出来 2,放的是中文(注意前面加u)就可以展示中文出来 改进后的方法:(可以放入变量去对比还可以展示中文的方法)

  8. 面试总结之PYTHON

    source code https://github.com/haoran119/interview/tree/master/interview%20summary%20of%20python [ZZ ...

  9. jQuery版本问题,及事件源

    jQuery版本的分界线是2.0 2.0之前很多方法支持ie低版本,2.0之后就不支持了 工具:index() 指定元素的索引  (有参数) 不传参的情况下,父级元素下同级元素的排名,传参:指定元素的 ...

  10. go中的无限极分类的问题

    最近在开发的过程中遇到一个无限极分类的问题,这种问题在php中写过很多,想着很简单,3-5分钟就能解决,结果竟然写了半小时,既然这样,就把这个给总结下. 思路 1.循环数据,放到hash中,把标识的数 ...