android下自定义相机com.otaliastudios.cameraview源码解析(一)
android下自定义相机com.otaliastudios.cameraview源码解析(二)
这里要分析是Engine类,下面一共有下面几个包action、lock、mappers、meter、offset五个包。分别实现不同的功能。
cameraEngine是抽象类,下面有两个实现类,分别是Camera1Engine和Camera2Engine,分别代表了camera1和camera2两个相机的实现,
CameraEngine类,定义了Callback函数,目前还不知道用来干什么的,应该拍照后的回调。
继承了【PictureRecorder.PictureResultListener】和【VideoRecorder.VideoResultListener】两个接口,实现对照后的处理,
是否是拍照 | isTakingPicture |
拍照 | takePicture |
拍快照 | takePictureSnapshot |
图片处理结果 | onPictureResult |
是否是视频 | isTakingVideo |
拍视频 | takeVideo |
拍视频快照 | takeVideoSnapshot |
停止视频 | stopVideo |
视频处理结果 | onVideoResult |
得到图片尺寸 | getPictureSize |
得到视频尺寸 | getVideoSize |
得到流 | getPreviewStreamSize |
得到前支架尺寸 | getPreviewSurfaceSize |
统计尺寸 | computeCaptureSize |
统计前流尺寸 | computePreviewStreamSize |
开始 | start |
停止 | stop |
重新开始 | restart |
释放 | destroy |
开始绑定 | startBind |
停止绑定 | stopBind |
重新绑定 | restartBind |
开始预览 | onStartPreview |
停止预览 | onStopPreview |
重新预览 | restartPreview |
开始引擎onStartEngine | |
停止引擎onStopEngine |
是否开始绑定 | canStartBind |
是否开始引擎 | canStartEngine |
是否停止预览 | canStartPreview |
得到绑定状态 | getBindState |
得到预览状态 | getPreviewState |
得到引擎状态 | getEngineState |
需要停止绑定 | needsStopBind |
需要停止引擎 | needsStopEngine |
需要停止预览 | needsStopPreview |
BaseAction类,是引擎所有行为类的父类,包括Basemeter,BaseReset,BaseLock都是继承于这个类。主要为以下三个行为
Exposure(曝光),Focus(聚焦), WhiteBalance(白平衡),这三种操作
Basemeter类,下面有三个类,ExposureMeter,FocusMeter,WhiteBalanceMeter,这三个类是测试相机。
BaseReset类,下面有三个类,ExposureReset,FocusReset,WhiteBalanceReset,这三个类是测试相机。
上面的类都是在MeterAction中调用的
MeterAction,MeterResetAction类,是在Camera2Engine类中使用
这个类也是继承于BaseAction,下面有三个类ExposureLock、FocusLock、WhiteBalanceLock,还有一个综合的类LockAction,是用来综合使用的。
这里有两个类一个是Camera1Mapper,一个是Camera2Mapper,这两个类,是用来转换自己定义的参数和相机的参数的,我考虑,可能是因为多个相机不同的参数,这时出来进行了统一。