1 Android 的 Camera 架构介绍 第一部分 Camera 概述 Android 的 Camera 包含取景器( view finder) 和拍摄照片的功能。目前Android 发布版的Camera 程序虽然功能比较简单,但是其程序的架构分成客户端和服务器两个部分,它们建立在 Android 的进程间通讯Binder 的结构上。 以开源的Android 为例,Camera 的代码主要在以下的目录中: Camera 的 JAVA 程序的路径: packages/apps/Camera/src/com/android/camera/ 在其中Camera.java 是主要实现的文件 Camera 的 JAVA 本地调用部分(JNI): frameworks/base/core/jni/android_hardware_Camera.cpp 这部分内容编译成为目标是libandroid_runtime.so。 主要的头文件在以下的目录中: frameworks/base/include/ui/ Camera 底层库在以下的目录中: frameworks/base/libs/ui/ 这部分的内容被编译成库libui.so。 Camera 服务部分: frameworks/base/camera/libcameraservice/ 这部分内容被编译成库libcameraservice.so。 为了实现一个具体功能的Camera, 在最底层还需要一个硬件相关的Camer 库 (例如通过调用video for linux 驱动程序和Jpeg 编码程序实现)。这个库将被Camera 的服务库libcameraservice.so调用。 2 第二部分 Camera 的接口与架构 2.1 Camera 的整体框架图 Camera 的各个库之间的结构可以用下图的表示: libui.solibcameraservice.soCamera硬件库libandroid_runtime.soJAVA程序Camera.java进程间通讯JAVA调用关系调用Camera客户端 在 Camera系统的各个库中,libui.so位于核心的位置,它对上层的提供的接口主要是Camera类 , 类 libandroid_runtime.so 通 过 调用Camera类 提 供 对 JAVA的 接 口 , 并 且 实 现 了android.hardw are.camera类。 libcameraservice.so是 Camera的服务器程序,它通过继承libui.so的类实现服务器的功能,并且与libui.so中的另外一部分内容则通过进程间通讯(即Binder机制)的方式进行通讯。 libandroid_runtime.so和 libui.so两个库是公用的,其中除了Camera还有其他方面的功能。 Camera 部 分 的 头 文 件 在frameworks/base/include/ui/ 目 录 中 , 这 个 目 录 是 和libmedia.so 库源文件的目录frameworks/base/libs/ui/相对应的。 Camera 主要的头文件有以下几个: ICameraClient.h Camera.h ICamera.h ICameraServ...