Android Camera 架构介绍
2010-03-18 16:22:00 来源:WEB开发网第一部分 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/相对应的。
- ››Android 当修改一些代码时,使用什么编译命令可以最...
- ››Android 如何添加一个apk使模拟器和真机都编译进去...
- ››Android 修改Camera拍照的默认保存路径
- ››Android 如何修改默认输入法
- ››android开发中finish()和System.exit(0)的区别
- ››Android手势识别简单封装类
- ››android中查看项目数字证书的两种方法
- ››Android中获取IMEI码的办法
- ››android 相机报错 setParameters failed
- ››Android重启运用程序的代码
- ››Android为ListView的Item设置不同的布局
- ››android bitmap与base64字符串的互相转换
更多精彩
赞助商链接