77范文网 - 专业文章范例文档资料分享平台

Android Camera分析(13)

来源:网络收集 时间:2020-12-22 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

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

3.4Camera服务libcameraservice.so

frameworks/base/camera/libcameraservice/用于实现一个Camera的服务,这个服务是继承

ICameraService的具体实现。

在这里的Android.mk文件中,使用宏USE_CAMERA_STUB决定是否使用真的Camera,如果宏为真,则

使用CameraHardwareStub.cpp和FakeCamera.cpp构造一个假的Camera,如果为假则使用CameraService.cpp构造一个实际上的Camera服务。

CameraService.cpp是继承BnCameraService的实现,在这个类的内部又定义了类Client,

CameraService::Client继承了BnCamera。在运作的过程中CameraService::connect()函数用于得到一个CameraService::Client,在使用过程中,主要是通过调用这个类的接口来实现完成Camera的功能,由于CameraService::Client本身继承了BnCamera类,而BnCamera类是继承了ICamera,因此这个类是可以被当成ICamera来使用的。

CameraService和CameraService::Client两个类的结果如下所示:

classCameraService:publicBnCameraService{

classClient:publicBnCamera{};wp<Client>

}

在CameraService中的一个静态函数instantiate()用于初始化一个Camera服务,寒暑如下所示:

voidCameraService::instantiate(){

defaultServiceManager()->addService(String16("media.camera"),newCameraService());

}

事实上,CameraService::instantiate()这个函数注册了一个名称为"media.camera"的服务,这个

服务和Camera.cpp中调用的名称相对应。

Camera整个运作机制是:在Camera.cpp中可以调用ICameraService的接口,这时实际上调用的是

BpCameraService,而BpCameraService又通过Binder机制和BnCameraService实现两个进程的通讯。而BpCameraService的实现就是这里的CameraService。因此,Camera.cpp虽然是在另外一个进程中运行,但是调用ICameraService的接口就像直接调用一样,从connect()中可以得到一个ICamera类型的指针,真个指针的实现实际上是CameraService::Client。

而这些Camera功能的具体实现,就是CameraService::Client所实现的了,其构造函数如下所示:

mClient;

CameraService::Client::Client(constsp<CameraService>&cameraService,

constsp<ICameraClient>&cameraClient):

mCameraService(cameraService),mCameraClient(cameraClient),mHardware(0)

{

mHardware=openCameraHardware();mHasFrameCallback=false;

}

构造函数中,调用openCameraHardware()得到一个CameraHardwareInterface类型的指针,并作为

其成员mHardware。以后对实际的Camera的操作都通过对这个指针进行。这是一个简单的直接调用关系。

事实上,真正的Camera功能己通过实现CameraHardwareInterface类来完成。在这个库当中

CameraHardwareStub.h和CameraHardwareStub.cpp两个文件定义了一个桩模块的接口,在没有Camera硬件的情况下使用,例如在仿真器的情况下使用的文件就是CameraHardwareStub.cpp和它依赖的文件FakeCamera.cpp。

CameraHardwareStub类的结构如下所示:

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库Android Camera分析(13)在线全文阅读。

Android Camera分析(13).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/1169296.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: