Chinaunix首页 | 论坛 | 博客
  • 博客访问: 281045
  • 博文数量: 68
  • 博客积分: 1121
  • 博客等级: 少尉
  • 技术积分: 634
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-01 09:43
文章分类
文章存档

2014年(1)

2013年(8)

2012年(37)

2011年(22)

分类: Android平台

2013-01-15 14:19:01

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

 

阅读(2880) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~