Camera服务分为Client和Server两部分,本文主要分析Client部分。
1. Camera Client介绍
主要由以下几个文件组成:
Camera.h/ Camera.cpp
ICameraClient.h/ IcameraClient.h
如图中所示,Camera.class继承自IcameraClient.class。Camera.class主要由libandroid_runtime.so中的android_hardware_Camera.cpp调用(frameworks/base/core/jni/android_hardware_Camera.cpp),也就是说Camera.h是Camera服务框架,对上层的接口。
2. ICameraClient.h分析
class ICameraClient: public IInterface
{
public:
DECLARE_META_INTERFACE(CameraClient);
virtual void notifyCallback(int32_t msgType, int32_t ext1, int32_t ext2) = 0;
virtual void dataCallback(int32_t msgType, const sp<IMemory>& data) = 0;
virtual void dataCallbackTimestamp(nsecs_t timestamp, int32_t msgType, const sp<IMemory>& data) = 0;
};
// ----------------------------------------------------------------------------
class BnCameraClient: public BnInterface<ICameraClient>
{
public:
virtual status_t onTransact( uint32_t code,
const Parcel& data,
Parcel* reply,
uint32_t flags = 0);
};
根据BnInterface