Android—Camera Framework C/S架构服务请求
在前一篇文章 Camera Client/Server的binder IPC机制 中阐述了Android进程间通信binder IPC机制基础,Android Camera基于这个基础设计了Camera Framework Client/Server架构,文中给出了其类图设计。本文从Android 4.4 版本源码入手,分析Camera App向Camera Service请求服务与返回的过程。服务请求的过程从上到下依次要经过三个大的过程:1. Camera App调用Framework Camera类Java API;2. Camera类Java API通过JNI调用JNI层的C++接口函数;3. 基于binder通信设计的Camera IPC通信过程。下面结合代码分析整个服务请求过程。 Camera应用调用Framework Camera类API 在Android Kitkat原生Camera2应用(packages/apps/Camera2/)的PhotoModule, VideoModule, WideAnglePanoramaModule类中用CameraUtil.open()方法来打开Camera。然后依次调用:CameraHolder的open()方法,AndroidCameraManagerImpl的cameraOpen()方法