新相机有套路,按照一下流程打开
1、打开相机,需要获取权限(代码中获取)

2、创建相机会话
在打开相机回调中创建

创建需要指出带有surface的目标,这些目标可以接受数据

3、开启预览
创建会话成功后进行预览

预览到TextureView, SurfaceView等

我这里是包括了imageReader取照片,和视频;上面注意照片和视频格式;addTarget方法,capture和setRepeatingRequest方法
4、取数据
1)会话请求参数在addTarget中包括ImagerReader的surface
2)之后imageReader的回调就会收到数据信息
5、ImageReader
创建时需要注意格式,图片采用ImageFormat.JPEG, 视频采用ImageFormat.YUV_420_888
具体为啥:图片格式是好用,视频格式时google建议,兼容比较好


回调处理时需要用过Image后进行销毁;
image的常用方法
getPlanes:获取图片或视频帧像素信息,上述图片格式时,数据一维数组,直接是图片二进制信息;视频时,上述格式YUV三维数组
getWidth:宽度
getHeight:高度
close:释放
网友评论