Camera Overview

    Camera作为一项近几年越来越火的领域,被广泛的应用到手机、车载、短视频、安防监控等领域,那本系列会对android camera作一个整体到细节的介绍。

    Camera本身其实是一个硬件设备,下图是每个学习android嵌入式开发都很熟悉的,整个android的系统其实是分层的,Camera作为其中的一个模块也是如此。

图片

1)可以从android 架构图,看到整个android的大体框架,大致分为了5层,最上面一层即app层,即我们日常用的手机、平板里使用的那些app。

Camera在这层对应的既是一些拍照软件,比如各种美颜相机之类的。

2)第二层是android framework层,这里的framework层是平台无关的,是用java语言来写的。可以看出一些做app开发的研发人员也会比较熟悉的一些模块,比如android的4大组件、activity、content provider,service,boardcast,还包含一些WMS、AMS等等。

3)我们知道android本身是基于linux的,而java本身是跑在虚拟机上的,所以这里会有一个android runtime这一层,也就是会有这样一层把app的行为通过IPC 调用到底层。

4)还有一些开发者是基于android开发一些基于不同平台的lib,就有了所谓的NDK开发,在这一层,开发者可以开发属于他们自己的lib,并且可以不用暴露自己的源代码,可谓是是一层安全性和隐私的保护。比如SQLite数据库,FreeType字库,还有OpenGl 3D这些lib。

5)再往下是HAL层,也就是硬件抽象层,这层是google为了保护一些驱动厂商的知识产权,我们知道linux是开源的,kernel的代码需要公开化,一些公司需要保护自己的原始代码,则把这部分从kernel剥离开来,单独放到HAL层,并且可以屏蔽一些硬件差异化的问题。

6)最底层也就是kernel层,也就是linux的内核层,另外还包含了一些phone里所有硬件的驱动。

    所以从整张图来看,camera是一个涉及从android的最上层到最底层的模块,包含app、framework、jni、native framework、HAL、kernel以及驱动。

    好了这下可以进入camera的整体部分,下面是整个camera的架构图。

图片

1)最上面的是camera app层,开发者可以自行开发,手机厂本身都会有自家的app,当然还有市场上流行的美图秀秀当然也属于这一层。

2)这些app都是基于android的sdk开发的,而对于camera的使用也是要遵循android定义的规则来,这点是跟其他app模块开发一样的,而android开放的接口也就是framework这一层。可以从上图看到有api1和api2二套版本,现在api1已经不用了,用的都是api2的版本。

3)再往下是java虚拟机和jni这一层,可以看得到在使用最新的api2时,android这边的IPC机制(也就是aidi)已经封装了framework到native framework的通信过程。

4)native Camera FW则是基于C++的camera framework层,一些c++的lib或者native的应用可以直接通过这一层去访问camera。

5)HAL则是平台厂商基于硬件去自定义,不同平台的实现也不是相同,主流的也就是Qualcomm,MTK,海思,展讯和三星,实现也是不同的。

6)kernel则是包含具体的camera驱动,这部分使得camera可以正常工作。

这边就是整个camera的大概介绍,后面会从上到下逐步介绍整个camera的模块。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值