相机从app启动流程
一、流程框架图
二、具体流程分析
1、得到cameralist和对应的静态信息
目录如下:
重点代码分析:
启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的准备工作。
2、打开相机
重点代码分析:
通过openCamera启动相机
其中mStateCallback如下
private final CameraDevice.StateCallback mStateCallback = new CameraDevice.StateCallback() {@Overridepublic void onOpened(CameraDevice cameraDevice) {int id = Integer.parseInt(cameraDevice.getId());Log.d(TAG, "onOpened " + id);mCameraOpenCloseLock.release();if (mPaused) {return;}mCameraDevice[id] = cameraDevice;mCameraOpened[id] = true;if (isBackCamera() && getCameraMode() == DUAL_MODE && id == BAYER_ID) {Message msg = mCameraHandler.obtainMessage(OPEN_CAMERA, MONO_ID, 0);mCameraHandler.sendMessage(msg);} else {mCamerasOpened = true;mActivity.runOnUiThread(new Runnable() {@Overridepublic void run() {mUI.onCameraOpened(mCurrentSceneMode.getCurrentId());}});createSessions();}}@Overridepublic void onDisconnected(CameraDevice cameraDevice) {int id = Integer.parseInt(cameraDevice.getId());