Camera1.0和Camear2.0的区别
内容 | Camera1.0 | Camera2.0 | 是否相同 |
---|---|---|---|
权限 | android.permission.CAMERA | android.permission.CAMERA | 是 |
布局 | SurfaceView | TextureView | 否 |
实现接口 | SurfaceHolder.Callback 1.surfaceCreated 2.surfaceChanged 3.surfaceDestroyed | SurfaceTextureListener 1.onSurfaceTextureAvailable 2.onSurfaceTextureSizeChanged 3.onSurfaceTextureDestroyed 4.onSurfaceTextureUpdated | 否 |
Camera参数(设置,查看) | Camera.Parameters Camera.Size | 查看:CameraCharacteristics中getCameraCharacteristics(CameraID)设置:CaptureRequest.Builder中void set(Key key, T value)举例:曝光:CaptureReqBuilder.set(CaptureRequest.CONTROL_AE_EXPOSURE_COMPENSATION, 2); | 否 |
打开摄像头 | surfaceCreated中Camera.open(CameraID) | onSurfaceTextureAvailable中CameraManager.openCamera(CameraId,CameraDevice.StateCallback,Handler) | 否 |
开始预览 | Camera.startPreview() | CaptureReqBuilder = camera.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);CaptureReqBuilder.addTarget(Surface);Camera.createCaptureSession(Arrays.asList(surface),CaptureSessionStateCallback, Handler); | 否 |
设置预览方向 | Camera.setDisplayOrientation(degrees) | 并没有直接设置预览方向的方法,但是TextureView本身是一个View,支持旋转、平移、缩放,再重写onMeasure方法 | 否 |
图像原始数据byte[]实时获取 | Camera.PreviewCallback中onPreviewFrame(byte[],Camera) | 1.onSurfaceTextureUpdated中使用TextureView的getBitmap()方法,但是这里获取到的是Bitmap对象,而我需要的是原始byte[],所以这个方法不适用。2.设置ImageReader.setOnImageAvailableListener监听,在onImageAvailable(ImageReader)通过回调传递的ImageReader.acquireLatestImage()方法获取到一个Image对象(别忘了close(),否则画面会卡住,停止刷新),然后Image.getPlanes()[0].getBuffer()返回了一个ByteBuffer对象,最后new byte[buffer.remaining()]即可得到原始图像的byte[]。别忘了CaptureReqBuilder.addTarget(ImageReader.getSurface()); 否则看不到效果 | 否 |
Camera图像预览尺寸大小设置 | Camera.Parameters.setPreviewSize(width, height) | TextureView. getSurfaceTexture()拿到SurfaceTexture()对象,再通过setDefaultBufferSize(width, height)进行设置。 | 否 |
将来获取到的图片的大小设置 | Camera.Parameters.setPictureSize(width, height); | ImageReader.newInstance(width, height,ImageFormat.YUV_420_888, MAX_IMAGES); | 否 |
将来获取到的图片的格式设置 | Camera.Parameters..setPictureFormat(ImageFormat.JPEG); |
ImageReader.newInstance(width, height,ImageFormat.YUV_420_888, MAX_IMAGES);
来源: http://blog.csdn.net/qq_21898059/article/details/52047598
|
1. Camera2是通过系统服务拿到CameraManager来管理camera设备对象,camera的一次预览、拍照都是向请求会话(CaptureSession.StateCallback,摄像头打开时由相机设备的输出surface组成)发送一次请求(CaptureRequest.Builder)。需要在它的回调onConfigured中进行处理,例如预览,如果不在此方法中写上CameraCaptureSession.setRepeatingRequest(mCaptureReqBuilder.build(), null, mHandler);那么预览就不会成功。
2. 此外,在创建会话,设置ImageReader监听,都需要传递一个Handler对象,这个Handler对象决定着这些会话、监听的回调方法会被在哪个线程中调用,如果传递的是NULL,那么回调会调用在当前线程。
闪关灯的控制方式
API并没有详细说明。
我测试了Parameters.FLASH_MODE_TORCH 和FLASH_MODE_ON:
Parameters.FLASH_MODE_TORCH : 闪光灯常开
Parameters.FLASH_MODE_ON : 拍照时闪光灯才打开
但是根据API文档的说明,需要注意的问题大概如下:
1. 只有当android.flash.info.available = = true 时这种控制闪光灯才有效。
2. 会被自动曝光模式(CONTROL_AE_MODE)中的设置给覆盖。
我测试了几项:
a) CONTROL_AE_MODE设置为OFF、ON_AUTO_FLASH、ON_AUTO_FLASH_REDEYE、ON_ALWAYS_FLASH时,上述闪光灯控制方式不能打开。
b) CONTROL_AE_MODE设置为ON或者不设置时,上述闪光灯控制方式能打开。
内容 | Camera1.0 | Camera2.0 | 是否相同 |
---|---|---|---|
权限 | android.permission.CAMERA | android.permission.CAMERA | 是 |
布局 | SurfaceView | TextureView | 否 |
实现接口 | SurfaceHolder.Callback 1.surfaceCreated 2.surfaceChanged 3.surfaceDestroyed | SurfaceTextureListener 1.onSurfaceTextureAvailable 2.onSurfaceTextureSizeChanged 3.onSurfaceTextureDestroyed 4.onSurfaceTextureUpdated | 否 |
Camera参数(设置,查看) | Camera.Parameters Camera.Size | 查看:CameraCharacteristics中getCameraCharacteristics(CameraID)设置:CaptureRequest.Builder中void set(Key key, T value)举例:曝光:CaptureReqBuilder.set(CaptureRequest.CONTROL_AE_EXPOSURE_COMPENSATION, 2); | 否 |
打开摄像头 | surfaceCreated中Camera.open(CameraID) | onSurfaceTextureAvailable中CameraManager.openCamera(CameraId,CameraDevice.StateCallback,Handler) | 否 |
开始预览 | Camera.startPreview() | CaptureReqBuilder = camera.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);CaptureReqBuilder.addTarget(Surface);Camera.createCaptureSession(Arrays.asList(surface),CaptureSessionStateCallback, Handler); | 否 |
设置预览方向 | Camera.setDisplayOrientation(degrees) | 并没有直接设置预览方向的方法,但是TextureView本身是一个View,支持旋转、平移、缩放,再重写onMeasure方法 | 否 |
图像原始数据byte[]实时获取 | Camera.PreviewCallback中onPreviewFrame(byte[],Camera) | 1.onSurfaceTextureUpdated中使用TextureView的getBitmap()方法,但是这里获取到的是Bitmap对象,而我需要的是原始byte[],所以这个方法不适用。2.设置ImageReader.setOnImageAvailableListener监听,在onImageAvailable(ImageReader)通过回调传递的ImageReader.acquireLatestImage()方法获取到一个Image对象(别忘了close(),否则画面会卡住,停止刷新),然后Image.getPlanes()[0].getBuffer()返回了一个ByteBuffer对象,最后new byte[buffer.remaining()]即可得到原始图像的byte[]。别忘了CaptureReqBuilder.addTarget(ImageReader.getSurface()); 否则看不到效果 | 否 |
Camera图像预览尺寸大小设置 | Camera.Parameters.setPreviewSize(width, height) | TextureView. getSurfaceTexture()拿到SurfaceTexture()对象,再通过setDefaultBufferSize(width, height)进行设置。 | 否 |
将来获取到的图片的大小设置 | Camera.Parameters.setPictureSize(width, height); | ImageReader.newInstance(width, height,ImageFormat.YUV_420_888, MAX_IMAGES); | 否 |
将来获取到的图片的格式设置 | Camera.Parameters..setPictureFormat(ImageFormat.JPEG); |
ImageReader.newInstance(width, height,ImageFormat.YUV_420_888, MAX_IMAGES);
来源: http://blog.csdn.net/qq_21898059/article/details/52047598
|
1. Camera2是通过系统服务拿到CameraManager来管理camera设备对象,camera的一次预览、拍照都是向请求会话(CaptureSession.StateCallback,摄像头打开时由相机设备的输出surface组成)发送一次请求(CaptureRequest.Builder)。需要在它的回调onConfigured中进行处理,例如预览,如果不在此方法中写上CameraCaptureSession.setRepeatingRequest(mCaptureReqBuilder.build(), null, mHandler);那么预览就不会成功。
2. 此外,在创建会话,设置ImageReader监听,都需要传递一个Handler对象,这个Handler对象决定着这些会话、监听的回调方法会被在哪个线程中调用,如果传递的是NULL,那么回调会调用在当前线程。
闪关灯的控制方式
API并没有详细说明。
我测试了Parameters.FLASH_MODE_TORCH 和FLASH_MODE_ON:
Parameters.FLASH_MODE_TORCH : 闪光灯常开
Parameters.FLASH_MODE_ON : 拍照时闪光灯才打开
但是根据API文档的说明,需要注意的问题大概如下:
1. 只有当android.flash.info.available = = true 时这种控制闪光灯才有效。
2. 会被自动曝光模式(CONTROL_AE_MODE)中的设置给覆盖。
我测试了几项:
a) CONTROL_AE_MODE设置为OFF、ON_AUTO_FLASH、ON_AUTO_FLASH_REDEYE、ON_ALWAYS_FLASH时,上述闪光灯控制方式不能打开。
b) CONTROL_AE_MODE设置为ON或者不设置时,上述闪光灯控制方式能打开。
Camera1.0和Camear2.0的区别相关推荐
- 127.0.0.1和0.0.0.0和localhost的区别
127.0.0.1和0.0.0.0和localhost的区别 127.0.0.1 172.0.0.1是本地还回地址,专供自己访问自己,速度快(不用经过整个协议栈),永远都不能出现在主机外部的网络中,所 ...
- http与https的区别,http 1.0与1.1的区别
Http与Https的区别: HTTP 的URL 以http:// 开头,而HTTPS 的URL 以https:// 开头 HTTP 是不安全的,而 HTTPS 是安全的 HTTP 标准端口是80 , ...
- 计算机usb接口充电效率差,usb2.0和3.0的区别 从传输速度和充电效率等来区别
在选择电脑主板的时候,一般都会看一下主板的USB接口是2.0还是3.0.很多人都知道3.0应该比2.0要好,那么具体好在哪里,usb2.0和usb3.0的区别有哪些?下面将从传输速度.充电效率和接线接 ...
- VC++6.0和VC++2010的区别
VC6.0和VS2010最大的区别在于默认的字符集,VC6.0默认的字符集为ANSI,而VS2010默认的字符集为UNICODE. 这就造成了,VC6和VS2010在处理字符问题上的不同. 首 ...
- 使用 okHttp 3.0 版本前后的两点区别.(不要入坑哦)
OkHttp 优点: OkHttp会从很多常用的连接问题中自动恢复.如果您的服务器配置了多个IP地址,当第一个IP连接失败的时候,会自动尝试下一个IP.OkHttp还处理了代理服务器问题和SSL握手失 ...
- 浅谈JQuery中$('.classname').get(0); $('.classname').eq(0); $('.classname')[0]三者的区别
举例浅谈JQuery中$('.classname').get(0); $('.classname').eq(0); $('.classname')[0]三者的区别 demo Dom结构: <di ...
- 硬件知识:USB3.0和USB2.0的区别,看完你就懂了!
1.USB的概念介绍 USB是计算机公司和通信公司在1994年联合制定的新一代接口标准,全称为通用串行总线 (Universal Serial Bus,USB) .USB 总线作为一种高速串行总线,其 ...
- vue2.0 $router和$route的区别
转载自 vue2.0 $router和$route的区别 在vue2.0里页面参数是 this.$route.query或者 this.$route.params 接收router-link传的参数 ...
- 【飞秋】WF3.0和4.0区别介绍
最近要研究下WF4.0的相关内容,将自己认识的.理解的写下来与大家共勉,有兴趣的朋友可以一起探讨一下. 相对于之前的3.0.3.5中的WorkFlow来说,4.0进行了很大的变动,包括流程设计工具.支 ...
最新文章
- R语言使用R原生函数plot和lines可视化线图、并使用lty参数自定义线条类型、lwd自定义设置线条的粗细、col参数自定义线条颜色(Change R base plot line types)
- Android No static field XXX of type I in class Lcom/XXX/R$id错
- dede织梦背景经常使用标签
- 用户注册 - 判断用户名存在
- java堆内存 数据结构_JAVA内存区域
- elasticsearch体验(一.初识elasticsearch)
- 图像匹配,基于深度学习DenseNet实现以图搜图功能
- 义务劳动: CISA的翻译
- 计算机术语翻译的最烂,我国计算机名词的翻译现状和建议
- ssm框架中mysql的分页_SSM框架中mapper层,增删改查,如何实现
- 基于OptiSystem的高速远距离光纤通信系统研究
- 拉线自动行走机器人_架空输电线路自动巡线机器人
- LeetCode常见题型——背包问题
- mars java创业_Mars-java
- 事件委托(事件代理)
- 基于单片机的负离子空气净化系统设计
- ORA-1555,oracle读一致性
- python之简单的文件处理
- WMS系统(一)成品出库
- 嵌入式计算机系统简述,嵌入式系统简述