Android Camera分析(6)

2020-12-22 09:00

完整讲解了android中camera的工作机制,代码分析。对了解整个android工作流程会有很大的帮助。

从Camera的整体结构上,类Camera是整个系统核心,ICamera类提供了Camera主要功能的接口,

在客户端方面调用,CameraService是Camera服务,它通过调用实际的Camera硬件接口来实现功能。事实上,图中红色虚线框的部分都是Camera程序的框架部分,它主要利用了Android的系统的Binder机制来完成通讯。蓝色的部分通过调用Camera硬件相关的接口完成具体的Camera服务功能,其它的部分是为上层的JAVA程序提供JNI接口。在整体结构上,左边可以视为一个客户端,右边是一个可以视为服务器,二者通过Android的Bimder来实现进程间的通讯。2.2头文件ICameraClient.h

ICameraClient.h用于描述一个Camera客户端的接口,定义如下所示:classICameraClient:publicIInterface{public:

DECLARE_META_INTERFACE(CameraClient);virtualvoidshutterCallback()=0;

virtualvoidrawCallback(constsp<IMemory>&picture)=0;virtualvoidjpegCallback(constsp<IMemory>&picture)=0;virtualvoidframeCallback(constsp<IMemory>&frame)=0;virtualvoiderrorCallback(status_terror)=0;virtualvoidautoFocusCallback(boolfocused)=0;

};

classBnCameraClient:publicBnInterface<ICameraClient>{public:

virtualstatus_tonTransact(uint32_tcode,

constParcel&data,Parcel*reply,uint32_tflags=0);

};

在定义中,ICameraClient类继承IInterface,并定义了一个Camera客户端的接口,BnCameraClient继

承了BnInterface<ICameraClient>,这是为基于Android的基础类Binder机制实现在进程通讯而构建的。根据BnInterface类模版的定义BnInterface<ICameraClient>类相当于双继承了BnInterface和ICameraClient。

IcameraClient这个类的主要接口是几个回调函数shutterCallback、rawCallback和jpegCallback等,

它们在相应动作发生的时候被调用。作为Camera的“客户端”,需要自己实现几个回调函数,让服务器程序去“间接地”调用它们。2.3头文件Camera.h

Camera.h是Camera对外的接口头文件,它被实现CameraJNI的文件

android_hardware_Camera.cpp所调用。Camera.h最主要是定义了一个Camera类:classCamera:publicBnCameraClient,publicIBinder::DeathRecipient{public:


Android Camera分析(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:3G网络优化难点及解决方案译文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: