目錄
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,這兩個類,是用來轉換自己定義的參數和相機的參數的,我考慮,可能是因爲多個相機不同的參數,這時出來進行了統一。