1.CameraDeviceImpl分析
CameraDeviceImpl继承于CameraDevice,CameraDevice接口如下 :
1.1 获取CameraID,此ID由openCamera时传入
public abstract String getId();
1.2 创建会话CameraCaptureSession
public abstract void createCaptureSession(@NonNull List<Surface> outputs, @NonNull CameraCaptureSession.StateCallback callback,@Nullable Handler handler)
1.3 创建会话CameraCaptureSession
public abstract void createCaptureSessionByOutputConfigurations( List<OutputConfiguration> outputConfigurations, CameraCaptureSession.StateCallback callback, @Nullable Handler handler)
1.4 创建会话CameraCaptureSession
public abstract void createReprocessableCaptureSession(@NonNull InputConfiguration inputConfig,@NonNull List<Surface> outputs, @NonNull CameraCaptureSession.StateCallback callback,@Nullable Handler handler);
public abstract void createReprocessableCaptureSessionByConfigurations( @NonNull InputConfiguration inputConfig, @NonNull List<OutputConfiguration> outputs,@NonNull CameraCaptureSession.StateCallback callback, @Nullable Handler handler);
public abstract void createConstrainedHighSpeedCaptureSession(@NonNull List<Surface> outputs,@NonNull CameraCaptureSession.StateCallback callback,@Nullable Handler handler);
public void createCaptureSession(SessionConfiguration config);
1.5 捕获请求
public abstract CaptureRequest.Builder createCaptureRequest(@RequestTemplate int templateType);
public CaptureRequest.Builder createCaptureRequest(@RequestTemplate int templateType,Set<String> physicalCameraIdSet);
public abstract CaptureRequest.Builder createReprocessCaptureRequest(@NonNull TotalCaptureResult inputResult)
1.6 关闭
public abstract void close();
1.7 检查配置是否支持
public boolean isSessionConfigurationSupported(@NonNull SessionConfiguration sessionConfig)
1.8 回调接口
public static abstract class StateCallback{
public abstract void onOpened(@NonNull CameraDevice camera); // Must implement
public void onClosed(@NonNull CameraDevice camera) {
// Default empty implementation
}
public abstract void onDisconnected(@NonNull CameraDevice camera);
public abstract void onError(@NonNull CameraDevice camera, @ErrorCode int error); // Must implement
}
2.ICameraDeviceUserWrapper分析
ICameraDeviceUserWrapper持有打开openCamera时创建的ICameraDeviceUser主要功能:于CameraService 通讯(提交请求、取消请求等),检测服务是否挂掉
2.1 断开于服务链接
public void disconnect();
2.2 提交请求
public SubmitInfo submitRequest(CaptureRequest request, boolean streaming)
2.3 提交请求列表
public SubmitInfo submitRequestList(CaptureRequest[] requestList, boolean streaming)
2.4 取消请求
public long cancelRequest(int requestId);
2.5 开始配置
public void beginConfigure();
2.6 结束配置
public void endConfigure(int operatingMode, CameraMetadataNative sessionParams)
2.7 删除流
public void deleteStream(int streamId);
2.8 创建流
public int createStream(OutputConfiguration outputConfiguration);
2.9 创建输入流
public int createInputStream(int width, int height, int format);
2.10 获取Surface
public Surface getInputSurface();
2.11 创建CameraMetadataNative
public CameraMetadataNative createDefaultRequest(int templateId);
2.12 获取CameraMetadataNative
public CameraMetadataNative getCameraInfo();
2.13 等待空闲
public void waitUntilIdle();
2.14 判断配置是否支持
public boolean isSessionConfigurationSupported(SessionConfiguration sessionConfig);
2.15 关闭流
public long flush();
2.16 准备流
public void prepare(int streamId);
2.17
public void tearDown(int streamId);
2.18 准备流
public void prepare2(int maxCount, int streamId);
2.19 更新输出配置
public void updateOutputConfiguration(int streamId, OutputConfiguration config);
2.20 完成输出配置
public void finalizeOutputConfigurations(int streamId, OutputConfiguration deferredConfig)