API2之camera2流程解析一

android所有平台厂商的camera大体都是基于google camera进行二次开发封装。

google到目前为止release过两套camera架构,也就是大家熟知的camera和camera2,有个高大上的名字api1和api2,关于具体某个api这里不做详细的介绍,因为其他的博客已经足够详细。因为各大厂商现在用的几乎都是api2,除了某些模式用的api1,大多数模式还是基于api2开发的。

从论坛多多少少发现,好多人还是对camera在大体的概念上不太清楚,这里简单的讲讲,发表下个人的愚见。

大家平常看到的的相机,都是很感性的app,每个厂商的camera大体上也差不多,功能基本相近,但从外表上看camera就一个简单的app也没什么,其实camera还是很复杂的,每个厂商从事camera相关的人员,估计不下百人,平时我们开发的app不会涉及到android底层的开发,但是camera必须涉及到,这就的简单说说camera 的大体架构。

camera app层(大家肉眼看到的相机)+java framework层(包括ex和base)+native framework(C++写的,java framework好多调用native 的方法)+ hal层(熟称的底层)+driver(3A算法af对焦+ae曝光+aw温差,色调等等)+ lens(camera镜头)。

先谈谈相机启动的流程:

相机启动分为冷启动和热启动,这里只说冷启动,热启动可以看成冷启动的一部分。

从开始点击camera图标到preview(预览)稳定会经历两个过程,openCamera打开相机和startPreview启动预览,两者之间的关系是先open再start,当camera打开的回调回来以后,onCameraAvail时,在去启动预览,直到预览稳定,可以拍照。

要解bug了,先到这里。


你可能感兴趣的:(camera,android,相机)