自带root权限的框架 android网络框架对比( 二 )


6. 灵活的 3A 控制 3A(AF、AE、AWB)的控制在 Camera2 上得到了最大化的放权,应用层可以根据业务需求灵活配置 3A 流程并且实时获取 3A 状态,而 Camera1 在 3A 的控制和监控方面提供的接口则要少了很多 。例如你可以在拍照前进行 AE 操作,并且监听本这次拍照是否点亮闪光灯 。#####3)何为HAL3?为了配合Camera2 的使用,Android Hal层Camera框架也做了相对应的改动,也就是HAL3 。Camera1接口对应的是调用的HAL1框架 。
3)一些概念
关于Camera2 和Hal3,有些基本概念我们得了解下~
我们先来看下Camera2 API涉及到哪些类,下面会对各个类的使用进行讲解~~
1) Pipeline
Camera2 的 API 模型被设计成一个 Pipeline(管道),它按顺序处理每一帧的请求并返回请求结果给客户端 。
下面这张来自官方的图展示了 Pipeline 的工作流程,我们会通过一个简单的例子详细解释这张图 。
为了解释上面的示意图,假设我们想要同时拍摄两张不同尺寸的图片,并且在拍摄的过程中闪光灯必须亮起来 。整个拍摄流程如下:
1.创建一个用于从 Pipeline 获取图片的 CaptureRequest 。2.修改 CaptureRequest 的闪光灯配置,让闪光灯在拍照过程中亮起来 。3.创建两个不同尺寸的 Surface 用于接收图片数据,并且将它们添加到 CaptureRequest 中 。4.发送配置好的 CaptureRequest 到 Pipeline 中等待它返回拍照结果 。
一个新的 CaptureRequest 会被放入一个被称作 Pending Request Queue 的队列中等待被执行,当 In-Flight Capture Queue 队列空闲的时候就会从 Pending Request Queue 获取若干个待处理的 CaptureRequest,并且根据每一个 CaptureRequest 的配置进行 Capture 操作 。最后我们从不同尺寸的 Surface 中获取图片数据并且还会得到一个包含了很多与本次拍照相关的信息的 CaptureResult,流程结束 。
2 )Supported Hardware Level相机功能的强大与否和硬件息息相关,不同厂商对 Camera2 的支持程度也不同,所以 Camera2 定义了一个叫做 Supported Hardware Level 的重要概念,其作用是将不同设备上的 Camera2 根据功能的支持情况划分成多个不同级别以便开发者能够大概了解当前设备上 Camera2 的支持情况 。
截止到 Android P 为止,从低到高一共有 LEGACY、LIMITED、FULL 和 LEVEL_3 四个级别:
1. LEGACY :向后兼容的级别,处于该级别的设备意味着它只支持 Camera1 的功能,不具备任何 Camera2 高级特性 。2. LIMITED :除了支持 Camera1 的基础功能之外,还支持部分 Camera2 高级特性的级别 。3. FULL :支持所有 Camera2 的高级特性 。4. LEVEL_3 :新增更多 Camera2 高级特性,例如 YUV 数据的后处理等 。
3 )Capture相机的所有操作和参数配置最终都是服务于图像捕获,例如对焦是为了让某一个区域的图像更加清晰,调节曝光补偿是为了调节图像的亮度 。因此,在 Camera2 里面所有的相机操作和参数配置都被抽象成 Capture(捕获),所以不要简单的把 Capture 直接理解成是拍照,因为 Capture 操作可能仅仅是为了让预览画面更清晰而进行对焦而已 。如果你熟悉 Camera1,那你可能会问 setFlashMode() 在哪? setFocusMode() 在哪? takePicture() 在哪?
告诉你,它们都是通过 Capture 来实现的 。
Capture 从执行方式上又被细分为 单次模式、多次模式 和 重复模式三种,我们来一一解释下:
? 单次模式(One-shot) :指的是只执行一次的 Capture 操作,例如设置闪光灯模式、对焦模式和拍一张照片等 。多个一次性模式的 Capture 会进入队列按顺序执行 。? 多次模式(Burst) :指的是连续多次执行指定的 Capture 操作,该模式和多次执行单次模式的最大区别是连续多次 Capture 期间不允许插入其他任何 Capture 操作,例如连续拍摄 100 张照片,在拍摄这 100 张照片期间任何新的 Capture 请求都会排队等待,直到拍完 100 张照片 。多组多次模式的 Capture 会进入队列按顺序执行 。? 重复模式(Repeating) :指的是不断重复执行指定的 Capture 操作,当有其他模式的 Capture 提交时会暂停该模式,转而执行其他被模式的 Capture,当其他模式的 Capture 执行完毕后又会自动恢复继续执行该模式的 Capture,例如显示预览画面就是不断 Capture 获取每一帧画面 。该模式的 Capture 是全局唯一的,也就是新提交的重复模式 Capture 会覆盖旧的重复模式 Capture 。


以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: