一、Camera2简介
Camera2是Google在Android 5.0后推出的一个全新的相机API,Camera2和Camera没有继承关系,是完全重新设计的,且Camera2支持的功能也更加丰富,但是提供了更丰富的功能的同时也增加了使用的难度。Google的官方Demo:https://github.com/googlesamples/android-Camera2Basic
二、Camera2 VS Camera
以下分别是使用Camera2和Camera打开相机进行预览并获取预览数据的流程图。
可以看到,和Camera相比,Camera2的调用明显复杂得多,但同时也提供了更强大的功能:
- 支持在非UI线程获取预览数据
- 可以获取更多的预览帧
- 对相机的控制更加完备
- 支持更多格式的预览数据
- 支持高速连拍
但是具体能否使用还要看设备的厂商有无实现。
三、如何使用Camera2
- ####获取预览数据
一般情况下,大多设备其实只支持ImageFormat.YUV_420_888
和ImageFormat.JPEG
格式的预览数据,而ImageFormat.JPEG
是压缩格式,一般适用于拍照的场景,而不适合直接用于算法检测,因此我们一般取ImageFormat.YUV_420_888
作为我们获取预览数据的格式,对于YUV不太了解的同学可以戳这里。
mImageReader = ImageReader.newInstance(mPreviewSize.getWidth(), mPreviewSize.getHeight(),
ImageFormat.YUV_420_888, 2);
mImageReader.setOnImageAvailableListener(