- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
androidCamera框架分析
Android的Camera系统分析
一、Camera构架分析
Android 的Camera包含取景(preview)和拍摄照片(take picture)的功能 。目前Android发布版的Camera程序 虽然功能比较简单,但是其程序的架构分成客户端和服务器两个部分,它们建立在Android的进程间通讯Binder的结构上。Android中Camera模块同样遵循Andorid的框架,如下图所示
Camera Architecture
Camera模块主要包含了libandroid_runtime.so、libui.so和libcameraservice.so等几个库文件 ,它们之间的调用关系如下所示:
在Camera模块的各个库中,libui.so位于核心的位置,它对上层的提供的接口主要是Camera类。
libcameraservice.so是Camera的server程序,它通过继承libui.so中的类实现server的功能,并且与libui.so中的另外一部分内容通过进程间通讯(即Binder机制)的方式进行通讯。
libandroid_runtime.so和libui.so两个库是公用的,其中除了Camera还有其他方面的功能。整个Camera在运行 的时候,可以大致上分成Client和Server两个部分,它们分别在两个进程中运行,它们之间使用Binder机制实现进程间通讯。这样在client 调用接口,功能则在server中实现,但是在client中调用就好像直接调用server中的功能,进程间通讯的部分对上层程序不可见。
从框架结构上来看,源码 中ICameraService.h、ICameraClient.h和ICamera.h三个类定义 了MeidaPlayer的接口和 架构,ICameraService.cpp和Camera.cpp两个文件则用于Camera架构的实现,Camera的具体功能在下层调用硬件相关的接 口来实现。
从Camera的整体结构上,类Camera是整个系统 核心,ICamera类提供了Camera主要功能的接口,在客户端方面调用;CameraService是Camera服务,它通过调用实际的Camera硬件接口来实现功能。事实上,图中红色虚线框的部分都是Camera程序的框架部分,它主要利用了Android的系统的Binder机制来完成通讯。蓝色的部分通过调用Camera硬件相关的接口完成具体的Camera服务功能,其它的部分是为上层的JAVA程序提供JNI接口。在整体结构上,左边可以视为一个客户端,右边是一个可以视为服务器,二者通过Android的 Bimder来实现进程间的通讯。
二、Camera的工作流程概述:
①.App_main process: 进程通过AndroidRuntime调用register_jni_procs向JNI注册模块的native函数 供JVM调用。
AndroidRuntime::registerNativeMethods(env, android/hardware/Camera,
camMethods, NELEM(camMethods));
其中camMethods定义如下:
static JNINativeMethod camMethods[] = {
{ native_setup,
(Ljava/lang/Object;)V,
(void*)android_hardware_Camera_native_setup },
{ native_release,
()V,
(void*)android_hardware_Camera_release },
{ setPreviewDisplay,
(Landroid/view/Surface;)V,
(void *)android_hardware_Camera_setPreviewDisplay },
{ startPreview,
()V,
(void *)android_hardware_Camera_startPreview },
{ stopPreview,
()V,
(void *)android_hardware_Camera_stopPreview },
{ previewEnabled,
()Z,
(void *)android_hardware_Camera_previewEnabled },
{ setHasPreviewCallback
您可能关注的文档
- 9627EEC1996机动车辆在发生侧碰撞时的乘员保护.doc
- 95.0恭喜,加强制度建设遏制腐败》下试卷.doc
- 9907年微生物问答题题目及参考答案.doc
- 9EYH2000型二维运动混合机验证方案.doc
- 99级医本《外科二》试卷B(附二).doc
- 9、印度的_“能源外交”及其地缘政治考量.doc
- 9急性肾小球肾炎.doc
- 9少年王勃导学案及教案.doc
- 9带电粒子在电场中的作用.doc
- 900kw光伏并网系统方案宋东先生.doc
- 新高考生物二轮复习讲练测第6讲 遗传的分子基础(检测) (原卷版).docx
- 新高考生物二轮复习讲练测第12讲 生物与环境(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第3讲 酶和ATP(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第9讲 神经调节与体液调节(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第11讲 植物生命活动的调节(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第8讲 生物的变异、育种与进化(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第5讲 细胞的分裂、分化、衰老和死亡(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第5讲 细胞的分裂、分化、衰老和死亡(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第12讲 生物与环境(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第11讲 植物生命活动的调节(检测)(原卷版).docx
文档评论(0)