Android Camera架构浅析

2980阅读 0评论2013-01-15 kangjunping
分类:Android平台

Android Camera架构浅析

 

1Android Camera框架

Android的Camera子系统提供一个拍照和录制视频的框架。

它将Camera的上层应用与Application Framework、用户库串接起来,而正是这个用户库来与Camera的硬件层通信,从而实现操作camera硬件。

 

2Android Camera的代码结构

Android的Camera代码主要在以下的目录中:   
Camera的JAVA部分     
packages/apps/Camera/。其中Camera.java是主要实现的文件。这部分内容编译成为目标是Camera.apk    
com.android.camera这个包,几个主要的类文件如下:    
PhotoViewer:GalleryPicker.java(所有图片集)--->ImageGallery.java(某个Folder下图片列表)--->ViewImage.java(看某张具体图片)    
VideoPlayer:GalleryPicker.java(所有视频集) --->MovieView.java(看某一个视频)    
Camera:Camera.java(Camera取景及拍照)    
VideoCamera:VideoCamera.java(VideoCamera取景及摄像)

Cameraframework供上层应用调用的部分

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

这部分目标是framework.jar

Camera的JNI部分     
frameworks/base/core/jni/android_hardware_Camera.cpp    
这部分内容编译成为目标是libandroid_runtime.so。

Camera UI库部分
frameworks/base/libs/ui/camera    
这部分的内容被编译成库libcamera_client.so。

Camera服务部分
frameworks/base/camera/libcameraservice/    
这部分内容被编译成库libcameraservice.so。

Camera HAL层部分     
hardware/msm7k/libcamera    
或    
vendor/qcom/android-open/libcamera2    
为了实现一个具体功能的Camera,在HAL层需要一个硬件相关的Camera库(例如通过调用video for linux驱动程序和Jpeg编码程序实现或者直接用各个chip厂商实现的私有库来实现,比如Qualcomm实现的libcamera.so和libqcamera.so),实现CameraHardwareInterface规定的接口,来调用相关的库,驱动相关的driver,实现对camera硬件的操作。这个库将被Camera的服务库libcameraservice.so调用。

 

上一篇:Android Camera调用流程
下一篇:用 Graphviz 可视化函数调用