android6.0源码分析之Camera API1.0框架简介
Posted 古冥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android6.0源码分析之Camera API1.0框架简介相关的知识,希望对你有一定的参考价值。
1、架构简介
由于最近项目涉及到Camera,所以对Camera源码进行了研究,本文将分享Camera框架的基本知识。anroid6.0与5.0相比,Camera框架未曾改变,依然提供了两种API,即API1和API2,依然采用C/S的架构,而client和server两个线程间的通信依然使用IPC binder进程间通信的机制。
camera架构图如下:
由图可知:在framework层中,Java框架通过JNI的方式调用Native框架,此处的Native作为Client端只给上层应用提供调用接口,而具体的业务实现则是由Server端(CameraService)来实现,Client和Server则是通过Binder的方式进行通讯。
单独分析下Camera的C/S架构,其架构图如下:
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)概要介绍和学习计划一文。
以上是关于android6.0源码分析之Camera API1.0框架简介的主要内容,如果未能解决你的问题,请参考以下文章
android6.0源码分析之Camera API2.0下的Capture流程分析
android6.0源码分析之Camera API2.0下的Capture流程分析