Android Camera 架构总结

刚转行做手机,决定开个博客,用于写学习总结,因为刚入职接手的就是Camera模块,所以,处女作就写下Camera模块吧,如果有什么地方不对的,请各位大侠纠正下。

 

Camera目录结构介绍

..\packages\apps\Camera\

src/

gen/

res/

Android.mk                                                

AndroidManifest.xml

 

src/代码的存放目录;

gen/:自动生成的目录,存放着所有资源相关的信息;

res/ 资源文件的存放目录,所有原始的资源文件:图片、文字,布局文件,menu

编译时Android产生一个名为R的类,它包含了程序中所有资源的资源标识符, 可以在代码中使用它们来加载资源: R.Resource_type.Resource_name, R.drawable.button_background

res下有很多子目录,比如:

anim/ 存放一些animiations相关的XML文件;

layout/:存放着界面的布局信息,指定界面中各个控件的位置、颜色等;

values/:存放着界面布局相关的原始数据,如界面显示的字符串,指定颜色的定义等;

drawable/Bitmap文件,及将被编译成drawable resource subtypes XML文件;

xml/ 任意的可以使用Resources.getXML()实时读取的xml文件,一些configuration

      有关的xml文件需放在这里。

AndroidManifest.xml:此文件是重要的配置文件,android系统通过此文件来识别当前App具有哪些组件,以及指定当前的app的入口activity等。当前app的所有组件必须要在此文件中登记,如果没有登记在android平台上是不能被执行的。另外,所有Android application都使用这一特定名称:AndroidManifest.xml.

Android.mk:  该模块的makefile文件。

 

Android系统中, CameraVideoCamera集成在一起,都放在..\packages\apps\Camera文件夹下。

 

1.2Camera系统架构

Android Camera C/S架构,ClientService是通过Binder进行通信的,如图1.2.1

模块调用顺序如图1.2.2。其中Java层通过JNI调用C++层。


Android Camera 架构总结

 1.2.1


Android Camera 架构总结
 图1.2.2

 

camera主要类如下

<!--[if !supportLists]-->Ø  <!--[endif]-->Java

com.android.camera.Camera

com.android.camera.CameraHolder

android.hardware.Camera

 

<!--[if !supportLists]-->Ø  <!--[endif]-->C++

android_hardware_Camera.cpp   //android::JNICameraContext

android::Camera (Camera.cpp)

android:: CameraService

QualcommCameraHardware