参考: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. 黄聪:C#如何Json转字符串;字符串转Json;Newtonsoft.Json(Json.Net)学习笔记(转)

    Newtonsoft.Json,一款.NET中开源的Json序列化和反序列化类库(下载地址http://json.codeplex.com/). 下面是Json序列化和反序列化的简单封装: /// & ...

  2. STL中erase()的用法

    erase()是STL提供的容器中比较常用的方法之一,它的功能是删除容器中的某些元素,其中它的函数原型如下: 1.有两个参数,且参数类型都是size_t型: string& erase ( s ...

  3. neo4j---删除关系和节点

    本文转载自:https://blog.csdn.net/chenjf0221/article/details/70238695 删除节点和节点关系 MATCH (a:key)-[r:KEY_WORD] ...

  4. 《Java并发编程实战》笔记-取消与关闭

    1,中断是实现取消的最合理方式.2,对中断操作的正确理解是:它并不会真正地中断一个正在运行的线程,而只是发出中断请求,然后由线程在下一个合适的时刻中断自己.3,区分任务和线程对中断的反应是很重要的4, ...

  5. 峰Redis学习(7)Redis 之Keys 通用操作

    keys * 显示所有key   查找所有以s开头的key 用s*  *代表任意字符 127.0.0.1:6379> keys s* 1) "set3" 2) "s ...

  6. redis安装,修改配置文件,多实例部署 redis-server

    redis 安装 解压: [root@Aliyun software]# tar -xvf redis-3.2.11.tar.gz 进入redis根目录: [root@Aliyun software] ...

  7. 学习笔记之Git / Gitflow / TortoiseGit

    Git - Wikipedia https://en.wikipedia.org/wiki/Git Git (/ɡɪt/) is a version control system for tracki ...

  8. SEO优化之“不要轻易使用泛解析”

    原文地址:http://www.chinaz.com/web/2007/0505/8077.shtml 半夜三更的突然想起这个老想提出或者大家都知道的问题! 先续在这里,之后给予全面补充! 什么是泛解 ...

  9. OpenStack单节点网络设置

    一.上传镜像文件 1.上传镜像 2.检索镜像 二.创建网络 1.创建内部网络 2.创建外部网络 3.创建内部网络子网 设置DHCP分配地址池,点击已创建 4.创建外部网络子网 注意:外部网络与仅主机( ...

  10. [UE4]时序问题

    时序问题 有依赖关系的两段代码,执行时间不确定,所引起的问题. 举例 1.Shooter引用了Weapon,Weapon引用了Shooter.射击者需要持有枪,枪需要判断是否有主人(枪的持有者).在枪 ...