参考: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. Git忽略规则和.gitignore规则不生效的解决办法

    Git忽略规则和.gitignore规则不生效的解决办法   Git忽略规则: 在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改根目录中 .gitignore 文件的方法(如果 ...

  2. IIS - 自动申请、部署Let's Encrypt的免费SSL证书(让网站实现HTTPS协议)

    IIS - 自动申请.部署Let's Encrypt的免费SSL证书(让网站实现HTTPS协议) 2017-12-19发布:hangge阅读:161   一.HTTPS 协议介绍 1,什么是 HTTP ...

  3. Python单元测试框架之pytest 3 -- fixtures

    From: https://www.cnblogs.com/fnng/p/4769020.html Python单元测试框架之pytest -- fixtures 2015-08-29 13:05 b ...

  4. Lucene - CustomScoreQuery 自定义排序

    在某些场景需要做自定义排序(非单值字段排序.非文本相关度排序),除了自己重写collect.weight,可以借助CustomScoreQuery. 场景:根据tag字段中标签的数量进行排序(tag字 ...

  5. Qt QListWidget实现图片缩略图列表

    转载:v_xchen_v 目标: 将本机中的多张图片以缩略图的形式显示在列表中 环境: 我们已经做好了菜单栏和文件选择对话框.参考:http://blog.csdn.net/v_xchen_v/art ...

  6. host文件的用处

    做Flash开发的人员免不了接触host文件. 1:首先你注册Flash软件.FlashBuilder都需要先修改host,然后再安装的.(具体的修改时在etc包里找到host文件,把一堆adobe的 ...

  7. IntelliJ IDEA2017 激活方法 最新的

    今天打开电脑,非常不幸,idea出问题了!!! 大部分人以前应该都是用的以下方法: 1. 到网站 http://idea.lanyus.com/ 获取注册码 2.填入下面的license server ...

  8. 通过atomic_flag简单自旋锁实现简单说明标准库中锁使用的memory_order

    在使用标准库中的加锁机制时,例如我们使用std::mutex,写了如下的代码(下面的代码使用condition_variable可能更合适) std::mutex g_mtx; int g_resNu ...

  9. MFC 控件使用教程

    combo box控件用法: 下拉选择控件,首先将控件拖动到你需要使用控件的地方,用ClassWizard为它关联一个变量,我们注意到变量类型是CString型的.右击属性,General中可以设置一 ...

  10. ELK 日志查询分析nginx日志

    # ======================== Elasticsearch Configuration ========================= # # NOTE: Elasticse ...