迟来的Android的Camera开发总结
这是好久前写的项目,但一直没有去总结。刚好在准备找工作这段时间来总结自己做过的东西,学到的东西。
写Android的自定义的相机应用时,首先要知道一些Camera开发必须知道的尺寸,不然在调试的时候,真的是会崩溃的。写自定义的Camera项目,一定要知道三个尺寸:
SufaceView尺寸,SufaceView是用来预览摄像头捕捉到的画面的,当它全屏时就是手机屏幕的大小;Picturessize尺寸,Picturessize就是拍照后得到的照片的尺寸;Previewsize尺寸,这是预览时帧数据的尺寸;
这三个尺寸的比例不一致会导致出现三种画面的变形:
- 预览画面的物体的长宽比例失真;这是由于SufaceView与Previewsize的长宽比例不一致导致的,因为摄像头在显示时会将预览帧数据缩放为SufaceView的大小,因此这两者的长宽比例不一致会导致预览的物体失真;
- 拍照后,得到的照片里的物体变形失真;
- 在点击拍照按钮的瞬间,预览画面突然变形,然后又恢复到正常的情况;
第2种和第3种变形都是由于Picturessize和Previewsize的长宽比例不一致导致的,因此,为了保证通过自定义的相机得到的照片不失真变形,我们只要保证这三个尺寸的长宽比例一致;
在Camera开发的过程中,遇到要将两个SufaceView重叠放在一起的情况,一个SurfaceView用来预览画面,另外一个用来预览拍照后得到的照片,这时就会遇到上层的SufaceView被下层的SurfaceView遮挡的情况,这个时候就需要使用setZOrderonTop(true)或者setZOrderMediaOverlay(true)来控制SurfaceView的显示层次。
setZOrderonTop(boolean)控制这个SurfaceView是否放在窗口顶层。通常为了使它与绘图树整合,它会放在窗口之后。而通过这个函数可以使它放在窗口顶层,这意味着它所在窗口的其他内容变成不可见(可以设置SurfaceView透明来使其他内容可见)。这个函数必须在窗口添加到窗口管理器之前调用,调用这个函数会使之前调用的setZOrderMediaOverlay(boolean)无效。setZOrderMediaOverlay(boolean)控制这个SurfaceView是否放在另一个普通的SurfaceView上面(仍然在窗口之上),通常用来覆盖在一个多媒体层上面。
迟来的Android的Camera开发总结的更多相关文章
- Android Camera开发系列(下)——自定义Camera实现拍照查看图片等功能
Android Camera开发系列(下)--自定义Camera实现拍照查看图片等功能 Android Camera开发系列(上)--Camera的基本调用与实现拍照功能以及获取拍照图片加载大图片 上 ...
- Android Camera开发系列(上)——Camera的基本调用与实现拍照功能以及获取拍照图片加载大图片
Android Camera开发系列(上)--Camera的基本调用与实现拍照功能以及获取拍照图片加载大图片 最近也是在搞个破相机,兼容性那叫一个不忍直视啊,于是自己翻阅了一些基本的资料,自己实现了一 ...
- Android 音视频开发(四):使用 Camera API 采集视频数据
本文主要将的是:使用 Camera API 采集视频数据并保存到文件,分别使用 SurfaceView.TextureView 来预览 Camera 数据,取到 NV21 的数据回调. 注: 需要权限 ...
- Android Camera开发:周期性循环自动聚焦auto focus挂掉原因分析(preview is not enabled)
参考:Android Camera开发:扫描二维码,周期性循环自动聚焦auto focus挂掉原因分析(preview is not enabled) 最近做Android人脸识别时,camera在自 ...
- 浅析Android Camera开发中的三个尺寸和三种变形 (贡献一个自适配Picturesize和Previewsize的工具类)
转至 (http://blog.csdn.net/yanzi1225627/article/details/17652643) 经常听人问Camera开发中,各种变形问题,今天有空就在此梳理总结下. ...
- 玩转Android Camera开发(一):Surfaceview预览Camera,基础拍照功能完整demo
杂家前文是在2012年的除夕之夜仓促完成,后来很多人指出了一些问题,琐事缠身一直没有进行升级.后来随着我自己的使用,越来越发现不出个升级版的demo是不行了.有时候就连我自己用这个demo测一些性能. ...
- Android Camera开发:给摄像头预览界面加个ZoomBar(附完整代码下载)
源码:http://files.cnblogs.com/android100/StandardCamera2013-10-18.zip 废话不说了,就是加个seekbar,拖动的话能够调节焦距,让画面 ...
- android平台手电筒开发源代码
android平台手电筒开发源代码,AndroidManifest.xml文件的入口是startapp,这个文件没上传上来,大家可以自己写. 1. [代码]android 1 2 3 4 5 6 7 ...
- android之相机开发
http://blog.csdn.net/jason0539/article/details/10125017 android之相机开发 分类: android 基础知识2013-08-20 22: ...
随机推荐
- 【原】webpack结合gulp打包
在我前面的文章中,总结了一下自己学习webpack和gulp的一些东西.然而,在我的实际项目中,单独使用它们两者不能满足项目的需求.我遇到了下面的一些问题. 问题1: 因为我的图片需要放单cdn上面去 ...
- Photoshop 融合属性 Unity Shader
http://forum.unity3d.com/threads/free-photoshop-blends.121661/
- ecshop新增一个编辑器
在ecshop的后台新增一个编辑器框 步骤一:找到lib_main.php 文件:admin/includes/lib_main.php. 找到变量:function create_html_edit ...
- Only one statement is allowed per batch. A batch separator, such as 'GO', might be required between statements.
When I added the file in VS I forgot to set Build Action = None from the file properties.
- 单元测试写cookie
我们在开发WEB项目的时候,一般应用逻辑跟ASPX页面是分离的项目.应用逻辑一般会是一个DLL组件项目.如果这个组件项目中A方法使用了Session.Cookie等信息的读写,则这个方法就很难写单元测 ...
- Effective Objective-C 2.0 — 第七条:在对象内部尽量直接访问实例变量
直接访问实例变量,不经过”方法派发“(method dispatch) 速度快. 直接访问实例变量,不会调用其“设置方法”,这就绕过了为相关属性所定义的“内存管理语义”. 直接访问实例变量,不会触发“ ...
- Yii2.0 GridView 新增添加按钮
<?= GridView::widget([ 'dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'col ...
- ActionScript学习笔记
ActionScript学习笔记 ActionScript中预定义的数据类型:Boolean.int.Number.String.uint 其中,int.Number.uint是处理数字的.int用来 ...
- mysql 分页性能优化
最简单的分页方法是这样的 , 该表中存在5w左右数据 执行时间平均在10s左右,因此该种方式在数据量大的情况下查询效率极低. 优化方式有以下几种 1.此种方式平均在7-8s之间(CreateDate ...
- embed 层级太高
它怎么就好了,凭什么就好了.为什么就好了.我到底当时是哪里写错了.怎么个情况 兼容Firefox ,IE的flash透明和flash置底代码 <object classid="clsi ...