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