WEB开发网
开发学院手机开发Android 开发 Android Camera 架构介绍 阅读

Android Camera 架构介绍

 2010-03-18 16:22:00 来源:WEB开发网   
核心提示:的实现,在这个类的内部又定义了类Client,Android Camera 架构介绍(10),CameraService::Client继承了BnCamera,在运作的过程中 CameraService::connect()函数用于得到一个CameraService::Client,并作为其成员mHardware,以
的实现,在这个类的内部又定义了类Client,CameraService::Client继承了BnCamera。在运作的过程中 CameraService::connect()函数用于得到一个CameraService::Client,在使用过程中,主要是通过调用这个类的接口来实现完成Camera的功能,由于CameraService::Client本身继承了BnCamera类,而BnCamera类是继承了 ICamera,因此这个类是可以被当成ICamera来使用的。

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

class CameraService : public BnCameraService

{

class Client : public BnCamera {};

wp mClient;

}

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

void CameraService::instantiate() {

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

}

事实上,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所实现的了,其构造函数如下所示:

CameraService::Client::Client(const sp& cameraService,

const sp& cameraClient) :

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

{

mHardware = openCameraHardware();

mHasFrameCallback = false;

}

构造函数中,调用openCameraHardware()得到一个 CameraHardwareInterface类型的指针,并作为其成员mHardware。以后对实际的Camera的操作都通过对这个指针进行。这是一个简单的直接调用关系。

上一页  5 6 7 8 9 10 11  下一页

Tags:Android Camera 架构

编辑录入:coldstar [复制链接] [打 印]
赞助商链接