Camera AIDL - BpCamera,AIDL
来源:互联网 发布:java和net就业前景 编辑:程序博客网 时间:2024/06/06 15:40
-
frameworks/base/core/java/android/hardware/ICamera.aidl
/** @hide */interface ICamera{ /** * Keep up-to-date with frameworks/av/include/camera/ICamera.h */ void disconnect();}
- icamera 接口 实现,BpCamera 继承 ICamera 转成BpInterface 的接口类.
frameworks/av/camera/ICamera.cpp
class BpCamera: public BpInterface<ICamera>{public: BpCamera(const sp<IBinder>& impl) : BpInterface<ICamera>(impl) { } // disconnect from camera service void disconnect() { ALOGV("disconnect"); Parcel data, reply; data.writeInterfaceToken(ICamera::getInterfaceDescriptor()); remote()->transact(DISCONNECT, data, &reply); reply.readExceptionCode(); } // pass the buffered IGraphicBufferProducer to the camera service status_t setPreviewTarget(const sp<IGraphicBufferProducer>& bufferProducer) { ALOGV("setPreviewTarget"); Parcel data, reply; data.writeInterfaceToken(ICamera::getInterfaceDescriptor()); sp<IBinder> b(bufferProducer->asBinder()); data.writeStrongBinder(b); remote()->transact(SET_PREVIEW_TARGET, data, &reply); return reply.readInt32(); } // set the preview callback flag to affect how the received frames from // preview are handled. See Camera.h for details. void setPreviewCallbackFlag(int flag) { ALOGV("setPreviewCallbackFlag(%d)", flag); Parcel data, reply; data.writeInterfaceToken(ICamera::getInterfaceDescriptor()); data.writeInt32(flag); remote()->transact(SET_PREVIEW_CALLBACK_FLAG, data, &reply); } status_t setPreviewCallbackTarget( const sp<IGraphicBufferProducer>& callbackProducer) { ALOGV("setPreviewCallbackTarget"); Parcel data, reply; data.writeInterfaceToken(ICamera::getInterfaceDescriptor()); sp<IBinder> b(callbackProducer->asBinder()); data.writeStrongBinder(b); remote()->transact(SET_PREVIEW_CALLBACK_TARGET, data, &reply); return reply.readInt32(); } // start preview mode, must call setPreviewTarget first status_t startPreview() { ALOGV("startPreview"); Parcel data, reply; data.writeInterfaceToken(ICamera::getInterfaceDescriptor()); remote()->transact(START_PREVIEW, data, &reply); return reply.readInt32(); } // start recording mode, must call setPreviewTarget first status_t startRecording() { ALOGV("startRecording"); Parcel data, reply; data.writeInterfaceToken(ICamera::getInterfaceDescriptor()); remote()->transact(START_RECORDING, data, &reply); return reply.readInt32(); } // stop preview mode void stopPreview() { ALOGV("stopPreview"); Parcel data, reply; data.writeInterfaceToken(ICamera::getInterfaceDescriptor()); remote()->transact(STOP_PREVIEW, data, &reply); } // stop recording mode void stopRecording() { ALOGV("stopRecording"); Parcel data, reply; data.writeInterfaceToken(ICamera::getInterfaceDescriptor()); remote()->transact(STOP_RECORDING, data, &reply); } void releaseRecordingFrame(const sp<IMemory>& mem) { ALOGV("releaseRecordingFrame"); Parcel data, reply; data.writeInterfaceToken(ICamera::getInterfaceDescriptor()); data.writeStrongBinder(mem->asBinder()); remote()->transact(RELEASE_RECORDING_FRAME, data, &reply); } status_t storeMetaDataInBuffers(bool enabled) { ALOGV("storeMetaDataInBuffers: %s", enabled? "true": "false"); Parcel data, reply; data.writeInterfaceToken(ICamera::getInterfaceDescriptor()); data.writeInt32(enabled); remote()->transact(STORE_META_DATA_IN_BUFFERS, data, &reply); return reply.readInt32(); } // check preview state bool previewEnabled() { ALOGV("previewEnabled"); Parcel data, reply; data.writeInterfaceToken(ICamera::getInterfaceDescriptor()); remote()->transact(PREVIEW_ENABLED, data, &reply); return reply.readInt32(); } // check recording state bool recordingEnabled() { ALOGV("recordingEnabled"); Parcel data, reply; data.writeInterfaceToken(ICamera::getInterfaceDescriptor()); remote()->transact(RECORDING_ENABLED, data, &reply); return reply.readInt32(); } // auto focus status_t autoFocus() { ALOGV("autoFocus"); Parcel data, reply; data.writeInterfaceToken(ICamera::getInterfaceDescriptor()); remote()->transact(AUTO_FOCUS, data, &reply); status_t ret = reply.readInt32(); return ret; } // cancel focus status_t cancelAutoFocus() { ALOGV("cancelAutoFocus"); Parcel data, reply; data.writeInterfaceToken(ICamera::getInterfaceDescriptor()); remote()->transact(CANCEL_AUTO_FOCUS, data, &reply); status_t ret = reply.readInt32(); return ret; } // take a picture - returns an IMemory (ref-counted mmap) status_t takePicture(int msgType) { ALOGV("takePicture: 0x%x", msgType); Parcel data, reply; data.writeInterfaceToken(ICamera::getInterfaceDescriptor()); data.writeInt32(msgType); remote()->transact(TAKE_PICTURE, data, &reply); status_t ret = reply.readInt32(); return ret; } // set preview/capture parameters - key/value pairs status_t setParameters(const String8& params) { ALOGV("setParameters"); Parcel data, reply; data.writeInterfaceToken(ICamera::getInterfaceDescriptor()); data.writeString8(params); remote()->transact(SET_PARAMETERS, data, &reply); return reply.readInt32(); } // get preview/capture parameters - key/value pairs String8 getParameters() const { ALOGV("getParameters"); Parcel data, reply; data.writeInterfaceToken(ICamera::getInterfaceDescriptor()); remote()->transact(GET_PARAMETERS, data, &reply); return reply.readString8(); } virtual status_t sendCommand(int32_t cmd, int32_t arg1, int32_t arg2) { ALOGV("sendCommand"); Parcel data, reply; data.writeInterfaceToken(ICamera::getInterfaceDescriptor()); data.writeInt32(cmd); data.writeInt32(arg1); data.writeInt32(arg2); remote()->transact(SEND_COMMAND, data, &reply); return reply.readInt32(); } virtual status_t connect(const sp<ICameraClient>& cameraClient) { Parcel data, reply; data.writeInterfaceToken(ICamera::getInterfaceDescriptor()); data.writeStrongBinder(cameraClient->asBinder()); remote()->transact(CONNECT, data, &reply); return reply.readInt32(); } virtual status_t lock() { Parcel data, reply; data.writeInterfaceToken(ICamera::getInterfaceDescriptor()); remote()->transact(LOCK, data, &reply); return reply.readInt32(); } virtual status_t unlock() { Parcel data, reply; data.writeInterfaceToken(ICamera::getInterfaceDescriptor()); remote()->transact(UNLOCK, data, &reply); return reply.readInt32(); }}
0 0
- Camera AIDL - BpCamera,AIDL
- AIDL
- aidl
- AIDL
- AIDL
- AIDL
- AIDL
- AIDL
- aidl
- aidl
- AIDL
- AIDL
- aidl
- AIDL
- AIDL
- AIDL
- aidl
- aidl
- redis这些内存消耗数据怎么看呢,主要看哪个说明内存比较大了?
- PHP正则表达式
- 初学android开发--day06
- Spring AOP动态代理原理与实现方式
- Oracle-20-is null使用&order by子句
- Camera AIDL - BpCamera,AIDL
- 领导者-追随者模型介绍
- Ubuntu12.04 root登陆方法【保证有效】
- 微信支付JSAPI开发——官方Demo的错误、自定义参数传递
- Lua和C++交互详细总结
- HDU 1114
- 算法(读书笔记):4.图
- 链式A+B
- Turtlebot学习指导第二篇_安装Turtlebot软件包,配置主从机网络