WEB开发网
开发学院手机开发Android 开发 Android Camera 架构介绍 阅读

Android Camera 架构介绍

 2010-03-18 16:22:00 来源:WEB开发网   
核心提示:第一部分 Camera概述Android的Camera包含取景器(viewfinder)和拍摄照片的功能,目前Android发布版的Camera程序虽然功能比较简单,Android Camera 架构介绍,但是其程序的架构分成客户端和服务器两个部分,它们建立在Android的进程间通讯Binder的结构上,liban

第一部分 Camera概述

Android的Camera包含取景器(viewfinder)和拍摄照片的功能。目前Android发布版的Camera程序虽然功能比较简单,但是其程序的架构分成客户端和服务器两个部分,它们建立在Android的进程间通讯Binder的结构上。

以开源的Android为例,Camera的代码主要在以下的目录中:

Camera的JAVA程序的路径:

packages/apps/Camera/src/com/android/camera/

其中Camera.java是主要实现的文件

frameworks/base/core/java/android/hardware/Camera.java

这个类是和JNI中定义的类是一个,有些方法通过JNI的方式调用本地代码得到,有些方法自己实现。

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调用。

第二部分 Camera的接口与架构

2.1 Camera的整体框架图Camera的各个库之间的结构可以用下图的表示:

在Camera系统的各个库中,libui.so位于核心的位置,它对上层的提供的接口主要是Camera类,类 libandroid_runtime.so通过调用Camera类提供对JAVA的接口,并且实现了android.hardware.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/相对应的。

1 2 3 4 5 6  下一页

Tags:Android Camera 架构

编辑录入:coldstar [复制链接] [打 印]
赞助商链接