android6.0源码分析之Camera框架简介

1、架构简介

由于最近项目涉及到Camera,所以对Camera源码进行了研究,本文将分享Camera框架的基本知识。anroid6.0与5.0相比,Camera框架未曾改变,依然提供了两种API,即API1和API2,依然采用C/S的架构,而client和server两个线程间的通信依然使用IPC binder进程间通信的机制。

camera架构图如下:

android6.0源码分析之Camera框架简介_第1张图片

由图可知:在framework层中,Java框架通过JNI的方式调用Native框架,此处的Native作为Client端只给上层应用提供调用接口,而具体的业务实现则是由Server端(CameraService)来实现,Client和Server则是通过Binder的方式进行通讯。
单独分析下Camera的C/S架构,其架构图如下:
android6.0源码分析之Camera框架简介_第2张图片

2、代码结构

Camera的application部分:

packages/apps/legacycamera/src/com/android/camera/camera.java
packages/apps/legacycamera/src/com/android/camera/Util.java
packages/apps/legacycamera/src/com/android/camera/CameraHolder.java

Camera的framework部分:

frameworks/base/core/java/android/hardware/Camera.java
frameworks/base/core/jni/android_hardware_Camera.cpp
frameworks/av/camera/Camera.cpp
frameworks/av/camera/CameraBase.cpp
frameworks/av/camera/ICameraService.cpp
frameworks/av/services/camera/libcameraservice/CameraService.cpp
frameworks/av/services/camera/libcameraservice/api2/CameraDeviceClient.cpp

其中Camera.java将会被编译成framework.jar,而android_hardware_Camera.cpp将会被编译成库libandroid_runtime.so,frameworks/av/camera将会被编译成库libcamera_client.so,最后服务部分也将会编译成库libcameraservice.so。

总结:本文只是简单的介绍了android6.0的Camera子系统的架构以及它 的代码结构,至于Camera HAL 的具体架构以及代码分析,本文没有进行详细的分析,具体参考老罗的Android硬件抽象层(HAL)概要介绍和学习计划一文。

你可能感兴趣的:(android,Camera,android6)