camera2简介
2019-07-25 本文已影响0人
众少成多积小致巨
新相机有套路,按照一下流程打开
1、打开相机,需要获取权限(代码中获取)
![](https://img.haomeiwen.com/i18306159/c81a2199491b1996.png)
2、创建相机会话
在打开相机回调中创建
![](https://img.haomeiwen.com/i18306159/2c2850bb74359e4d.png)
创建需要指出带有surface的目标,这些目标可以接受数据
![](https://img.haomeiwen.com/i18306159/0a5b562638174990.png)
3、开启预览
创建会话成功后进行预览
![](https://img.haomeiwen.com/i18306159/ad3ff27a979872c4.png)
预览到TextureView, SurfaceView等
![](https://img.haomeiwen.com/i18306159/33c86bb21fa57ee2.png)
我这里是包括了imageReader取照片,和视频;上面注意照片和视频格式;addTarget方法,capture和setRepeatingRequest方法
4、取数据
1)会话请求参数在addTarget中包括ImagerReader的surface
2)之后imageReader的回调就会收到数据信息
5、ImageReader
创建时需要注意格式,图片采用ImageFormat.JPEG, 视频采用ImageFormat.YUV_420_888
具体为啥:图片格式是好用,视频格式时google建议,兼容比较好
![](https://img.haomeiwen.com/i18306159/36b28ebe00123961.png)
![](https://img.haomeiwen.com/i18306159/7db6168eb13ed69a.png)
回调处理时需要用过Image后进行销毁;
image的常用方法
getPlanes:获取图片或视频帧像素信息,上述图片格式时,数据一维数组,直接是图片二进制信息;视频时,上述格式YUV三维数组
getWidth:宽度
getHeight:高度
close:释放