Camera2 介绍

这里介绍的是 CameraManager 、 CameraDevice 、 CaptureRequestSession 、CaptureRequest,先来看一下他们的关系:

在这里插入图片描述

1. CameraManager

CameraManager主要用于管理系统摄像头。

  • Context.getSystemService(Context.CAMERA_SERVICE) 来完成初始化,
  • 可以 getCameraIdList 获取所有可用和Camera设备的cameraId(唯一标识)
  • 可以通过这个Id getCameraCharacteristics 得到Camera设备的详细数据,由 CameraCharacteristics类 存储
  • 可以通过Cameraid 启动某个设备 openCamera
CameraManager manager = (CameraManager)context.getSystemService(Context.CAMERA_SERVICE);

public String[] getCameraIdList()

public CameraCharacteristics getCameraCharacteristics(@NonNull String cameraId)

public void openCamera(@NonNull String cameraId,
            @NonNull final CameraDevice.StateCallback callback, @Nullable Handler handler)
2. CameraDevice

CameraDevice直接与系统摄像头相联系,相当一个抽象摄像头。

  • 通过CameraDevice.StateCallback监听摄像头的状态(主要包括onOpened、onClosed、onDisconnected、onError四种状态)
  • 创建 CaptureRequestSession 对象,来创建会话。
  • 创建 CaptureRequest 对象 ,来创建捕获请求。
// 创建 CaptureRequestSession 对象
// 因为是异步操作,通过 CameraDevice.StateCallback 的 onOpened 方法返回。
 public abstract void createCaptureSession(@NonNull List<Surface> outputs,
            @NonNull CameraCaptureSession.StateCallback callback, @Nullable Handler handler)
            

public abstract CaptureRequest.Builder createCaptureRequest(@RequestTemplate int templateType)

当相机被成功开启的时候会

  • 8
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值