摄像头(5)使用Camera2 替代过时的Camera API
转自: http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0428/2811.html
1.概要
从5.0开始(API Level 21),可以完全控制安卓设备相机的新api Camera2(android.hardware.Camera2)被引入了进来。在以前的Camera api(android.hardware.Camera)中,对相机的手动控制需要更改系统才能实现,而且api也不友好。不过老的Camera API在5.0上已经过时,在未来的app开发中推荐的是Camera2 API。
2.L版本之前的Camera API
有限的图片数据流获取方式
有限相机状态信息
没有手动捕获控制
2.Camera2 API 新特性
| 支持30fps的全高清连拍 | Supports 30fps full resolution with burst mode |
| 支持帧之间的手动设置 | Supports change on manual camera settings between frame capture |
| 支持RAW格式的图片拍摄 | Supports RAW image capture |
| 支持快门0延迟以及电影速拍 | Supports Zero Shutter Lag & Movie Snapshot |
| 支持相机其他方面的手动控制包括噪音消除的级别 | Supports setting other manual camera device controls including level of Noise Cancelling |
4.Resolution
相机的基本使用被分成了5个主要部分()(CameraManager,CameraDevice,CameraCaptureSession,CaptureRequest,CaptureResult)
| CameraManager | 提供构建,列出以及链接相机设备的接口 http://developer.android.com/reference/android/hardware/camera2/CameraManager.html |
| CameraDevice | 代表和安卓设备相连的单个相机 http://developer.android.com/reference/android/hardware/camera2/CameraDevice.html |
| CameraCaptureSession | 提供一套输出目标的surface(TextureView,MediaRecorder,MediaCodec,ImageReader,RenderScriptAllocation)。 http://developer.android.com/reference/android/hardware/camera2/CameraCaptureSession.html |
| CaptureRequest |
Settings and outputs needed to capture a single image from the camera device TEMPLATE_STILL_CAPTURE, TEMPLATE_VIDEO_SNAPSHOT, TEMPLATE_MANUAL) |
| CaptureResult |
从图像传感器获得的单个图片拍摄的结果。 更详细的内容,需要通读Camera2包的概要介绍页 还有一个YouTube上的谷歌开发者的介绍视频,解释了Camera2 API的改动:DevBytes:Android L开发者预览之- Camera2 API |
5.检查那些特性可用
在安卓设备上,Camera2 API的所有特性并不都总是可用。取决于设备本身。为了检查那些特性可用,可以使用CameraCharacteristics来获得支持情况。
characteristics.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL);
返回的结果分为级别的相机功能,按照 全支持> 有限支持> 看心情赠送的顺序排列:
INFO_SUPPORTED_HARDWARE_LEVEL_FULL
全方位的硬件支持,允许手动控制全高清的摄像。如果返回的是这个,连拍模式以及其他新特性都是可用的。
https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#INFO_SUPPORTED_HARDWARE_LEVEL
INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED
一个“有限支持”的设备可能有一些或者没有“全支持”设备的特性。有些特性可能不属于任何硬件级别,需要单独查询。
https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#INFO_SUPPORTED_HARDWARE_LEVEL
INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY
所有的设备都会有的特性。这和过时的Camera API所支持的特新是一样的。
虽然推荐在未来的app中使用Camera2 API,但是只有Lollipop的设备商才可用,也不大可能会出现兼容老设备的包。因此在最小版本(minSdkVersion)升到21之前,你还是需要继续使用Camera API(android.hardware.Camera)。
不过你可以用下面的代码对不同的版本区别对待:
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
// your code using Camera API here - is between 1-20
} else if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
// your code using Camera2 API here - is api 21 or higher
}
6.实例程序
最后,在网上发现几个使用Camera API2开发的实例程序,总结一下方便后续参考:
1.Camera2 Basic : https://github.com/googlesamples/android-Camera2Basic
演示如何使用Camera2 API基本功能的demo。你可以从中学会如何遍历相机设备的所有特性,显示预览照片,以及拍照。
2.Camera2 Video:https://github.com/googlesamples/android-Camera2Video
这个demo演示如何使用Camera2 API录制视频。
3.Camera2 master: http://www.eyesourcecode.com/thread-35378-1-1.html
使用Android L Camera2 API开发的示例应用程序,具备拍照,AWB,Flash,连拍功能
4.LCamerahttp://www.eyesourcecode.com/thread-35377-1-1.html
L Camera是一个开源的实验性质的Camera应用程序,基于Android L提供的新API android.hardware.camera2,目前只支持在Andorid 5.0 Lollipop版本的Nexus 5和Nexus 6上运行
摄像头(5)使用Camera2 替代过时的Camera API的更多相关文章
- Android Camera API/Camera2 API 相机预览及滤镜、贴纸等处理
Android Lollipop 添加了Camera2 API,并将原来的Camera API标记为废弃了.相对原来的Camera API来说.Camera2是又一次定义的相机 API,也重构了相机 ...
- Android 新老两代 Camera API 大起底
https://blog.csdn.net/Byeweiyang/article/details/80515192 0.背景简介 最近有一部分相机相关的需求,专注于对拍摄的照片.视频的噪点.色温.明暗 ...
- Android 音视频开发(四):使用 Camera API 采集视频数据
本文主要将的是:使用 Camera API 采集视频数据并保存到文件,分别使用 SurfaceView.TextureView 来预览 Camera 数据,取到 NV21 的数据回调. 注: 需要权限 ...
- 使用Camera API https://developer.mozilla.org/zh-CN/docs/Web/Guide/API/Camera
使用Camera API 在本文章中 获取到所拍摄照片的引用 在网页中展示图片 完整的示例代码 HTML页面: JavaScript文件: 浏览器兼容性 通过Camera API,你可以使用手机的摄像 ...
- Using the Cordova Camera API
使用ionic开发一款android或ios应用,估计少不了使用到Camera API,这里记录下使用过程. 创建空的ionic应用 ionic start myTabs tabs 通过cd demo ...
- Android Camera Api的心得
(一) 前言最近看Camera的api,觉得写的真的不错.现在翻译过来,给大家分享分享,译文可能不太好,大家将就着看哈. (二) 正文1. CameraCamera是Android framework ...
- Android Camera API ISO Setting
https://stackoverflow.com/questions/2978095/android-camera-api-iso-setting exif this.mCameraParamete ...
- Android QRCodeReaderView 和Camera API冲突
开发一款小功能,核心功能是二维码扫描,然后发送到远端服务器.App结构分为两个Activity,Activity A 负责二维码扫描,然后将参数存到本地,再启动Activity B,在Activity ...
- Android Multimedia框架总结(十四)Camera框架初识及自定义相机案例
转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52738492 前言:国庆节告一段 ...
随机推荐
- 一.Nginx的特性和一些知识点
一.Nginx的特性和一些知识点 1.基本功能服务器 处理静态文件(静态资源的web),支持 反向代理服务器,支持缓存.负载均衡.支持FastCGI 模块化机制,非DOS机制,支持 ...
- checkbox批量选中,获取选中的项的值
<!doctype html><html lang="en"> <head> <meta charset="UTF-8&quo ...
- CSS3 弹性盒布局模型(转)
简介 引入弹性盒布局模型的目的是提供一种更加有效的方式来对一个容器中的条目进行排列. 对齐和分配空白空间.即便容器中条目的尺寸未知或是动态变化的,弹性盒布局模型也能正常的工作.在该布局模型中,容器会根 ...
- Uploadify 3.2 not work in IE10
uploadify版本:Uploadify Version 3.2.1 現象:在IE10下uploadify上傳按鈕點擊失效 解決方案:替換uploadify下的js引用包 替換文件下載地址: 下载地 ...
- 解决FPDF报错:FPDF error: Not a JPEG file / FPDF error: Not a PNG file
最近有个项目需要用到FPDF,但是输出的时候报错: FPDF error: Not a JPEG file: http://***/data/attachment/forum/201603/19/10 ...
- NVIDIA显卡设置提升MineCraft流畅度
很喜欢MineCraft(我的世界)这款游戏.可09年Y450的配置现在看来有点弱,尽管将Y450的CPU升级至了2.8Ghz的T9600,内存升级至1066Mhz的4G双通道内存,硬盘更换为128G ...
- ACM俱乐部 字符串
数制转换分数: 2 时间限制:1 秒 内存限制:32 兆 特殊判题: 否 提交:59 解决: 24 标签 进制转换 题目描述 求任意两个不同进制非负整数的转换(2进制-16进制),所给整数在long所 ...
- Thinkcmf 在新浪云上的部署问题
最近要开发一个社团主页,于是想到了CMF内容管理系统的,但是直接在自己的服务器测试成本太高,于是选择了在新浪云上进行部署测试. 但是在安装Thinkcmf的过程中产生了一些技术性的问题.但最后终于在自 ...
- Mysql编辑工具中使用(Navicat查询结果显示行号)
Mysql编辑工具中使用(Navicat查询结果显示行号) as rownum,a.roleId ) t where a.roleId='admin';
- easyui 多行文本框 Multiline TextBox
<input class="easyui-textbox" data-options="multiline:true" value="This ...