Camera2 介绍

本文深入探讨Android的Camera2 API,包括CameraManager用于管理摄像头,CameraDevice作为系统摄像头接口,CaptureRequestSession处理捕获请求,CaptureRequest设置拍摄参数,以及Surface接收图像数据。文章还介绍了如何使用Camera2 API进行相机的初始化、预览请求和拍摄请求操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里介绍的是 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)

当相机被成功开启的时候会通过 CameraStateCallback.onOpened() 方法回调一个 CameraDevice 实例给你,否则的话会通过 CameraStateCallback.o

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值