赞
踩
Camera2中比较重要的类及方法
getCameraIdList() :
返回当前设备中可用的相机列表
getCameraCharacteristics(String cameraId) :
根据摄像头id返回该摄像头的相关信息
openCamera(String cameraId, final CameraDevice.StateCallback callback,Handler handler):
打开指定cameraId的相机。参数callback为相机打开时的回调,参数handler为callback被调用时所在的线程
createCaptureRequest(int templateType):
创建一个新的Capture请求。参数templateType代表了请求类型,请求类型一共分为六种,分别为:
createCaptureSession(List outputs,CameraCaptureSession.StateCallback callback,Handler handler):
创建CaptureSession会话。第一个参数 outputs 是一个 List 数组,相机会把捕捉到的图片数据传递给该参数中的 Surface 。第二个参数 StateCallback 是创建会话的状态回调。第三个参数描述了 StateCallback 被调用时所在的线程
类似于Camera1中的CamerInfo。通过CameraManager的getCameraCharacteristics(String cameraId)方法来获取
get(Key key) :
通过制定的key获取相应的相机参数。
常用的key值有:
拍照、预览等操作都需要先传入CaptureRequest参数,具体的参数控制也是通过CameraRequest的成员变量来设置
addTarget(Surface outputTarget):
给此次请求添加一个Surface对象作为图像的输出目标
set(Key key, T value):
设置指定的参数值。
当需要拍照、预览等功能时,需要先创建该类的实例,然后通过该实例里的方法进行控制(例如:拍照 capture())
setRepeatingRequest(CaptureRequest request,
CaptureCallback listener, Handler handler):
根据传入的 CaptureRequest 对象开始一个无限循环的捕捉图像的请求。第二个参数 listener 为捕捉图像的回调,在回调中可以拿到捕捉到的图像信息
capture( CaptureRequest request,
CaptureCallback listener, Handler handler):
拍照。第二个参数为拍照的结果回调
得到一个ImageReader对象的方法为newInstance(int width, int height, int format, int maxImages)。前两个参数是保存图片的宽高,第三个参数为保存图片的格式,第四个参数代表用户可以同时访问到的最大图片数量
注意:
这个参数应该根据具体需业务需求尽可能的小,因为它的数值越大意味着需要消耗的内存就越高
acquireNextImage():
得到ImageReader图像队列中的下一张图片,返回值是一个Image对象
getPlanes():
获取该图像的像素平面数组。这个数组的大小跟图片的格式有关,如 JPEG格式数组大小为1
getBuffer():
获取包含帧数据的ByteBuffer。通过这个ByteBuffer我们就可以把图片保存下来
参考:
https://www.jianshu.com/p/0ea5e201260f
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。