当前位置: 首页 > 工具软件 > CameraView > 使用案例 >

android下自定义相机com.otaliastudios.cameraview源码解析(二)

越俊艾
2023-12-01

目录

        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】两个接口,实现对照后的处理,

CameraEngine类

视频和图片的处理

是否是拍照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

Action类

BaseAction类,是引擎所有行为类的父类,包括Basemeter,BaseReset,BaseLock都是继承于这个类。主要为以下三个行为

Exposure(曝光),Focus(聚焦), WhiteBalance(白平衡),这三种操作

meter测试类

Basemeter类,下面有三个类,ExposureMeter,FocusMeter,WhiteBalanceMeter,这三个类是测试相机。

BaseReset类,下面有三个类,ExposureReset,FocusReset,WhiteBalanceReset,这三个类是测试相机。

上面的类都是在MeterAction中调用的

MeterAction,MeterResetAction类,是在Camera2Engine类中使用

Lock类

这个类也是继承于BaseAction,下面有三个类ExposureLock、FocusLock、WhiteBalanceLock,还有一个综合的类LockAction,是用来综合使用的。

Mapper映射器

这里有两个类一个是Camera1Mapper,一个是Camera2Mapper,这两个类,是用来转换自己定义的参数和相机的参数的,我考虑,可能是因为多个相机不同的参数,这时出来进行了统一。

 类似资料: